~ubuntu-branches/ubuntu/trusty/qemu/trusty

« back to all changes in this revision

Viewing changes to .pc/ubuntu/arm64/0027-target-arm-Support-fp-registers-in-gdb-stub.patch/configure

  • Committer: Package Import Robot
  • Author(s): Serge Hallyn
  • Date: 2014-02-04 12:13:08 UTC
  • mfrom: (10.1.45 sid)
  • Revision ID: package-import@ubuntu.com-20140204121308-1xq92lrfs75agw2g
Tags: 1.7.0+dfsg-3ubuntu1~ppa1
* Merge 1.7.0+dfsg-3 from debian.  Remaining changes:
  - debian/patches/ubuntu:
    * expose-vmx_qemu64cpu.patch
    * linaro (omap3) and arm64 patches
    * ubuntu/target-ppc-add-stubs-for-kvm-breakpoints: fix FTBFS
      on ppc
    * ubuntu/CVE-2013-4377.patch: fix denial of service via virtio
  - debian/qemu-system-x86.modprobe: set kvm_intel nested=1 options
  - debian/control:
    * add arm64 to Architectures
    * add qemu-common and qemu-system-aarch64 packages
  - debian/qemu-system-common.install: add debian/tmp/usr/lib
  - debian/qemu-system-common.preinst: add kvm group
  - debian/qemu-system-common.postinst: remove acl placed by udev,
    and add udevadm trigger.
  - qemu-system-x86.links: add eepro100.rom, remove pxe-virtio,
    pxe-e1000 and pxe-rtl8139.
  - add qemu-system-x86.qemu-kvm.upstart and .default
  - qemu-user-static.postinst-in: remove arm64 binfmt
  - debian/rules:
    * allow parallel build
    * add aarch64 to system_targets and sys_systems
    * add qemu-kvm-spice links
    * install qemu-system-x86.modprobe
  - add debian/qemu-system-common.links for OVMF.fd link
* Remove kvm-img, kvm-nbd, kvm-ifup and kvm-ifdown symlinks.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
#
 
3
# qemu configure script (c) 2003 Fabrice Bellard
 
4
#
 
5
# set temporary file name
 
6
if test ! -z "$TMPDIR" ; then
 
7
    TMPDIR1="${TMPDIR}"
 
8
elif test ! -z "$TEMPDIR" ; then
 
9
    TMPDIR1="${TEMPDIR}"
 
10
else
 
11
    TMPDIR1="/tmp"
 
12
fi
 
13
 
 
14
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
 
15
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
 
16
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe"
 
17
 
 
18
# NB: do not call "exit" in the trap handler; this is buggy with some shells;
 
19
# see <1285349658-3122-1-git-send-email-loic.minier@linaro.org>
 
20
trap "rm -f $TMPC $TMPO $TMPE" EXIT INT QUIT TERM
 
21
rm -f config.log
 
22
 
 
23
# Print a helpful header at the top of config.log
 
24
echo "# QEMU configure log $(date)" >> config.log
 
25
printf "# Configured with:" >> config.log
 
26
printf " '%s'" "$0" "$@" >> config.log
 
27
echo >> config.log
 
28
echo "#" >> config.log
 
29
 
 
30
# Save the configure command line for later reuse.
 
31
cat <<EOD >config.status
 
32
#!/bin/sh
 
33
# Generated by configure.
 
34
# Run this file to recreate the current configuration.
 
35
# Compiler output produced by configure, useful for debugging
 
36
# configure, is in config.log if it exists.
 
37
EOD
 
38
printf "exec" >>config.status
 
39
printf " '%s'" "$0" "$@" >>config.status
 
40
echo >>config.status
 
41
chmod +x config.status
 
42
 
 
43
error_exit() {
 
44
    echo
 
45
    echo "ERROR: $1"
 
46
    while test -n "$2"; do
 
47
        echo "       $2"
 
48
        shift
 
49
    done
 
50
    echo
 
51
    exit 1
 
52
}
 
53
 
 
54
do_cc() {
 
55
    # Run the compiler, capturing its output to the log.
 
56
    echo $cc "$@" >> config.log
 
57
    $cc "$@" >> config.log 2>&1 || return $?
 
58
    # Test passed. If this is an --enable-werror build, rerun
 
59
    # the test with -Werror and bail out if it fails. This
 
60
    # makes warning-generating-errors in configure test code
 
61
    # obvious to developers.
 
62
    if test "$werror" != "yes"; then
 
63
        return 0
 
64
    fi
 
65
    # Don't bother rerunning the compile if we were already using -Werror
 
66
    case "$*" in
 
67
        *-Werror*)
 
68
           return 0
 
69
        ;;
 
70
    esac
 
71
    echo $cc -Werror "$@" >> config.log
 
72
    $cc -Werror "$@" >> config.log 2>&1 && return $?
 
73
    error_exit "configure test passed without -Werror but failed with -Werror." \
 
74
        "This is probably a bug in the configure script. The failing command" \
 
75
        "will be at the bottom of config.log." \
 
76
        "You can run configure with --disable-werror to bypass this check."
 
77
}
 
78
 
 
79
compile_object() {
 
80
  do_cc $QEMU_CFLAGS -c -o $TMPO $TMPC
 
81
}
 
82
 
 
83
compile_prog() {
 
84
  local_cflags="$1"
 
85
  local_ldflags="$2"
 
86
  do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
 
87
}
 
88
 
 
89
# symbolically link $1 to $2.  Portable version of "ln -sf".
 
90
symlink() {
 
91
  rm -rf "$2"
 
92
  mkdir -p "$(dirname "$2")"
 
93
  ln -s "$1" "$2"
 
94
}
 
95
 
 
96
# check whether a command is available to this shell (may be either an
 
97
# executable or a builtin)
 
98
has() {
 
99
    type "$1" >/dev/null 2>&1
 
100
}
 
101
 
 
102
# search for an executable in PATH
 
103
path_of() {
 
104
    local_command="$1"
 
105
    local_ifs="$IFS"
 
106
    local_dir=""
 
107
 
 
108
    # pathname has a dir component?
 
109
    if [ "${local_command#*/}" != "$local_command" ]; then
 
110
        if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
 
111
            echo "$local_command"
 
112
            return 0
 
113
        fi
 
114
    fi
 
115
    if [ -z "$local_command" ]; then
 
116
        return 1
 
117
    fi
 
118
 
 
119
    IFS=:
 
120
    for local_dir in $PATH; do
 
121
        if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
 
122
            echo "$local_dir/$local_command"
 
123
            IFS="${local_ifs:-$(printf ' \t\n')}"
 
124
            return 0
 
125
        fi
 
126
    done
 
127
    # not found
 
128
    IFS="${local_ifs:-$(printf ' \t\n')}"
 
129
    return 1
 
130
}
 
131
 
 
132
# default parameters
 
133
source_path=`dirname "$0"`
 
134
cpu=""
 
135
iasl="iasl"
 
136
interp_prefix="/usr/gnemul/qemu-%M"
 
137
static="no"
 
138
cross_prefix=""
 
139
audio_drv_list=""
 
140
block_drv_rw_whitelist=""
 
141
block_drv_ro_whitelist=""
 
142
host_cc="cc"
 
143
libs_softmmu=""
 
144
libs_tools=""
 
145
audio_pt_int=""
 
146
audio_win_int=""
 
147
cc_i386=i386-pc-linux-gnu-gcc
 
148
libs_qga=""
 
149
debug_info="yes"
 
150
 
 
151
# Don't accept a target_list environment variable.
 
152
unset target_list
 
153
 
 
154
# Default value for a variable defining feature "foo".
 
155
#  * foo="no"  feature will only be used if --enable-foo arg is given
 
156
#  * foo=""    feature will be searched for, and if found, will be used
 
157
#              unless --disable-foo is given
 
158
#  * foo="yes" this value will only be set by --enable-foo flag.
 
159
#              feature will searched for,
 
160
#              if not found, configure exits with error
 
161
#
 
162
# Always add --enable-foo and --disable-foo command line args.
 
163
# Distributions want to ensure that several features are compiled in, and it
 
164
# is impossible without a --enable-foo that exits if a feature is not found.
 
165
 
 
166
bluez=""
 
167
brlapi=""
 
168
curl=""
 
169
curses=""
 
170
docs=""
 
171
fdt=""
 
172
pixman=""
 
173
sdl=""
 
174
virtfs=""
 
175
vnc="yes"
 
176
sparse="no"
 
177
uuid=""
 
178
vde=""
 
179
vnc_tls=""
 
180
vnc_sasl=""
 
181
vnc_jpeg=""
 
182
vnc_png=""
 
183
vnc_ws=""
 
184
xen=""
 
185
xen_ctrl_version=""
 
186
xen_pci_passthrough=""
 
187
linux_aio=""
 
188
cap_ng=""
 
189
attr=""
 
190
libattr=""
 
191
xfs=""
 
192
 
 
193
vhost_net="no"
 
194
vhost_scsi="no"
 
195
kvm="no"
 
196
rdma=""
 
197
gprof="no"
 
198
debug_tcg="no"
 
199
debug="no"
 
200
strip_opt="yes"
 
201
tcg_interpreter="no"
 
202
bigendian="no"
 
203
mingw32="no"
 
204
gcov="no"
 
205
gcov_tool="gcov"
 
206
EXESUF=""
 
207
prefix="/usr/local"
 
208
mandir="\${prefix}/share/man"
 
209
datadir="\${prefix}/share"
 
210
qemu_docdir="\${prefix}/share/doc/qemu"
 
211
bindir="\${prefix}/bin"
 
212
libdir="\${prefix}/lib"
 
213
libexecdir="\${prefix}/libexec"
 
214
includedir="\${prefix}/include"
 
215
sysconfdir="\${prefix}/etc"
 
216
local_statedir="\${prefix}/var"
 
217
confsuffix="/qemu"
 
218
slirp="yes"
 
219
fmod_lib=""
 
220
fmod_inc=""
 
221
oss_lib=""
 
222
bsd="no"
 
223
linux="no"
 
224
solaris="no"
 
225
profiler="no"
 
226
cocoa="no"
 
227
softmmu="yes"
 
228
linux_user="no"
 
229
bsd_user="no"
 
230
guest_base="yes"
 
231
uname_release=""
 
232
aix="no"
 
233
blobs="yes"
 
234
pkgversion=""
 
235
pie=""
 
236
zero_malloc=""
 
237
qom_cast_debug="yes"
 
238
trace_backend="nop"
 
239
trace_file="trace"
 
240
spice=""
 
241
rbd=""
 
242
smartcard_nss=""
 
243
libusb=""
 
244
usb_redir=""
 
245
glx=""
 
246
zlib="yes"
 
247
guest_agent=""
 
248
guest_agent_with_vss="no"
 
249
vss_win32_sdk=""
 
250
win_sdk="no"
 
251
want_tools="yes"
 
252
libiscsi=""
 
253
coroutine=""
 
254
coroutine_pool=""
 
255
seccomp=""
 
256
glusterfs=""
 
257
glusterfs_discard="no"
 
258
virtio_blk_data_plane=""
 
259
gtk=""
 
260
gtkabi="2.0"
 
261
tpm="no"
 
262
libssh2=""
 
263
vhdx=""
 
264
 
 
265
# parse CC options first
 
266
for opt do
 
267
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
 
268
  case "$opt" in
 
269
  --cross-prefix=*) cross_prefix="$optarg"
 
270
  ;;
 
271
  --cc=*) CC="$optarg"
 
272
  ;;
 
273
  --cxx=*) CXX="$optarg"
 
274
  ;;
 
275
  --source-path=*) source_path="$optarg"
 
276
  ;;
 
277
  --cpu=*) cpu="$optarg"
 
278
  ;;
 
279
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
 
280
                    EXTRA_CFLAGS="$optarg"
 
281
  ;;
 
282
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
 
283
                     EXTRA_LDFLAGS="$optarg"
 
284
  ;;
 
285
  --enable-debug-info) debug_info="yes"
 
286
  ;;
 
287
  --disable-debug-info) debug_info="no"
 
288
  ;;
 
289
  esac
 
290
done
 
291
# OS specific
 
292
# Using uname is really, really broken.  Once we have the right set of checks
 
293
# we can eliminate its usage altogether.
 
294
 
 
295
# Preferred compiler:
 
296
#  ${CC} (if set)
 
297
#  ${cross_prefix}gcc (if cross-prefix specified)
 
298
#  system compiler
 
299
if test -z "${CC}${cross_prefix}"; then
 
300
  cc="$host_cc"
 
301
else
 
302
  cc="${CC-${cross_prefix}gcc}"
 
303
fi
 
304
 
 
305
if test -z "${CXX}${cross_prefix}"; then
 
306
  cxx="c++"
 
307
else
 
308
  cxx="${CXX-${cross_prefix}g++}"
 
309
fi
 
310
 
 
311
ar="${AR-${cross_prefix}ar}"
 
312
as="${AS-${cross_prefix}as}"
 
313
cpp="${CPP-$cc -E}"
 
314
objcopy="${OBJCOPY-${cross_prefix}objcopy}"
 
315
ld="${LD-${cross_prefix}ld}"
 
316
libtool="${LIBTOOL-${cross_prefix}libtool}"
 
317
strip="${STRIP-${cross_prefix}strip}"
 
318
windres="${WINDRES-${cross_prefix}windres}"
 
319
pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
 
320
query_pkg_config() {
 
321
    "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
 
322
}
 
323
pkg_config=query_pkg_config
 
324
sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
 
325
 
 
326
# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
 
327
ARFLAGS="${ARFLAGS-rv}"
 
328
 
 
329
# default flags for all hosts
 
330
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
 
331
QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
 
332
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
 
333
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
 
334
QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
 
335
if test "$debug_info" = "yes"; then
 
336
    CFLAGS="-g $CFLAGS"
 
337
    LDFLAGS="-g $LDFLAGS"
 
338
fi
 
339
 
 
340
# make source path absolute
 
341
source_path=`cd "$source_path"; pwd`
 
342
 
 
343
check_define() {
 
344
cat > $TMPC <<EOF
 
345
#if !defined($1)
 
346
#error $1 not defined
 
347
#endif
 
348
int main(void) { return 0; }
 
349
EOF
 
350
  compile_object
 
351
}
 
352
 
 
353
if check_define __linux__ ; then
 
354
  targetos="Linux"
 
355
elif check_define _WIN32 ; then
 
356
  targetos='MINGW32'
 
357
elif check_define __OpenBSD__ ; then
 
358
  targetos='OpenBSD'
 
359
elif check_define __sun__ ; then
 
360
  targetos='SunOS'
 
361
elif check_define __HAIKU__ ; then
 
362
  targetos='Haiku'
 
363
else
 
364
  targetos=`uname -s`
 
365
fi
 
366
 
 
367
# Some host OSes need non-standard checks for which CPU to use.
 
368
# Note that these checks are broken for cross-compilation: if you're
 
369
# cross-compiling to one of these OSes then you'll need to specify
 
370
# the correct CPU with the --cpu option.
 
371
case $targetos in
 
372
Darwin)
 
373
  # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
 
374
  # run 64-bit userspace code.
 
375
  # If the user didn't specify a CPU explicitly and the kernel says this is
 
376
  # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
 
377
  if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
 
378
    cpu="x86_64"
 
379
  fi
 
380
  ;;
 
381
SunOS)
 
382
  # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
 
383
  if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
 
384
    cpu="x86_64"
 
385
  fi
 
386
esac
 
387
 
 
388
if test ! -z "$cpu" ; then
 
389
  # command line argument
 
390
  :
 
391
elif check_define __i386__ ; then
 
392
  cpu="i386"
 
393
elif check_define __x86_64__ ; then
 
394
  if check_define __ILP32__ ; then
 
395
    cpu="x32"
 
396
  else
 
397
    cpu="x86_64"
 
398
  fi
 
399
elif check_define __sparc__ ; then
 
400
  if check_define __arch64__ ; then
 
401
    cpu="sparc64"
 
402
  else
 
403
    cpu="sparc"
 
404
  fi
 
405
elif check_define _ARCH_PPC ; then
 
406
  if check_define _ARCH_PPC64 ; then
 
407
    cpu="ppc64"
 
408
  else
 
409
    cpu="ppc"
 
410
  fi
 
411
elif check_define __mips__ ; then
 
412
  cpu="mips"
 
413
elif check_define __ia64__ ; then
 
414
  cpu="ia64"
 
415
elif check_define __s390__ ; then
 
416
  if check_define __s390x__ ; then
 
417
    cpu="s390x"
 
418
  else
 
419
    cpu="s390"
 
420
  fi
 
421
elif check_define __arm__ ; then
 
422
  cpu="arm"
 
423
elif check_define __aarch64__ ; then
 
424
  cpu="aarch64"
 
425
elif check_define __hppa__ ; then
 
426
  cpu="hppa"
 
427
else
 
428
  cpu=`uname -m`
 
429
fi
 
430
 
 
431
ARCH=
 
432
# Normalise host CPU name and set ARCH.
 
433
# Note that this case should only have supported host CPUs, not guests.
 
434
case "$cpu" in
 
435
  ia64|ppc|ppc64|s390|s390x|sparc64|x32)
 
436
    cpu="$cpu"
 
437
  ;;
 
438
  i386|i486|i586|i686|i86pc|BePC)
 
439
    cpu="i386"
 
440
  ;;
 
441
  x86_64|amd64)
 
442
    cpu="x86_64"
 
443
  ;;
 
444
  armv*b|armv*l|arm)
 
445
    cpu="arm"
 
446
  ;;
 
447
  aarch64)
 
448
    cpu="aarch64"
 
449
  ;;
 
450
  mips*)
 
451
    cpu="mips"
 
452
  ;;
 
453
  sparc|sun4[cdmuv])
 
454
    cpu="sparc"
 
455
  ;;
 
456
  *)
 
457
    # This will result in either an error or falling back to TCI later
 
458
    ARCH=unknown
 
459
  ;;
 
460
esac
 
461
if test -z "$ARCH"; then
 
462
  ARCH="$cpu"
 
463
fi
 
464
 
 
465
# OS specific
 
466
 
 
467
case $targetos in
 
468
CYGWIN*)
 
469
  mingw32="yes"
 
470
  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
 
471
  audio_possible_drivers="winwave sdl"
 
472
  audio_drv_list="winwave"
 
473
;;
 
474
MINGW32*)
 
475
  mingw32="yes"
 
476
  audio_possible_drivers="winwave dsound sdl fmod"
 
477
  audio_drv_list="winwave"
 
478
;;
 
479
GNU/kFreeBSD)
 
480
  bsd="yes"
 
481
  audio_drv_list="oss"
 
482
  audio_possible_drivers="oss sdl esd pa"
 
483
;;
 
484
FreeBSD)
 
485
  bsd="yes"
 
486
  make="${MAKE-gmake}"
 
487
  audio_drv_list="oss"
 
488
  audio_possible_drivers="oss sdl esd pa"
 
489
  # needed for kinfo_getvmmap(3) in libutil.h
 
490
  LIBS="-lutil $LIBS"
 
491
;;
 
492
DragonFly)
 
493
  bsd="yes"
 
494
  make="${MAKE-gmake}"
 
495
  audio_drv_list="oss"
 
496
  audio_possible_drivers="oss sdl esd pa"
 
497
;;
 
498
NetBSD)
 
499
  bsd="yes"
 
500
  make="${MAKE-gmake}"
 
501
  audio_drv_list="oss"
 
502
  audio_possible_drivers="oss sdl esd"
 
503
  oss_lib="-lossaudio"
 
504
;;
 
505
OpenBSD)
 
506
  bsd="yes"
 
507
  make="${MAKE-gmake}"
 
508
  audio_drv_list="sdl"
 
509
  audio_possible_drivers="sdl esd"
 
510
;;
 
511
Darwin)
 
512
  bsd="yes"
 
513
  darwin="yes"
 
514
  if [ "$cpu" = "x86_64" ] ; then
 
515
    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
 
516
    LDFLAGS="-arch x86_64 $LDFLAGS"
 
517
  else
 
518
    QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
 
519
  fi
 
520
  cocoa="yes"
 
521
  audio_drv_list="coreaudio"
 
522
  audio_possible_drivers="coreaudio sdl fmod"
 
523
  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
 
524
  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
 
525
  # Disable attempts to use ObjectiveC features in os/object.h since they
 
526
  # won't work when we're compiling with gcc as a C compiler.
 
527
  QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
 
528
;;
 
529
SunOS)
 
530
  solaris="yes"
 
531
  make="${MAKE-gmake}"
 
532
  install="${INSTALL-ginstall}"
 
533
  ld="gld"
 
534
  smbd="${SMBD-/usr/sfw/sbin/smbd}"
 
535
  needs_libsunmath="no"
 
536
  solarisrev=`uname -r | cut -f2 -d.`
 
537
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
 
538
    if test "$solarisrev" -le 9 ; then
 
539
      if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
 
540
        needs_libsunmath="yes"
 
541
        QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
 
542
        LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
 
543
        LIBS="-lsunmath $LIBS"
 
544
      else
 
545
        error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
 
546
            "libsunmath from the Sun Studio compilers tools, due to a lack of" \
 
547
            "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
 
548
            "Studio 11 can be downloaded from www.sun.com."
 
549
      fi
 
550
    fi
 
551
  fi
 
552
  if test -f /usr/include/sys/soundcard.h ; then
 
553
    audio_drv_list="oss"
 
554
  fi
 
555
  audio_possible_drivers="oss sdl"
 
556
# needed for CMSG_ macros in sys/socket.h
 
557
  QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
 
558
# needed for TIOCWIN* defines in termios.h
 
559
  QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
 
560
  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
 
561
  solarisnetlibs="-lsocket -lnsl -lresolv"
 
562
  LIBS="$solarisnetlibs $LIBS"
 
563
  libs_qga="$solarisnetlibs $libs_qga"
 
564
;;
 
565
AIX)
 
566
  aix="yes"
 
567
  make="${MAKE-gmake}"
 
568
;;
 
569
Haiku)
 
570
  haiku="yes"
 
571
  QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
 
572
  LIBS="-lposix_error_mapper -lnetwork $LIBS"
 
573
;;
 
574
*)
 
575
  audio_drv_list="oss"
 
576
  audio_possible_drivers="oss alsa sdl esd pa"
 
577
  linux="yes"
 
578
  linux_user="yes"
 
579
  kvm="yes"
 
580
  vhost_net="yes"
 
581
  vhost_scsi="yes"
 
582
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "x32" ] ; then
 
583
    audio_possible_drivers="$audio_possible_drivers fmod"
 
584
  fi
 
585
  QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
 
586
;;
 
587
esac
 
588
 
 
589
if [ "$bsd" = "yes" ] ; then
 
590
  if [ "$darwin" != "yes" ] ; then
 
591
    bsd_user="yes"
 
592
  fi
 
593
fi
 
594
 
 
595
: ${make=${MAKE-make}}
 
596
: ${install=${INSTALL-install}}
 
597
: ${python=${PYTHON-python}}
 
598
: ${smbd=${SMBD-/usr/sbin/smbd}}
 
599
 
 
600
# Default objcc to clang if available, otherwise use CC
 
601
if has clang; then
 
602
  objcc=clang
 
603
else
 
604
  objcc="$cc"
 
605
fi
 
606
 
 
607
if test "$mingw32" = "yes" ; then
 
608
  EXESUF=".exe"
 
609
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
 
610
  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
 
611
  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
 
612
  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
 
613
cat > $TMPC << EOF
 
614
int main(void) { return 0; }
 
615
EOF
 
616
  if compile_prog "" "-liberty" ; then
 
617
    LIBS="-liberty $LIBS"
 
618
  fi
 
619
  prefix="c:/Program Files/QEMU"
 
620
  mandir="\${prefix}"
 
621
  datadir="\${prefix}"
 
622
  qemu_docdir="\${prefix}"
 
623
  bindir="\${prefix}"
 
624
  sysconfdir="\${prefix}"
 
625
  local_statedir=
 
626
  confsuffix=""
 
627
  libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga"
 
628
fi
 
629
 
 
630
werror=""
 
631
 
 
632
for opt do
 
633
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
 
634
  case "$opt" in
 
635
  --help|-h) show_help=yes
 
636
  ;;
 
637
  --version|-V) exec cat $source_path/VERSION
 
638
  ;;
 
639
  --prefix=*) prefix="$optarg"
 
640
  ;;
 
641
  --interp-prefix=*) interp_prefix="$optarg"
 
642
  ;;
 
643
  --source-path=*)
 
644
  ;;
 
645
  --cross-prefix=*)
 
646
  ;;
 
647
  --cc=*)
 
648
  ;;
 
649
  --host-cc=*) host_cc="$optarg"
 
650
  ;;
 
651
  --cxx=*)
 
652
  ;;
 
653
  --iasl=*) iasl="$optarg"
 
654
  ;;
 
655
  --objcc=*) objcc="$optarg"
 
656
  ;;
 
657
  --make=*) make="$optarg"
 
658
  ;;
 
659
  --install=*) install="$optarg"
 
660
  ;;
 
661
  --python=*) python="$optarg"
 
662
  ;;
 
663
  --gcov=*) gcov_tool="$optarg"
 
664
  ;;
 
665
  --smbd=*) smbd="$optarg"
 
666
  ;;
 
667
  --extra-cflags=*)
 
668
  ;;
 
669
  --extra-ldflags=*)
 
670
  ;;
 
671
  --enable-debug-info)
 
672
  ;;
 
673
  --disable-debug-info)
 
674
  ;;
 
675
  --cpu=*)
 
676
  ;;
 
677
  --target-list=*) target_list="$optarg"
 
678
  ;;
 
679
  --enable-trace-backend=*) trace_backend="$optarg"
 
680
  ;;
 
681
  --with-trace-file=*) trace_file="$optarg"
 
682
  ;;
 
683
  --enable-gprof) gprof="yes"
 
684
  ;;
 
685
  --enable-gcov) gcov="yes"
 
686
  ;;
 
687
  --static)
 
688
    static="yes"
 
689
    LDFLAGS="-static $LDFLAGS"
 
690
    QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
 
691
  ;;
 
692
  --mandir=*) mandir="$optarg"
 
693
  ;;
 
694
  --bindir=*) bindir="$optarg"
 
695
  ;;
 
696
  --libdir=*) libdir="$optarg"
 
697
  ;;
 
698
  --libexecdir=*) libexecdir="$optarg"
 
699
  ;;
 
700
  --includedir=*) includedir="$optarg"
 
701
  ;;
 
702
  --datadir=*) datadir="$optarg"
 
703
  ;;
 
704
  --with-confsuffix=*) confsuffix="$optarg"
 
705
  ;;
 
706
  --docdir=*) qemu_docdir="$optarg"
 
707
  ;;
 
708
  --sysconfdir=*) sysconfdir="$optarg"
 
709
  ;;
 
710
  --localstatedir=*) local_statedir="$optarg"
 
711
  ;;
 
712
  --sbindir=*|--sharedstatedir=*|\
 
713
  --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
 
714
  --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
 
715
    # These switches are silently ignored, for compatibility with
 
716
    # autoconf-generated configure scripts. This allows QEMU's
 
717
    # configure to be used by RPM and similar macros that set
 
718
    # lots of directory switches by default.
 
719
  ;;
 
720
  --with-system-pixman) pixman="system"
 
721
  ;;
 
722
  --without-system-pixman) pixman="internal"
 
723
  ;;
 
724
  --without-pixman) pixman="none"
 
725
  ;;
 
726
  --disable-sdl) sdl="no"
 
727
  ;;
 
728
  --enable-sdl) sdl="yes"
 
729
  ;;
 
730
  --disable-qom-cast-debug) qom_cast_debug="no"
 
731
  ;;
 
732
  --enable-qom-cast-debug) qom_cast_debug="yes"
 
733
  ;;
 
734
  --disable-virtfs) virtfs="no"
 
735
  ;;
 
736
  --enable-virtfs) virtfs="yes"
 
737
  ;;
 
738
  --disable-vnc) vnc="no"
 
739
  ;;
 
740
  --enable-vnc) vnc="yes"
 
741
  ;;
 
742
  --fmod-lib=*) fmod_lib="$optarg"
 
743
  ;;
 
744
  --fmod-inc=*) fmod_inc="$optarg"
 
745
  ;;
 
746
  --oss-lib=*) oss_lib="$optarg"
 
747
  ;;
 
748
  --audio-drv-list=*) audio_drv_list="$optarg"
 
749
  ;;
 
750
  --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
 
751
  ;;
 
752
  --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
 
753
  ;;
 
754
  --enable-debug-tcg) debug_tcg="yes"
 
755
  ;;
 
756
  --disable-debug-tcg) debug_tcg="no"
 
757
  ;;
 
758
  --enable-debug)
 
759
      # Enable debugging options that aren't excessively noisy
 
760
      debug_tcg="yes"
 
761
      debug="yes"
 
762
      strip_opt="no"
 
763
  ;;
 
764
  --enable-sparse) sparse="yes"
 
765
  ;;
 
766
  --disable-sparse) sparse="no"
 
767
  ;;
 
768
  --disable-strip) strip_opt="no"
 
769
  ;;
 
770
  --disable-vnc-tls) vnc_tls="no"
 
771
  ;;
 
772
  --enable-vnc-tls) vnc_tls="yes"
 
773
  ;;
 
774
  --disable-vnc-sasl) vnc_sasl="no"
 
775
  ;;
 
776
  --enable-vnc-sasl) vnc_sasl="yes"
 
777
  ;;
 
778
  --disable-vnc-jpeg) vnc_jpeg="no"
 
779
  ;;
 
780
  --enable-vnc-jpeg) vnc_jpeg="yes"
 
781
  ;;
 
782
  --disable-vnc-png) vnc_png="no"
 
783
  ;;
 
784
  --enable-vnc-png) vnc_png="yes"
 
785
  ;;
 
786
  --disable-vnc-ws) vnc_ws="no"
 
787
  ;;
 
788
  --enable-vnc-ws) vnc_ws="yes"
 
789
  ;;
 
790
  --disable-slirp) slirp="no"
 
791
  ;;
 
792
  --disable-uuid) uuid="no"
 
793
  ;;
 
794
  --enable-uuid) uuid="yes"
 
795
  ;;
 
796
  --disable-vde) vde="no"
 
797
  ;;
 
798
  --enable-vde) vde="yes"
 
799
  ;;
 
800
  --disable-xen) xen="no"
 
801
  ;;
 
802
  --enable-xen) xen="yes"
 
803
  ;;
 
804
  --disable-xen-pci-passthrough) xen_pci_passthrough="no"
 
805
  ;;
 
806
  --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
 
807
  ;;
 
808
  --disable-brlapi) brlapi="no"
 
809
  ;;
 
810
  --enable-brlapi) brlapi="yes"
 
811
  ;;
 
812
  --disable-bluez) bluez="no"
 
813
  ;;
 
814
  --enable-bluez) bluez="yes"
 
815
  ;;
 
816
  --disable-kvm) kvm="no"
 
817
  ;;
 
818
  --enable-kvm) kvm="yes"
 
819
  ;;
 
820
  --disable-tcg-interpreter) tcg_interpreter="no"
 
821
  ;;
 
822
  --enable-tcg-interpreter) tcg_interpreter="yes"
 
823
  ;;
 
824
  --disable-cap-ng)  cap_ng="no"
 
825
  ;;
 
826
  --enable-cap-ng) cap_ng="yes"
 
827
  ;;
 
828
  --disable-spice) spice="no"
 
829
  ;;
 
830
  --enable-spice) spice="yes"
 
831
  ;;
 
832
  --disable-libiscsi) libiscsi="no"
 
833
  ;;
 
834
  --enable-libiscsi) libiscsi="yes"
 
835
  ;;
 
836
  --enable-profiler) profiler="yes"
 
837
  ;;
 
838
  --disable-cocoa) cocoa="no"
 
839
  ;;
 
840
  --enable-cocoa)
 
841
      cocoa="yes" ;
 
842
      sdl="no" ;
 
843
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
 
844
  ;;
 
845
  --disable-system) softmmu="no"
 
846
  ;;
 
847
  --enable-system) softmmu="yes"
 
848
  ;;
 
849
  --disable-user)
 
850
      linux_user="no" ;
 
851
      bsd_user="no" ;
 
852
  ;;
 
853
  --enable-user) ;;
 
854
  --disable-linux-user) linux_user="no"
 
855
  ;;
 
856
  --enable-linux-user) linux_user="yes"
 
857
  ;;
 
858
  --disable-bsd-user) bsd_user="no"
 
859
  ;;
 
860
  --enable-bsd-user) bsd_user="yes"
 
861
  ;;
 
862
  --enable-guest-base) guest_base="yes"
 
863
  ;;
 
864
  --disable-guest-base) guest_base="no"
 
865
  ;;
 
866
  --enable-pie) pie="yes"
 
867
  ;;
 
868
  --disable-pie) pie="no"
 
869
  ;;
 
870
  --enable-uname-release=*) uname_release="$optarg"
 
871
  ;;
 
872
  --enable-werror) werror="yes"
 
873
  ;;
 
874
  --disable-werror) werror="no"
 
875
  ;;
 
876
  --disable-curses) curses="no"
 
877
  ;;
 
878
  --enable-curses) curses="yes"
 
879
  ;;
 
880
  --disable-curl) curl="no"
 
881
  ;;
 
882
  --enable-curl) curl="yes"
 
883
  ;;
 
884
  --disable-fdt) fdt="no"
 
885
  ;;
 
886
  --enable-fdt) fdt="yes"
 
887
  ;;
 
888
  --disable-linux-aio) linux_aio="no"
 
889
  ;;
 
890
  --enable-linux-aio) linux_aio="yes"
 
891
  ;;
 
892
  --disable-attr) attr="no"
 
893
  ;;
 
894
  --enable-attr) attr="yes"
 
895
  ;;
 
896
  --disable-blobs) blobs="no"
 
897
  ;;
 
898
  --with-pkgversion=*) pkgversion=" ($optarg)"
 
899
  ;;
 
900
  --with-coroutine=*) coroutine="$optarg"
 
901
  ;;
 
902
  --disable-coroutine-pool) coroutine_pool="no"
 
903
  ;;
 
904
  --enable-coroutine-pool) coroutine_pool="yes"
 
905
  ;;
 
906
  --disable-docs) docs="no"
 
907
  ;;
 
908
  --enable-docs) docs="yes"
 
909
  ;;
 
910
  --disable-vhost-net) vhost_net="no"
 
911
  ;;
 
912
  --enable-vhost-net) vhost_net="yes"
 
913
  ;;
 
914
  --disable-vhost-scsi) vhost_scsi="no"
 
915
  ;;
 
916
  --enable-vhost-scsi) vhost_scsi="yes"
 
917
  ;;
 
918
  --disable-glx) glx="no"
 
919
  ;;
 
920
  --enable-glx) glx="yes"
 
921
  ;;
 
922
  --disable-rbd) rbd="no"
 
923
  ;;
 
924
  --enable-rbd) rbd="yes"
 
925
  ;;
 
926
  --disable-xfsctl) xfs="no"
 
927
  ;;
 
928
  --enable-xfsctl) xfs="yes"
 
929
  ;;
 
930
  --disable-smartcard-nss) smartcard_nss="no"
 
931
  ;;
 
932
  --enable-smartcard-nss) smartcard_nss="yes"
 
933
  ;;
 
934
  --disable-libusb) libusb="no"
 
935
  ;;
 
936
  --enable-libusb) libusb="yes"
 
937
  ;;
 
938
  --disable-usb-redir) usb_redir="no"
 
939
  ;;
 
940
  --enable-usb-redir) usb_redir="yes"
 
941
  ;;
 
942
  --disable-zlib-test) zlib="no"
 
943
  ;;
 
944
  --enable-guest-agent) guest_agent="yes"
 
945
  ;;
 
946
  --disable-guest-agent) guest_agent="no"
 
947
  ;;
 
948
  --with-vss-sdk) vss_win32_sdk=""
 
949
  ;;
 
950
  --with-vss-sdk=*) vss_win32_sdk="$optarg"
 
951
  ;;
 
952
  --without-vss-sdk) vss_win32_sdk="no"
 
953
  ;;
 
954
  --with-win-sdk) win_sdk=""
 
955
  ;;
 
956
  --with-win-sdk=*) win_sdk="$optarg"
 
957
  ;;
 
958
  --without-win-sdk) win_sdk="no"
 
959
  ;;
 
960
  --enable-tools) want_tools="yes"
 
961
  ;;
 
962
  --disable-tools) want_tools="no"
 
963
  ;;
 
964
  --enable-seccomp) seccomp="yes"
 
965
  ;;
 
966
  --disable-seccomp) seccomp="no"
 
967
  ;;
 
968
  --disable-glusterfs) glusterfs="no"
 
969
  ;;
 
970
  --enable-glusterfs) glusterfs="yes"
 
971
  ;;
 
972
  --disable-virtio-blk-data-plane) virtio_blk_data_plane="no"
 
973
  ;;
 
974
  --enable-virtio-blk-data-plane) virtio_blk_data_plane="yes"
 
975
  ;;
 
976
  --disable-gtk) gtk="no"
 
977
  ;;
 
978
  --enable-gtk) gtk="yes"
 
979
  ;;
 
980
  --enable-rdma) rdma="yes"
 
981
  ;;
 
982
  --disable-rdma) rdma="no"
 
983
  ;;
 
984
  --with-gtkabi=*) gtkabi="$optarg"
 
985
  ;;
 
986
  --enable-tpm) tpm="yes"
 
987
  ;;
 
988
  --disable-libssh2) libssh2="no"
 
989
  ;;
 
990
  --enable-libssh2) libssh2="yes"
 
991
  ;;
 
992
  --enable-vhdx) vhdx="yes"
 
993
  ;;
 
994
  --disable-vhdx) vhdx="no"
 
995
  ;;
 
996
  *) echo "ERROR: unknown option $opt"; show_help="yes"
 
997
  ;;
 
998
  esac
 
999
done
 
1000
 
 
1001
case "$cpu" in
 
1002
    ppc)
 
1003
           CPU_CFLAGS="-m32"
 
1004
           LDFLAGS="-m32 $LDFLAGS"
 
1005
           ;;
 
1006
    ppc64)
 
1007
           CPU_CFLAGS="-m64"
 
1008
           LDFLAGS="-m64 $LDFLAGS"
 
1009
           ;;
 
1010
    sparc)
 
1011
           LDFLAGS="-m32 $LDFLAGS"
 
1012
           CPU_CFLAGS="-m32 -mcpu=ultrasparc"
 
1013
           ;;
 
1014
    sparc64)
 
1015
           LDFLAGS="-m64 $LDFLAGS"
 
1016
           CPU_CFLAGS="-m64 -mcpu=ultrasparc"
 
1017
           ;;
 
1018
    s390)
 
1019
           CPU_CFLAGS="-m31 -march=z990"
 
1020
           LDFLAGS="-m31 $LDFLAGS"
 
1021
           ;;
 
1022
    s390x)
 
1023
           CPU_CFLAGS="-m64 -march=z990"
 
1024
           LDFLAGS="-m64 $LDFLAGS"
 
1025
           ;;
 
1026
    i386)
 
1027
           CPU_CFLAGS="-m32"
 
1028
           LDFLAGS="-m32 $LDFLAGS"
 
1029
           cc_i386='$(CC) -m32'
 
1030
           ;;
 
1031
    x86_64)
 
1032
           CPU_CFLAGS="-m64"
 
1033
           LDFLAGS="-m64 $LDFLAGS"
 
1034
           cc_i386='$(CC) -m32'
 
1035
           ;;
 
1036
    x32)
 
1037
           CPU_CFLAGS="-mx32"
 
1038
           LDFLAGS="-mx32 $LDFLAGS"
 
1039
           cc_i386='$(CC) -m32'
 
1040
           ;;
 
1041
    # No special flags required for other host CPUs
 
1042
esac
 
1043
 
 
1044
QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
 
1045
EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
 
1046
 
 
1047
default_target_list=""
 
1048
 
 
1049
mak_wilds=""
 
1050
 
 
1051
if [ "$softmmu" = "yes" ]; then
 
1052
    mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
 
1053
fi
 
1054
if [ "$linux_user" = "yes" ]; then
 
1055
    mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
 
1056
fi
 
1057
if [ "$bsd_user" = "yes" ]; then
 
1058
    mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
 
1059
fi
 
1060
 
 
1061
for config in $mak_wilds; do
 
1062
    default_target_list="${default_target_list} $(basename "$config" .mak)"
 
1063
done
 
1064
 
 
1065
if test x"$show_help" = x"yes" ; then
 
1066
cat << EOF
 
1067
 
 
1068
Usage: configure [options]
 
1069
Options: [defaults in brackets after descriptions]
 
1070
 
 
1071
EOF
 
1072
echo "Standard options:"
 
1073
echo "  --help                   print this message"
 
1074
echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
 
1075
echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
 
1076
echo "                           use %M for cpu name [$interp_prefix]"
 
1077
echo "  --target-list=LIST       set target list (default: build everything)"
 
1078
echo "Available targets: $default_target_list" | \
 
1079
    fold -s -w 53 | sed -e 's/^/                           /'
 
1080
echo ""
 
1081
echo "Advanced options (experts only):"
 
1082
echo "  --source-path=PATH       path of source code [$source_path]"
 
1083
echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
 
1084
echo "  --cc=CC                  use C compiler CC [$cc]"
 
1085
echo "  --iasl=IASL              use ACPI compiler IASL [$iasl]"
 
1086
echo "  --host-cc=CC             use C compiler CC [$host_cc] for code run at"
 
1087
echo "                           build time"
 
1088
echo "  --cxx=CXX                use C++ compiler CXX [$cxx]"
 
1089
echo "  --objcc=OBJCC            use Objective-C compiler OBJCC [$objcc]"
 
1090
echo "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
 
1091
echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
 
1092
echo "  --make=MAKE              use specified make [$make]"
 
1093
echo "  --install=INSTALL        use specified install [$install]"
 
1094
echo "  --python=PYTHON          use specified python [$python]"
 
1095
echo "  --smbd=SMBD              use specified smbd [$smbd]"
 
1096
echo "  --static                 enable static build [$static]"
 
1097
echo "  --mandir=PATH            install man pages in PATH"
 
1098
echo "  --datadir=PATH           install firmware in PATH$confsuffix"
 
1099
echo "  --docdir=PATH            install documentation in PATH$confsuffix"
 
1100
echo "  --bindir=PATH            install binaries in PATH"
 
1101
echo "  --libdir=PATH            install libraries in PATH"
 
1102
echo "  --sysconfdir=PATH        install config in PATH$confsuffix"
 
1103
echo "  --localstatedir=PATH     install local state in PATH (set at runtime on win32)"
 
1104
echo "  --with-confsuffix=SUFFIX suffix for QEMU data inside datadir and sysconfdir [$confsuffix]"
 
1105
echo "  --enable-debug-tcg       enable TCG debugging"
 
1106
echo "  --disable-debug-tcg      disable TCG debugging (default)"
 
1107
echo "  --enable-debug-info       enable debugging information (default)"
 
1108
echo "  --disable-debug-info      disable debugging information"
 
1109
echo "  --enable-debug           enable common debug build options"
 
1110
echo "  --enable-sparse          enable sparse checker"
 
1111
echo "  --disable-sparse         disable sparse checker (default)"
 
1112
echo "  --disable-strip          disable stripping binaries"
 
1113
echo "  --disable-werror         disable compilation abort on warning"
 
1114
echo "  --disable-sdl            disable SDL"
 
1115
echo "  --enable-sdl             enable SDL"
 
1116
echo "  --disable-gtk            disable gtk UI"
 
1117
echo "  --enable-gtk             enable gtk UI"
 
1118
echo "  --disable-virtfs         disable VirtFS"
 
1119
echo "  --enable-virtfs          enable VirtFS"
 
1120
echo "  --disable-vnc            disable VNC"
 
1121
echo "  --enable-vnc             enable VNC"
 
1122
echo "  --disable-cocoa          disable Cocoa (Mac OS X only)"
 
1123
echo "  --enable-cocoa           enable Cocoa (default on Mac OS X)"
 
1124
echo "  --audio-drv-list=LIST    set audio drivers list:"
 
1125
echo "                           Available drivers: $audio_possible_drivers"
 
1126
echo "  --block-drv-whitelist=L  Same as --block-drv-rw-whitelist=L"
 
1127
echo "  --block-drv-rw-whitelist=L"
 
1128
echo "                           set block driver read-write whitelist"
 
1129
echo "                           (affects only QEMU, not qemu-img)"
 
1130
echo "  --block-drv-ro-whitelist=L"
 
1131
echo "                           set block driver read-only whitelist"
 
1132
echo "                           (affects only QEMU, not qemu-img)"
 
1133
echo "  --disable-xen            disable xen backend driver support"
 
1134
echo "  --enable-xen             enable xen backend driver support"
 
1135
echo "  --disable-xen-pci-passthrough"
 
1136
echo "  --enable-xen-pci-passthrough"
 
1137
echo "  --disable-brlapi         disable BrlAPI"
 
1138
echo "  --enable-brlapi          enable BrlAPI"
 
1139
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
 
1140
echo "  --enable-vnc-tls         enable TLS encryption for VNC server"
 
1141
echo "  --disable-vnc-sasl       disable SASL encryption for VNC server"
 
1142
echo "  --enable-vnc-sasl        enable SASL encryption for VNC server"
 
1143
echo "  --disable-vnc-jpeg       disable JPEG lossy compression for VNC server"
 
1144
echo "  --enable-vnc-jpeg        enable JPEG lossy compression for VNC server"
 
1145
echo "  --disable-vnc-png        disable PNG compression for VNC server (default)"
 
1146
echo "  --enable-vnc-png         enable PNG compression for VNC server"
 
1147
echo "  --disable-vnc-ws         disable Websockets support for VNC server"
 
1148
echo "  --enable-vnc-ws          enable Websockets support for VNC server"
 
1149
echo "  --disable-curses         disable curses output"
 
1150
echo "  --enable-curses          enable curses output"
 
1151
echo "  --disable-curl           disable curl connectivity"
 
1152
echo "  --enable-curl            enable curl connectivity"
 
1153
echo "  --disable-fdt            disable fdt device tree"
 
1154
echo "  --enable-fdt             enable fdt device tree"
 
1155
echo "  --disable-bluez          disable bluez stack connectivity"
 
1156
echo "  --enable-bluez           enable bluez stack connectivity"
 
1157
echo "  --disable-slirp          disable SLIRP userspace network connectivity"
 
1158
echo "  --disable-kvm            disable KVM acceleration support"
 
1159
echo "  --enable-kvm             enable KVM acceleration support"
 
1160
echo "  --disable-rdma           disable RDMA-based migration support"
 
1161
echo "  --enable-rdma            enable RDMA-based migration support"
 
1162
echo "  --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)"
 
1163
echo "  --enable-system          enable all system emulation targets"
 
1164
echo "  --disable-system         disable all system emulation targets"
 
1165
echo "  --enable-user            enable supported user emulation targets"
 
1166
echo "  --disable-user           disable all user emulation targets"
 
1167
echo "  --enable-linux-user      enable all linux usermode emulation targets"
 
1168
echo "  --disable-linux-user     disable all linux usermode emulation targets"
 
1169
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
 
1170
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
 
1171
echo "  --enable-guest-base      enable GUEST_BASE support for usermode"
 
1172
echo "                           emulation targets"
 
1173
echo "  --disable-guest-base     disable GUEST_BASE support"
 
1174
echo "  --enable-pie             build Position Independent Executables"
 
1175
echo "  --disable-pie            do not build Position Independent Executables"
 
1176
echo "  --fmod-lib               path to FMOD library"
 
1177
echo "  --fmod-inc               path to FMOD includes"
 
1178
echo "  --oss-lib                path to OSS library"
 
1179
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
 
1180
echo "  --cpu=CPU                Build for host CPU [$cpu]"
 
1181
echo "  --disable-uuid           disable uuid support"
 
1182
echo "  --enable-uuid            enable uuid support"
 
1183
echo "  --disable-vde            disable support for vde network"
 
1184
echo "  --enable-vde             enable support for vde network"
 
1185
echo "  --disable-linux-aio      disable Linux AIO support"
 
1186
echo "  --enable-linux-aio       enable Linux AIO support"
 
1187
echo "  --disable-cap-ng         disable libcap-ng support"
 
1188
echo "  --enable-cap-ng          enable libcap-ng support"
 
1189
echo "  --disable-attr           disables attr and xattr support"
 
1190
echo "  --enable-attr            enable attr and xattr support"
 
1191
echo "  --disable-blobs          disable installing provided firmware blobs"
 
1192
echo "  --enable-docs            enable documentation build"
 
1193
echo "  --disable-docs           disable documentation build"
 
1194
echo "  --disable-vhost-net      disable vhost-net acceleration support"
 
1195
echo "  --enable-vhost-net       enable vhost-net acceleration support"
 
1196
echo "  --enable-trace-backend=B Set trace backend"
 
1197
echo "                           Available backends:" $($python "$source_path"/scripts/tracetool.py --list-backends)
 
1198
echo "  --with-trace-file=NAME   Full PATH,NAME of file to store traces"
 
1199
echo "                           Default:trace-<pid>"
 
1200
echo "  --disable-spice          disable spice"
 
1201
echo "  --enable-spice           enable spice"
 
1202
echo "  --enable-rbd             enable building the rados block device (rbd)"
 
1203
echo "  --disable-libiscsi       disable iscsi support"
 
1204
echo "  --enable-libiscsi        enable iscsi support"
 
1205
echo "  --disable-smartcard-nss  disable smartcard nss support"
 
1206
echo "  --enable-smartcard-nss   enable smartcard nss support"
 
1207
echo "  --disable-libusb         disable libusb (for usb passthrough)"
 
1208
echo "  --enable-libusb          enable libusb (for usb passthrough)"
 
1209
echo "  --disable-usb-redir      disable usb network redirection support"
 
1210
echo "  --enable-usb-redir       enable usb network redirection support"
 
1211
echo "  --disable-guest-agent    disable building of the QEMU Guest Agent"
 
1212
echo "  --enable-guest-agent     enable building of the QEMU Guest Agent"
 
1213
echo "  --with-vss-sdk=SDK-path  enable Windows VSS support in QEMU Guest Agent"
 
1214
echo "  --with-win-sdk=SDK-path  path to Windows Platform SDK (to build VSS .tlb)"
 
1215
echo "  --disable-seccomp        disable seccomp support"
 
1216
echo "  --enable-seccomp         enables seccomp support"
 
1217
echo "  --with-coroutine=BACKEND coroutine backend. Supported options:"
 
1218
echo "                           gthread, ucontext, sigaltstack, windows"
 
1219
echo "  --disable-coroutine-pool disable coroutine freelist (worse performance)"
 
1220
echo "  --enable-coroutine-pool  enable coroutine freelist (better performance)"
 
1221
echo "  --enable-glusterfs       enable GlusterFS backend"
 
1222
echo "  --disable-glusterfs      disable GlusterFS backend"
 
1223
echo "  --enable-gcov            enable test coverage analysis with gcov"
 
1224
echo "  --gcov=GCOV              use specified gcov [$gcov_tool]"
 
1225
echo "  --enable-tpm             enable TPM support"
 
1226
echo "  --disable-libssh2        disable ssh block device support"
 
1227
echo "  --enable-libssh2         enable ssh block device support"
 
1228
echo "  --disable-vhdx           disables support for the Microsoft VHDX image format"
 
1229
echo "  --enable-vhdx            enable support for the Microsoft VHDX image format"
 
1230
echo ""
 
1231
echo "NOTE: The object files are built at the place where configure is launched"
 
1232
exit 1
 
1233
fi
 
1234
 
 
1235
# Now we have handled --enable-tcg-interpreter and know we're not just
 
1236
# printing the help message, bail out if the host CPU isn't supported.
 
1237
if test "$ARCH" = "unknown"; then
 
1238
    if test "$tcg_interpreter" = "yes" ; then
 
1239
        echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
 
1240
        ARCH=tci
 
1241
    else
 
1242
        error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
 
1243
    fi
 
1244
fi
 
1245
 
 
1246
# check that the C compiler works.
 
1247
cat > $TMPC <<EOF
 
1248
int main(void) { return 0; }
 
1249
EOF
 
1250
 
 
1251
if compile_object ; then
 
1252
  : C compiler works ok
 
1253
else
 
1254
    error_exit "\"$cc\" either does not exist or does not work"
 
1255
fi
 
1256
 
 
1257
# Consult white-list to determine whether to enable werror
 
1258
# by default.  Only enable by default for git builds
 
1259
z_version=`cut -f3 -d. $source_path/VERSION`
 
1260
 
 
1261
if test -z "$werror" ; then
 
1262
    if test -d "$source_path/.git" -a \
 
1263
        "$linux" = "yes" ; then
 
1264
        werror="yes"
 
1265
    else
 
1266
        werror="no"
 
1267
    fi
 
1268
fi
 
1269
 
 
1270
gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
 
1271
gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
 
1272
gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
 
1273
gcc_flags="-Wendif-labels $gcc_flags"
 
1274
gcc_flags="-Wno-initializer-overrides $gcc_flags"
 
1275
gcc_flags="-Wno-string-plus-int $gcc_flags"
 
1276
# Note that we do not add -Werror to gcc_flags here, because that would
 
1277
# enable it for all configure tests. If a configure test failed due
 
1278
# to -Werror this would just silently disable some features,
 
1279
# so it's too error prone.
 
1280
cat > $TMPC << EOF
 
1281
int main(void) { return 0; }
 
1282
EOF
 
1283
for flag in $gcc_flags; do
 
1284
    # Use the positive sense of the flag when testing for -Wno-wombat
 
1285
    # support (gcc will happily accept the -Wno- form of unknown
 
1286
    # warning options).
 
1287
    optflag="$(echo $flag | sed -e 's/^-Wno-/-W/')"
 
1288
    if compile_prog "-Werror $optflag" "" ; then
 
1289
        QEMU_CFLAGS="$QEMU_CFLAGS $flag"
 
1290
    fi
 
1291
done
 
1292
 
 
1293
if compile_prog "-Werror -fstack-protector-all" "" ; then
 
1294
    QEMU_CFLAGS="$QEMU_CFLAGS -fstack-protector-all"
 
1295
    LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,-fstack-protector-all"
 
1296
fi
 
1297
 
 
1298
# Workaround for http://gcc.gnu.org/PR55489.  Happens with -fPIE/-fPIC and
 
1299
# large functions that use global variables.  The bug is in all releases of
 
1300
# GCC, but it became particularly acute in 4.6.x and 4.7.x.  It is fixed in
 
1301
# 4.7.3 and 4.8.0.  We should be able to delete this at the end of 2013.
 
1302
cat > $TMPC << EOF
 
1303
#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
 
1304
int main(void) { return 0; }
 
1305
#else
 
1306
#error No bug in this compiler.
 
1307
#endif
 
1308
EOF
 
1309
if compile_prog "-Werror -fno-gcse" "" ; then
 
1310
  TRANSLATE_OPT_CFLAGS=-fno-gcse
 
1311
fi
 
1312
 
 
1313
if test "$static" = "yes" ; then
 
1314
  if test "$pie" = "yes" ; then
 
1315
    error_exit "static and pie are mutually incompatible"
 
1316
  else
 
1317
    pie="no"
 
1318
  fi
 
1319
fi
 
1320
 
 
1321
if test "$pie" = ""; then
 
1322
  case "$cpu-$targetos" in
 
1323
    i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
 
1324
      ;;
 
1325
    *)
 
1326
      pie="no"
 
1327
      ;;
 
1328
  esac
 
1329
fi
 
1330
 
 
1331
if test "$pie" != "no" ; then
 
1332
  cat > $TMPC << EOF
 
1333
 
 
1334
#ifdef __linux__
 
1335
#  define THREAD __thread
 
1336
#else
 
1337
#  define THREAD
 
1338
#endif
 
1339
 
 
1340
static THREAD int tls_var;
 
1341
 
 
1342
int main(void) { return tls_var; }
 
1343
 
 
1344
EOF
 
1345
  if compile_prog "-fPIE -DPIE" "-pie"; then
 
1346
    QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
 
1347
    LDFLAGS="-pie $LDFLAGS"
 
1348
    pie="yes"
 
1349
    if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
 
1350
      LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
 
1351
    fi
 
1352
  else
 
1353
    if test "$pie" = "yes"; then
 
1354
      error_exit "PIE not available due to missing toolchain support"
 
1355
    else
 
1356
      echo "Disabling PIE due to missing toolchain support"
 
1357
      pie="no"
 
1358
    fi
 
1359
  fi
 
1360
fi
 
1361
 
 
1362
##########################################
 
1363
# __sync_fetch_and_and requires at least -march=i486. Many toolchains
 
1364
# use i686 as default anyway, but for those that don't, an explicit
 
1365
# specification is necessary
 
1366
 
 
1367
if test "$cpu" = "i386"; then
 
1368
  cat > $TMPC << EOF
 
1369
static int sfaa(int *ptr)
 
1370
{
 
1371
  return __sync_fetch_and_and(ptr, 0);
 
1372
}
 
1373
 
 
1374
int main(void)
 
1375
{
 
1376
  int val = 42;
 
1377
  val = __sync_val_compare_and_swap(&val, 0, 1);
 
1378
  sfaa(&val);
 
1379
  return val;
 
1380
}
 
1381
EOF
 
1382
  if ! compile_prog "" "" ; then
 
1383
    QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
 
1384
  fi
 
1385
fi
 
1386
 
 
1387
#########################################
 
1388
# Solaris specific configure tool chain decisions
 
1389
 
 
1390
if test "$solaris" = "yes" ; then
 
1391
  if has $install; then
 
1392
    :
 
1393
  else
 
1394
    error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
 
1395
        "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
 
1396
        "to get ginstall which is used by default (which lives in /opt/csw/bin)"
 
1397
  fi
 
1398
  if test "`path_of $install`" = "/usr/sbin/install" ; then
 
1399
    error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
 
1400
        "try ginstall from the GNU fileutils available from www.blastwave.org" \
 
1401
        "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
 
1402
  fi
 
1403
  if has ar; then
 
1404
    :
 
1405
  else
 
1406
    if test -f /usr/ccs/bin/ar ; then
 
1407
      error_exit "No path includes ar" \
 
1408
          "Add /usr/ccs/bin to your path and rerun configure"
 
1409
    fi
 
1410
    error_exit "No path includes ar"
 
1411
  fi
 
1412
fi
 
1413
 
 
1414
if ! has $python; then
 
1415
  error_exit "Python not found. Use --python=/path/to/python"
 
1416
fi
 
1417
 
 
1418
# Note that if the Python conditional here evaluates True we will exit
 
1419
# with status 1 which is a shell 'false' value.
 
1420
if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
 
1421
  error_exit "Cannot use '$python', Python 2.4 or later is required." \
 
1422
      "Note that Python 3 or later is not yet supported." \
 
1423
      "Use --python=/path/to/python to specify a supported Python."
 
1424
fi
 
1425
 
 
1426
# The -B switch was added in Python 2.6.
 
1427
# If it is supplied, compiled files are not written.
 
1428
# Use it for Python versions which support it.
 
1429
if $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then
 
1430
  python="$python -B"
 
1431
fi
 
1432
 
 
1433
if test -z "${target_list+xxx}" ; then
 
1434
    target_list="$default_target_list"
 
1435
else
 
1436
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
 
1437
fi
 
1438
 
 
1439
# Check that we recognised the target name; this allows a more
 
1440
# friendly error message than if we let it fall through.
 
1441
for target in $target_list; do
 
1442
    case " $default_target_list " in
 
1443
        *" $target "*)
 
1444
            ;;
 
1445
        *)
 
1446
            error_exit "Unknown target name '$target'"
 
1447
            ;;
 
1448
    esac
 
1449
done
 
1450
 
 
1451
# see if system emulation was really requested
 
1452
case " $target_list " in
 
1453
  *"-softmmu "*) softmmu=yes
 
1454
  ;;
 
1455
  *) softmmu=no
 
1456
  ;;
 
1457
esac
 
1458
 
 
1459
feature_not_found() {
 
1460
  feature=$1
 
1461
 
 
1462
  error_exit "User requested feature $feature" \
 
1463
      "configure was not able to find it"
 
1464
}
 
1465
 
 
1466
# ---
 
1467
# big/little endian test
 
1468
cat > $TMPC << EOF
 
1469
short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
 
1470
short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
 
1471
extern int foo(short *, short *);
 
1472
int main(int argc, char *argv[]) {
 
1473
    return foo(big_endian, little_endian);
 
1474
}
 
1475
EOF
 
1476
 
 
1477
if compile_object ; then
 
1478
    if grep -q BiGeNdIaN $TMPO ; then
 
1479
        bigendian="yes"
 
1480
    elif grep -q LiTtLeEnDiAn $TMPO ; then
 
1481
        bigendian="no"
 
1482
    else
 
1483
        echo big/little test failed
 
1484
    fi
 
1485
else
 
1486
    echo big/little test failed
 
1487
fi
 
1488
 
 
1489
##########################################
 
1490
# pkg-config probe
 
1491
 
 
1492
if ! has "$pkg_config_exe"; then
 
1493
  error_exit "pkg-config binary '$pkg_config_exe' not found"
 
1494
fi
 
1495
 
 
1496
##########################################
 
1497
# NPTL probe
 
1498
 
 
1499
if test "$linux_user" = "yes"; then
 
1500
  cat > $TMPC <<EOF
 
1501
#include <sched.h>
 
1502
#include <linux/futex.h>
 
1503
int main(void) {
 
1504
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
 
1505
#error bork
 
1506
#endif
 
1507
  return 0;
 
1508
}
 
1509
EOF
 
1510
  if ! compile_object ; then
 
1511
    feature_not_found "nptl"
 
1512
  fi
 
1513
fi
 
1514
 
 
1515
##########################################
 
1516
# zlib check
 
1517
 
 
1518
if test "$zlib" != "no" ; then
 
1519
    cat > $TMPC << EOF
 
1520
#include <zlib.h>
 
1521
int main(void) { zlibVersion(); return 0; }
 
1522
EOF
 
1523
    if compile_prog "" "-lz" ; then
 
1524
        :
 
1525
    else
 
1526
        error_exit "zlib check failed" \
 
1527
            "Make sure to have the zlib libs and headers installed."
 
1528
    fi
 
1529
fi
 
1530
libs_softmmu="$libs_softmmu -lz"
 
1531
 
 
1532
##########################################
 
1533
# libseccomp check
 
1534
 
 
1535
if test "$seccomp" != "no" ; then
 
1536
    if $pkg_config --atleast-version=2.1.0 libseccomp; then
 
1537
        libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
 
1538
        QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
 
1539
        seccomp="yes"
 
1540
    else
 
1541
        if test "$seccomp" = "yes"; then
 
1542
            feature_not_found "libseccomp"
 
1543
        fi
 
1544
        seccomp="no"
 
1545
    fi
 
1546
fi
 
1547
##########################################
 
1548
# xen probe
 
1549
 
 
1550
if test "$xen" != "no" ; then
 
1551
  xen_libs="-lxenstore -lxenctrl -lxenguest"
 
1552
 
 
1553
  # First we test whether Xen headers and libraries are available.
 
1554
  # If no, we are done and there is no Xen support.
 
1555
  # If yes, more tests are run to detect the Xen version.
 
1556
 
 
1557
  # Xen (any)
 
1558
  cat > $TMPC <<EOF
 
1559
#include <xenctrl.h>
 
1560
int main(void) {
 
1561
  return 0;
 
1562
}
 
1563
EOF
 
1564
  if ! compile_prog "" "$xen_libs" ; then
 
1565
    # Xen not found
 
1566
    if test "$xen" = "yes" ; then
 
1567
      feature_not_found "xen"
 
1568
    fi
 
1569
    xen=no
 
1570
 
 
1571
  # Xen unstable
 
1572
  elif
 
1573
      cat > $TMPC <<EOF &&
 
1574
#include <xenctrl.h>
 
1575
#include <xenstore.h>
 
1576
#include <stdint.h>
 
1577
#include <xen/hvm/hvm_info_table.h>
 
1578
#if !defined(HVM_MAX_VCPUS)
 
1579
# error HVM_MAX_VCPUS not defined
 
1580
#endif
 
1581
int main(void) {
 
1582
  xc_interface *xc;
 
1583
  xs_daemon_open();
 
1584
  xc = xc_interface_open(0, 0, 0);
 
1585
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
 
1586
  xc_gnttab_open(NULL, 0);
 
1587
  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
 
1588
  xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
 
1589
  return 0;
 
1590
}
 
1591
EOF
 
1592
      compile_prog "" "$xen_libs"
 
1593
    then
 
1594
    xen_ctrl_version=420
 
1595
    xen=yes
 
1596
 
 
1597
  elif
 
1598
      cat > $TMPC <<EOF &&
 
1599
#include <xenctrl.h>
 
1600
#include <xs.h>
 
1601
#include <stdint.h>
 
1602
#include <xen/hvm/hvm_info_table.h>
 
1603
#if !defined(HVM_MAX_VCPUS)
 
1604
# error HVM_MAX_VCPUS not defined
 
1605
#endif
 
1606
int main(void) {
 
1607
  xs_daemon_open();
 
1608
  xc_interface_open(0, 0, 0);
 
1609
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
 
1610
  xc_gnttab_open(NULL, 0);
 
1611
  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
 
1612
  return 0;
 
1613
}
 
1614
EOF
 
1615
      compile_prog "" "$xen_libs"
 
1616
    then
 
1617
    xen_ctrl_version=410
 
1618
    xen=yes
 
1619
 
 
1620
  # Xen 4.0.0
 
1621
  elif
 
1622
      cat > $TMPC <<EOF &&
 
1623
#include <xenctrl.h>
 
1624
#include <xs.h>
 
1625
#include <stdint.h>
 
1626
#include <xen/hvm/hvm_info_table.h>
 
1627
#if !defined(HVM_MAX_VCPUS)
 
1628
# error HVM_MAX_VCPUS not defined
 
1629
#endif
 
1630
int main(void) {
 
1631
  struct xen_add_to_physmap xatp = {
 
1632
    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
 
1633
  };
 
1634
  xs_daemon_open();
 
1635
  xc_interface_open();
 
1636
  xc_gnttab_open();
 
1637
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
 
1638
  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
 
1639
  return 0;
 
1640
}
 
1641
EOF
 
1642
      compile_prog "" "$xen_libs"
 
1643
    then
 
1644
    xen_ctrl_version=400
 
1645
    xen=yes
 
1646
 
 
1647
  # Xen 3.4.0
 
1648
  elif
 
1649
      cat > $TMPC <<EOF &&
 
1650
#include <xenctrl.h>
 
1651
#include <xs.h>
 
1652
int main(void) {
 
1653
  struct xen_add_to_physmap xatp = {
 
1654
    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
 
1655
  };
 
1656
  xs_daemon_open();
 
1657
  xc_interface_open();
 
1658
  xc_gnttab_open();
 
1659
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
 
1660
  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
 
1661
  return 0;
 
1662
}
 
1663
EOF
 
1664
      compile_prog "" "$xen_libs"
 
1665
    then
 
1666
    xen_ctrl_version=340
 
1667
    xen=yes
 
1668
 
 
1669
  # Xen 3.3.0
 
1670
  elif
 
1671
      cat > $TMPC <<EOF &&
 
1672
#include <xenctrl.h>
 
1673
#include <xs.h>
 
1674
int main(void) {
 
1675
  xs_daemon_open();
 
1676
  xc_interface_open();
 
1677
  xc_gnttab_open();
 
1678
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
 
1679
  return 0;
 
1680
}
 
1681
EOF
 
1682
      compile_prog "" "$xen_libs"
 
1683
    then
 
1684
    xen_ctrl_version=330
 
1685
    xen=yes
 
1686
 
 
1687
  # Xen version unsupported
 
1688
  else
 
1689
    if test "$xen" = "yes" ; then
 
1690
      feature_not_found "xen (unsupported version)"
 
1691
    fi
 
1692
    xen=no
 
1693
  fi
 
1694
 
 
1695
  if test "$xen" = yes; then
 
1696
    libs_softmmu="$xen_libs $libs_softmmu"
 
1697
  fi
 
1698
fi
 
1699
 
 
1700
if test "$xen_pci_passthrough" != "no"; then
 
1701
  if test "$xen" = "yes" && test "$linux" = "yes" &&
 
1702
    test "$xen_ctrl_version" -ge 340; then
 
1703
    xen_pci_passthrough=yes
 
1704
  else
 
1705
    if test "$xen_pci_passthrough" = "yes"; then
 
1706
      if test "$xen_ctrl_version" -lt 340; then
 
1707
        error_exit "User requested feature Xen PCI Passthrough" \
 
1708
            "This feature does not work with Xen 3.3"
 
1709
      fi
 
1710
      error_exit "User requested feature Xen PCI Passthrough" \
 
1711
          " but this feature requires /sys from Linux"
 
1712
    fi
 
1713
    xen_pci_passthrough=no
 
1714
  fi
 
1715
fi
 
1716
 
 
1717
##########################################
 
1718
# libtool probe
 
1719
 
 
1720
if ! has $libtool; then
 
1721
    libtool=
 
1722
fi
 
1723
 
 
1724
# MacOSX ships with a libtool which isn't the GNU one; weed this
 
1725
# out by checking whether libtool supports the --version switch
 
1726
if test -n "$libtool"; then
 
1727
  if ! "$libtool" --version >/dev/null 2>&1; then
 
1728
    libtool=
 
1729
  fi
 
1730
fi
 
1731
 
 
1732
##########################################
 
1733
# Sparse probe
 
1734
if test "$sparse" != "no" ; then
 
1735
  if has cgcc; then
 
1736
    sparse=yes
 
1737
  else
 
1738
    if test "$sparse" = "yes" ; then
 
1739
      feature_not_found "sparse"
 
1740
    fi
 
1741
    sparse=no
 
1742
  fi
 
1743
fi
 
1744
 
 
1745
##########################################
 
1746
# GTK probe
 
1747
 
 
1748
if test "$gtk" != "no"; then
 
1749
    gtkpackage="gtk+-$gtkabi"
 
1750
    if test "$gtkabi" = "3.0" ; then
 
1751
      gtkversion="3.0.0"
 
1752
      vtepackage="vte-2.90"
 
1753
      vteversion="0.32.0"
 
1754
    else
 
1755
      gtkversion="2.18.0"
 
1756
      vtepackage="vte"
 
1757
      vteversion="0.24.0"
 
1758
    fi
 
1759
    if ! $pkg_config --exists "$gtkpackage >= $gtkversion"; then
 
1760
        if test "$gtk" = "yes" ; then
 
1761
            feature_not_found "gtk"
 
1762
        fi
 
1763
        gtk="no"
 
1764
    elif ! $pkg_config --exists "$vtepackage >= $vteversion"; then
 
1765
        if test "$gtk" = "yes" ; then
 
1766
            error_exit "libvte not found (required for gtk support)"
 
1767
        fi
 
1768
        gtk="no"
 
1769
    else
 
1770
        gtk_cflags=`$pkg_config --cflags $gtkpackage`
 
1771
        gtk_libs=`$pkg_config --libs $gtkpackage`
 
1772
        vte_cflags=`$pkg_config --cflags $vtepackage`
 
1773
        vte_libs=`$pkg_config --libs $vtepackage`
 
1774
        libs_softmmu="$gtk_libs $vte_libs $libs_softmmu"
 
1775
        gtk="yes"
 
1776
    fi
 
1777
fi
 
1778
 
 
1779
##########################################
 
1780
# SDL probe
 
1781
 
 
1782
# Look for sdl configuration program (pkg-config or sdl-config).  Try
 
1783
# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
 
1784
if test "`basename $sdl_config`" != sdl-config && ! has ${sdl_config}; then
 
1785
  sdl_config=sdl-config
 
1786
fi
 
1787
 
 
1788
if $pkg_config sdl --exists; then
 
1789
  sdlconfig="$pkg_config sdl"
 
1790
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
 
1791
elif has ${sdl_config}; then
 
1792
  sdlconfig="$sdl_config"
 
1793
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
 
1794
else
 
1795
  if test "$sdl" = "yes" ; then
 
1796
    feature_not_found "sdl"
 
1797
  fi
 
1798
  sdl=no
 
1799
fi
 
1800
if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
 
1801
  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
 
1802
fi
 
1803
 
 
1804
sdl_too_old=no
 
1805
if test "$sdl" != "no" ; then
 
1806
  cat > $TMPC << EOF
 
1807
#include <SDL.h>
 
1808
#undef main /* We don't want SDL to override our main() */
 
1809
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
 
1810
EOF
 
1811
  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
 
1812
  if test "$static" = "yes" ; then
 
1813
    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
 
1814
  else
 
1815
    sdl_libs=`$sdlconfig --libs 2> /dev/null`
 
1816
  fi
 
1817
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
 
1818
    if test "$_sdlversion" -lt 121 ; then
 
1819
      sdl_too_old=yes
 
1820
    else
 
1821
      if test "$cocoa" = "no" ; then
 
1822
        sdl=yes
 
1823
      fi
 
1824
    fi
 
1825
 
 
1826
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
 
1827
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
 
1828
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
 
1829
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
 
1830
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
 
1831
      fi
 
1832
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
 
1833
        :
 
1834
      else
 
1835
        sdl=no
 
1836
      fi
 
1837
    fi # static link
 
1838
  else # sdl not found
 
1839
    if test "$sdl" = "yes" ; then
 
1840
      feature_not_found "sdl"
 
1841
    fi
 
1842
    sdl=no
 
1843
  fi # sdl compile test
 
1844
fi
 
1845
 
 
1846
if test "$sdl" = "yes" ; then
 
1847
  cat > $TMPC <<EOF
 
1848
#include <SDL.h>
 
1849
#if defined(SDL_VIDEO_DRIVER_X11)
 
1850
#include <X11/XKBlib.h>
 
1851
#else
 
1852
#error No x11 support
 
1853
#endif
 
1854
int main(void) { return 0; }
 
1855
EOF
 
1856
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
 
1857
    sdl_libs="$sdl_libs -lX11"
 
1858
  fi
 
1859
  libs_softmmu="$sdl_libs $libs_softmmu"
 
1860
fi
 
1861
 
 
1862
##########################################
 
1863
# RDMA needs OpenFabrics libraries
 
1864
if test "$rdma" != "no" ; then
 
1865
  cat > $TMPC <<EOF
 
1866
#include <rdma/rdma_cma.h>
 
1867
int main(void) { return 0; }
 
1868
EOF
 
1869
  rdma_libs="-lrdmacm -libverbs"
 
1870
  if compile_prog "" "$rdma_libs" ; then
 
1871
    rdma="yes"
 
1872
    libs_softmmu="$libs_softmmu $rdma_libs"
 
1873
  else
 
1874
    if test "$rdma" = "yes" ; then
 
1875
        error_exit \
 
1876
            " OpenFabrics librdmacm/libibverbs not present." \
 
1877
            " Your options:" \
 
1878
            "  (1) Fast: Install infiniband packages from your distro." \
 
1879
            "  (2) Cleanest: Install libraries from www.openfabrics.org" \
 
1880
            "  (3) Also: Install softiwarp if you don't have RDMA hardware"
 
1881
    fi
 
1882
    rdma="no"
 
1883
  fi
 
1884
fi
 
1885
 
 
1886
##########################################
 
1887
# VNC TLS/WS detection
 
1888
if test "$vnc" = "yes" -a \( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \) ; then
 
1889
  cat > $TMPC <<EOF
 
1890
#include <gnutls/gnutls.h>
 
1891
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
 
1892
EOF
 
1893
  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
 
1894
  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
 
1895
  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
 
1896
    if test "$vnc_tls" != "no" ; then
 
1897
      vnc_tls=yes
 
1898
    fi
 
1899
    if test "$vnc_ws" != "no" ; then
 
1900
      vnc_ws=yes
 
1901
    fi
 
1902
    libs_softmmu="$vnc_tls_libs $libs_softmmu"
 
1903
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
 
1904
  else
 
1905
    if test "$vnc_tls" = "yes" ; then
 
1906
      feature_not_found "vnc-tls"
 
1907
    fi
 
1908
    if test "$vnc_ws" = "yes" ; then
 
1909
      feature_not_found "vnc-ws"
 
1910
    fi
 
1911
    vnc_tls=no
 
1912
    vnc_ws=no
 
1913
  fi
 
1914
fi
 
1915
 
 
1916
##########################################
 
1917
# VNC SASL detection
 
1918
if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
 
1919
  cat > $TMPC <<EOF
 
1920
#include <sasl/sasl.h>
 
1921
#include <stdio.h>
 
1922
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
 
1923
EOF
 
1924
  # Assuming Cyrus-SASL installed in /usr prefix
 
1925
  vnc_sasl_cflags=""
 
1926
  vnc_sasl_libs="-lsasl2"
 
1927
  if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
 
1928
    vnc_sasl=yes
 
1929
    libs_softmmu="$vnc_sasl_libs $libs_softmmu"
 
1930
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
 
1931
  else
 
1932
    if test "$vnc_sasl" = "yes" ; then
 
1933
      feature_not_found "vnc-sasl"
 
1934
    fi
 
1935
    vnc_sasl=no
 
1936
  fi
 
1937
fi
 
1938
 
 
1939
##########################################
 
1940
# VNC JPEG detection
 
1941
if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
 
1942
cat > $TMPC <<EOF
 
1943
#include <stdio.h>
 
1944
#include <jpeglib.h>
 
1945
int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
 
1946
EOF
 
1947
    vnc_jpeg_cflags=""
 
1948
    vnc_jpeg_libs="-ljpeg"
 
1949
  if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
 
1950
    vnc_jpeg=yes
 
1951
    libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
 
1952
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
 
1953
  else
 
1954
    if test "$vnc_jpeg" = "yes" ; then
 
1955
      feature_not_found "vnc-jpeg"
 
1956
    fi
 
1957
    vnc_jpeg=no
 
1958
  fi
 
1959
fi
 
1960
 
 
1961
##########################################
 
1962
# VNC PNG detection
 
1963
if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
 
1964
cat > $TMPC <<EOF
 
1965
//#include <stdio.h>
 
1966
#include <png.h>
 
1967
#include <stddef.h>
 
1968
int main(void) {
 
1969
    png_structp png_ptr;
 
1970
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
 
1971
    return png_ptr != 0;
 
1972
}
 
1973
EOF
 
1974
  if $pkg_config libpng --exists; then
 
1975
    vnc_png_cflags=`$pkg_config libpng --cflags`
 
1976
    vnc_png_libs=`$pkg_config libpng --libs`
 
1977
  else
 
1978
    vnc_png_cflags=""
 
1979
    vnc_png_libs="-lpng"
 
1980
  fi
 
1981
  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
 
1982
    vnc_png=yes
 
1983
    libs_softmmu="$vnc_png_libs $libs_softmmu"
 
1984
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
 
1985
  else
 
1986
    if test "$vnc_png" = "yes" ; then
 
1987
      feature_not_found "vnc-png"
 
1988
    fi
 
1989
    vnc_png=no
 
1990
  fi
 
1991
fi
 
1992
 
 
1993
##########################################
 
1994
# fnmatch() probe, used for ACL routines
 
1995
fnmatch="no"
 
1996
cat > $TMPC << EOF
 
1997
#include <fnmatch.h>
 
1998
int main(void)
 
1999
{
 
2000
    fnmatch("foo", "foo", 0);
 
2001
    return 0;
 
2002
}
 
2003
EOF
 
2004
if compile_prog "" "" ; then
 
2005
   fnmatch="yes"
 
2006
fi
 
2007
 
 
2008
##########################################
 
2009
# uuid_generate() probe, used for vdi block driver
 
2010
# Note that on some systems (notably MacOSX) no extra library
 
2011
# need be linked to get the uuid functions.
 
2012
if test "$uuid" != "no" ; then
 
2013
  uuid_libs="-luuid"
 
2014
  cat > $TMPC << EOF
 
2015
#include <uuid/uuid.h>
 
2016
int main(void)
 
2017
{
 
2018
    uuid_t my_uuid;
 
2019
    uuid_generate(my_uuid);
 
2020
    return 0;
 
2021
}
 
2022
EOF
 
2023
  if compile_prog "" "" ; then
 
2024
    uuid="yes"
 
2025
  elif compile_prog "" "$uuid_libs" ; then
 
2026
    uuid="yes"
 
2027
    libs_softmmu="$uuid_libs $libs_softmmu"
 
2028
    libs_tools="$uuid_libs $libs_tools"
 
2029
  else
 
2030
    if test "$uuid" = "yes" ; then
 
2031
      feature_not_found "uuid"
 
2032
    fi
 
2033
    uuid=no
 
2034
  fi
 
2035
fi
 
2036
 
 
2037
if test "$vhdx" = "yes" ; then
 
2038
    if test "$uuid" = "no" ; then
 
2039
        error_exit "uuid required for VHDX support"
 
2040
    fi
 
2041
elif test "$vhdx" != "no" ; then
 
2042
    if test "$uuid" = "yes" ; then
 
2043
        vhdx=yes
 
2044
    else
 
2045
        vhdx=no
 
2046
    fi
 
2047
fi
 
2048
 
 
2049
##########################################
 
2050
# xfsctl() probe, used for raw-posix
 
2051
if test "$xfs" != "no" ; then
 
2052
  cat > $TMPC << EOF
 
2053
#include <stddef.h>  /* NULL */
 
2054
#include <xfs/xfs.h>
 
2055
int main(void)
 
2056
{
 
2057
    xfsctl(NULL, 0, 0, NULL);
 
2058
    return 0;
 
2059
}
 
2060
EOF
 
2061
  if compile_prog "" "" ; then
 
2062
    xfs="yes"
 
2063
  else
 
2064
    if test "$xfs" = "yes" ; then
 
2065
      feature_not_found "xfs"
 
2066
    fi
 
2067
    xfs=no
 
2068
  fi
 
2069
fi
 
2070
 
 
2071
##########################################
 
2072
# vde libraries probe
 
2073
if test "$vde" != "no" ; then
 
2074
  vde_libs="-lvdeplug"
 
2075
  cat > $TMPC << EOF
 
2076
#include <libvdeplug.h>
 
2077
int main(void)
 
2078
{
 
2079
    struct vde_open_args a = {0, 0, 0};
 
2080
    char s[] = "";
 
2081
    vde_open(s, s, &a);
 
2082
    return 0;
 
2083
}
 
2084
EOF
 
2085
  if compile_prog "" "$vde_libs" ; then
 
2086
    vde=yes
 
2087
    libs_softmmu="$vde_libs $libs_softmmu"
 
2088
    libs_tools="$vde_libs $libs_tools"
 
2089
  else
 
2090
    if test "$vde" = "yes" ; then
 
2091
      feature_not_found "vde"
 
2092
    fi
 
2093
    vde=no
 
2094
  fi
 
2095
fi
 
2096
 
 
2097
##########################################
 
2098
# libcap-ng library probe
 
2099
if test "$cap_ng" != "no" ; then
 
2100
  cap_libs="-lcap-ng"
 
2101
  cat > $TMPC << EOF
 
2102
#include <cap-ng.h>
 
2103
int main(void)
 
2104
{
 
2105
    capng_capability_to_name(CAPNG_EFFECTIVE);
 
2106
    return 0;
 
2107
}
 
2108
EOF
 
2109
  if compile_prog "" "$cap_libs" ; then
 
2110
    cap_ng=yes
 
2111
    libs_tools="$cap_libs $libs_tools"
 
2112
  else
 
2113
    if test "$cap_ng" = "yes" ; then
 
2114
      feature_not_found "cap_ng"
 
2115
    fi
 
2116
    cap_ng=no
 
2117
  fi
 
2118
fi
 
2119
 
 
2120
##########################################
 
2121
# Sound support libraries probe
 
2122
 
 
2123
audio_drv_probe()
 
2124
{
 
2125
    drv=$1
 
2126
    hdr=$2
 
2127
    lib=$3
 
2128
    exp=$4
 
2129
    cfl=$5
 
2130
        cat > $TMPC << EOF
 
2131
#include <$hdr>
 
2132
int main(void) { $exp }
 
2133
EOF
 
2134
    if compile_prog "$cfl" "$lib" ; then
 
2135
        :
 
2136
    else
 
2137
        error_exit "$drv check failed" \
 
2138
            "Make sure to have the $drv libs and headers installed."
 
2139
    fi
 
2140
}
 
2141
 
 
2142
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
 
2143
for drv in $audio_drv_list; do
 
2144
    case $drv in
 
2145
    alsa)
 
2146
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
 
2147
        "return snd_pcm_close((snd_pcm_t *)0);"
 
2148
    libs_softmmu="-lasound $libs_softmmu"
 
2149
    ;;
 
2150
 
 
2151
    fmod)
 
2152
    if test -z $fmod_lib || test -z $fmod_inc; then
 
2153
        error_exit "You must specify path to FMOD library and headers" \
 
2154
            "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
 
2155
    fi
 
2156
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
 
2157
    libs_softmmu="$fmod_lib $libs_softmmu"
 
2158
    ;;
 
2159
 
 
2160
    esd)
 
2161
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
 
2162
    libs_softmmu="-lesd $libs_softmmu"
 
2163
    audio_pt_int="yes"
 
2164
    ;;
 
2165
 
 
2166
    pa)
 
2167
    audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
 
2168
        "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
 
2169
    libs_softmmu="-lpulse $libs_softmmu"
 
2170
    audio_pt_int="yes"
 
2171
    ;;
 
2172
 
 
2173
    coreaudio)
 
2174
      libs_softmmu="-framework CoreAudio $libs_softmmu"
 
2175
    ;;
 
2176
 
 
2177
    dsound)
 
2178
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
 
2179
      audio_win_int="yes"
 
2180
    ;;
 
2181
 
 
2182
    oss)
 
2183
      libs_softmmu="$oss_lib $libs_softmmu"
 
2184
    ;;
 
2185
 
 
2186
    sdl|wav)
 
2187
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
 
2188
    ;;
 
2189
 
 
2190
    winwave)
 
2191
      libs_softmmu="-lwinmm $libs_softmmu"
 
2192
      audio_win_int="yes"
 
2193
    ;;
 
2194
 
 
2195
    *)
 
2196
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
 
2197
        error_exit "Unknown driver '$drv' selected" \
 
2198
            "Possible drivers are: $audio_possible_drivers"
 
2199
    }
 
2200
    ;;
 
2201
    esac
 
2202
done
 
2203
 
 
2204
##########################################
 
2205
# BrlAPI probe
 
2206
 
 
2207
if test "$brlapi" != "no" ; then
 
2208
  brlapi_libs="-lbrlapi"
 
2209
  cat > $TMPC << EOF
 
2210
#include <brlapi.h>
 
2211
#include <stddef.h>
 
2212
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
 
2213
EOF
 
2214
  if compile_prog "" "$brlapi_libs" ; then
 
2215
    brlapi=yes
 
2216
    libs_softmmu="$brlapi_libs $libs_softmmu"
 
2217
  else
 
2218
    if test "$brlapi" = "yes" ; then
 
2219
      feature_not_found "brlapi"
 
2220
    fi
 
2221
    brlapi=no
 
2222
  fi
 
2223
fi
 
2224
 
 
2225
##########################################
 
2226
# curses probe
 
2227
if test "$curses" != "no" ; then
 
2228
  if test "$mingw32" = "yes" ; then
 
2229
    curses_list="-lpdcurses"
 
2230
  else
 
2231
    curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
 
2232
  fi
 
2233
  curses_found=no
 
2234
  cat > $TMPC << EOF
 
2235
#include <curses.h>
 
2236
int main(void) {
 
2237
  const char *s = curses_version();
 
2238
  resize_term(0, 0);
 
2239
  return s != 0;
 
2240
}
 
2241
EOF
 
2242
  IFS=:
 
2243
  for curses_lib in $curses_list; do
 
2244
    unset IFS
 
2245
    if compile_prog "" "$curses_lib" ; then
 
2246
      curses_found=yes
 
2247
      libs_softmmu="$curses_lib $libs_softmmu"
 
2248
      break
 
2249
    fi
 
2250
  done
 
2251
  unset IFS
 
2252
  if test "$curses_found" = "yes" ; then
 
2253
    curses=yes
 
2254
  else
 
2255
    if test "$curses" = "yes" ; then
 
2256
      feature_not_found "curses"
 
2257
    fi
 
2258
    curses=no
 
2259
  fi
 
2260
fi
 
2261
 
 
2262
##########################################
 
2263
# curl probe
 
2264
if test "$curl" != "no" ; then
 
2265
  if $pkg_config libcurl --exists; then
 
2266
    curlconfig="$pkg_config libcurl"
 
2267
  else
 
2268
    curlconfig=curl-config
 
2269
  fi
 
2270
  cat > $TMPC << EOF
 
2271
#include <curl/curl.h>
 
2272
int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
 
2273
EOF
 
2274
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
 
2275
  curl_libs=`$curlconfig --libs 2>/dev/null`
 
2276
  if compile_prog "$curl_cflags" "$curl_libs" ; then
 
2277
    curl=yes
 
2278
    libs_tools="$curl_libs $libs_tools"
 
2279
    libs_softmmu="$curl_libs $libs_softmmu"
 
2280
  else
 
2281
    if test "$curl" = "yes" ; then
 
2282
      feature_not_found "curl"
 
2283
    fi
 
2284
    curl=no
 
2285
  fi
 
2286
fi # test "$curl"
 
2287
 
 
2288
##########################################
 
2289
# bluez support probe
 
2290
if test "$bluez" != "no" ; then
 
2291
  cat > $TMPC << EOF
 
2292
#include <bluetooth/bluetooth.h>
 
2293
int main(void) { return bt_error(0); }
 
2294
EOF
 
2295
  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
 
2296
  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
 
2297
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
 
2298
    bluez=yes
 
2299
    libs_softmmu="$bluez_libs $libs_softmmu"
 
2300
  else
 
2301
    if test "$bluez" = "yes" ; then
 
2302
      feature_not_found "bluez"
 
2303
    fi
 
2304
    bluez="no"
 
2305
  fi
 
2306
fi
 
2307
 
 
2308
##########################################
 
2309
# glib support probe
 
2310
 
 
2311
if test "$mingw32" = yes; then
 
2312
    # g_poll is required in order to integrate with the glib main loop.
 
2313
    glib_req_ver=2.20
 
2314
else
 
2315
    glib_req_ver=2.12
 
2316
fi
 
2317
if $pkg_config --atleast-version=$glib_req_ver gthread-2.0; then
 
2318
    glib_cflags=`$pkg_config --cflags gthread-2.0`
 
2319
    glib_libs=`$pkg_config --libs gthread-2.0`
 
2320
    LIBS="$glib_libs $LIBS"
 
2321
    libs_qga="$glib_libs $libs_qga"
 
2322
else
 
2323
    error_exit "glib-$glib_req_ver required to compile QEMU"
 
2324
fi
 
2325
 
 
2326
##########################################
 
2327
# pixman support probe
 
2328
 
 
2329
if test "$pixman" = ""; then
 
2330
  if test "$want_tools" = "no" -a "$softmmu" = "no"; then
 
2331
    pixman="none"
 
2332
  elif $pkg_config pixman-1 > /dev/null 2>&1; then
 
2333
    pixman="system"
 
2334
  else
 
2335
    pixman="internal"
 
2336
  fi
 
2337
fi
 
2338
if test "$pixman" = "none"; then
 
2339
  if test "$want_tools" != "no" -o "$softmmu" != "no"; then
 
2340
    error_exit "pixman disabled but system emulation or tools build" \
 
2341
        "enabled.  You can turn off pixman only if you also" \
 
2342
        "disable all system emulation targets and the tools" \
 
2343
        "build with '--disable-tools --disable-system'."
 
2344
  fi
 
2345
  pixman_cflags=
 
2346
  pixman_libs=
 
2347
elif test "$pixman" = "system"; then
 
2348
  pixman_cflags=`$pkg_config --cflags pixman-1`
 
2349
  pixman_libs=`$pkg_config --libs pixman-1`
 
2350
else
 
2351
  if test ! -d ${source_path}/pixman/pixman; then
 
2352
    error_exit "pixman not present. Your options:" \
 
2353
        "  (1) Preferred: Install the pixman devel package (any recent" \
 
2354
        "      distro should have packages as Xorg needs pixman too)." \
 
2355
        "  (2) Fetch the pixman submodule, using:" \
 
2356
        "      git submodule update --init pixman"
 
2357
  fi
 
2358
  mkdir -p pixman/pixman
 
2359
  pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
 
2360
  pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
 
2361
fi
 
2362
 
 
2363
##########################################
 
2364
# libcap probe
 
2365
 
 
2366
if test "$cap" != "no" ; then
 
2367
  cat > $TMPC <<EOF
 
2368
#include <stdio.h>
 
2369
#include <sys/capability.h>
 
2370
int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
 
2371
EOF
 
2372
  if compile_prog "" "-lcap" ; then
 
2373
    cap=yes
 
2374
  else
 
2375
    cap=no
 
2376
  fi
 
2377
fi
 
2378
 
 
2379
##########################################
 
2380
# pthread probe
 
2381
PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
 
2382
 
 
2383
pthread=no
 
2384
cat > $TMPC << EOF
 
2385
#include <pthread.h>
 
2386
static void *f(void *p) { return NULL; }
 
2387
int main(void) {
 
2388
  pthread_t thread;
 
2389
  pthread_create(&thread, 0, f, 0);
 
2390
  return 0;
 
2391
}
 
2392
EOF
 
2393
if compile_prog "" "" ; then
 
2394
  pthread=yes
 
2395
else
 
2396
  for pthread_lib in $PTHREADLIBS_LIST; do
 
2397
    if compile_prog "" "$pthread_lib" ; then
 
2398
      pthread=yes
 
2399
      found=no
 
2400
      for lib_entry in $LIBS; do
 
2401
        if test "$lib_entry" = "$pthread_lib"; then
 
2402
          found=yes
 
2403
          break
 
2404
        fi
 
2405
      done
 
2406
      if test "$found" = "no"; then
 
2407
        LIBS="$pthread_lib $LIBS"
 
2408
      fi
 
2409
      break
 
2410
    fi
 
2411
  done
 
2412
fi
 
2413
 
 
2414
if test "$mingw32" != yes -a "$pthread" = no; then
 
2415
  error_exit "pthread check failed" \
 
2416
      "Make sure to have the pthread libs and headers installed."
 
2417
fi
 
2418
 
 
2419
##########################################
 
2420
# rbd probe
 
2421
if test "$rbd" != "no" ; then
 
2422
  cat > $TMPC <<EOF
 
2423
#include <stdio.h>
 
2424
#include <rbd/librbd.h>
 
2425
int main(void) {
 
2426
    rados_t cluster;
 
2427
    rados_create(&cluster, NULL);
 
2428
    return 0;
 
2429
}
 
2430
EOF
 
2431
  rbd_libs="-lrbd -lrados"
 
2432
  if compile_prog "" "$rbd_libs" ; then
 
2433
    rbd=yes
 
2434
    libs_tools="$rbd_libs $libs_tools"
 
2435
    libs_softmmu="$rbd_libs $libs_softmmu"
 
2436
  else
 
2437
    if test "$rbd" = "yes" ; then
 
2438
      feature_not_found "rados block device"
 
2439
    fi
 
2440
    rbd=no
 
2441
  fi
 
2442
fi
 
2443
 
 
2444
##########################################
 
2445
# libssh2 probe
 
2446
min_libssh2_version=1.2.8
 
2447
if test "$libssh2" != "no" ; then
 
2448
  if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
 
2449
    libssh2_cflags=`$pkg_config libssh2 --cflags`
 
2450
    libssh2_libs=`$pkg_config libssh2 --libs`
 
2451
    libssh2=yes
 
2452
    libs_tools="$libssh2_libs $libs_tools"
 
2453
    libs_softmmu="$libssh2_libs $libs_softmmu"
 
2454
    QEMU_CFLAGS="$QEMU_CFLAGS $libssh2_cflags"
 
2455
  else
 
2456
    if test "$libssh2" = "yes" ; then
 
2457
      error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
 
2458
    fi
 
2459
    libssh2=no
 
2460
  fi
 
2461
fi
 
2462
 
 
2463
##########################################
 
2464
# libssh2_sftp_fsync probe
 
2465
 
 
2466
if test "$libssh2" = "yes"; then
 
2467
  cat > $TMPC <<EOF
 
2468
#include <stdio.h>
 
2469
#include <libssh2.h>
 
2470
#include <libssh2_sftp.h>
 
2471
int main(void) {
 
2472
    LIBSSH2_SESSION *session;
 
2473
    LIBSSH2_SFTP *sftp;
 
2474
    LIBSSH2_SFTP_HANDLE *sftp_handle;
 
2475
    session = libssh2_session_init ();
 
2476
    sftp = libssh2_sftp_init (session);
 
2477
    sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
 
2478
    libssh2_sftp_fsync (sftp_handle);
 
2479
    return 0;
 
2480
}
 
2481
EOF
 
2482
  # libssh2_cflags/libssh2_libs defined in previous test.
 
2483
  if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
 
2484
    QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
 
2485
  fi
 
2486
fi
 
2487
 
 
2488
##########################################
 
2489
# linux-aio probe
 
2490
 
 
2491
if test "$linux_aio" != "no" ; then
 
2492
  cat > $TMPC <<EOF
 
2493
#include <libaio.h>
 
2494
#include <sys/eventfd.h>
 
2495
#include <stddef.h>
 
2496
int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
 
2497
EOF
 
2498
  if compile_prog "" "-laio" ; then
 
2499
    linux_aio=yes
 
2500
    libs_softmmu="$libs_softmmu -laio"
 
2501
    libs_tools="$libs_tools -laio"
 
2502
  else
 
2503
    if test "$linux_aio" = "yes" ; then
 
2504
      feature_not_found "linux AIO"
 
2505
    fi
 
2506
    linux_aio=no
 
2507
  fi
 
2508
fi
 
2509
 
 
2510
##########################################
 
2511
# TPM passthrough is only on x86 Linux
 
2512
 
 
2513
if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
 
2514
  tpm_passthrough=$tpm
 
2515
else
 
2516
  tpm_passthrough=no
 
2517
fi
 
2518
 
 
2519
##########################################
 
2520
# adjust virtio-blk-data-plane based on linux-aio
 
2521
 
 
2522
if test "$virtio_blk_data_plane" = "yes" -a \
 
2523
        "$linux_aio" != "yes" ; then
 
2524
  error_exit "virtio-blk-data-plane requires Linux AIO, please try --enable-linux-aio"
 
2525
elif test -z "$virtio_blk_data_plane" ; then
 
2526
  virtio_blk_data_plane=$linux_aio
 
2527
fi
 
2528
 
 
2529
##########################################
 
2530
# attr probe
 
2531
 
 
2532
if test "$attr" != "no" ; then
 
2533
  cat > $TMPC <<EOF
 
2534
#include <stdio.h>
 
2535
#include <sys/types.h>
 
2536
#ifdef CONFIG_LIBATTR
 
2537
#include <attr/xattr.h>
 
2538
#else
 
2539
#include <sys/xattr.h>
 
2540
#endif
 
2541
int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
 
2542
EOF
 
2543
  if compile_prog "" "" ; then
 
2544
    attr=yes
 
2545
  # Older distros have <attr/xattr.h>, and need -lattr:
 
2546
  elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
 
2547
    attr=yes
 
2548
    LIBS="-lattr $LIBS"
 
2549
    libattr=yes
 
2550
  else
 
2551
    if test "$attr" = "yes" ; then
 
2552
      feature_not_found "ATTR"
 
2553
    fi
 
2554
    attr=no
 
2555
  fi
 
2556
fi
 
2557
 
 
2558
##########################################
 
2559
# iovec probe
 
2560
cat > $TMPC <<EOF
 
2561
#include <sys/types.h>
 
2562
#include <sys/uio.h>
 
2563
#include <unistd.h>
 
2564
int main(void) { return sizeof(struct iovec); }
 
2565
EOF
 
2566
iovec=no
 
2567
if compile_prog "" "" ; then
 
2568
  iovec=yes
 
2569
fi
 
2570
 
 
2571
##########################################
 
2572
# preadv probe
 
2573
cat > $TMPC <<EOF
 
2574
#include <sys/types.h>
 
2575
#include <sys/uio.h>
 
2576
#include <unistd.h>
 
2577
int main(void) { return preadv(0, 0, 0, 0); }
 
2578
EOF
 
2579
preadv=no
 
2580
if compile_prog "" "" ; then
 
2581
  preadv=yes
 
2582
fi
 
2583
 
 
2584
##########################################
 
2585
# fdt probe
 
2586
# fdt support is mandatory for at least some target architectures,
 
2587
# so insist on it if we're building those system emulators.
 
2588
fdt_required=no
 
2589
for target in $target_list; do
 
2590
  case $target in
 
2591
    aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
 
2592
      fdt_required=yes
 
2593
    ;;
 
2594
  esac
 
2595
done
 
2596
 
 
2597
if test "$fdt_required" = "yes"; then
 
2598
  if test "$fdt" = "no"; then
 
2599
    error_exit "fdt disabled but some requested targets require it." \
 
2600
      "You can turn off fdt only if you also disable all the system emulation" \
 
2601
      "targets which need it (by specifying a cut down --target-list)."
 
2602
  fi
 
2603
  fdt=yes
 
2604
fi
 
2605
 
 
2606
if test "$fdt" != "no" ; then
 
2607
  fdt_libs="-lfdt"
 
2608
  # explicitly check for libfdt_env.h as it is missing in some stable installs
 
2609
  cat > $TMPC << EOF
 
2610
#include <libfdt_env.h>
 
2611
int main(void) { return 0; }
 
2612
EOF
 
2613
  if compile_prog "" "$fdt_libs" ; then
 
2614
    # system DTC is good - use it
 
2615
    fdt=yes
 
2616
  elif test -d ${source_path}/dtc/libfdt ; then
 
2617
    # have submodule DTC - use it
 
2618
    fdt=yes
 
2619
    dtc_internal="yes"
 
2620
    mkdir -p dtc
 
2621
    if [ "$source_path" != `pwd` ] ; then
 
2622
       symlink "$source_path/dtc/Makefile" "dtc/Makefile"
 
2623
       symlink "$source_path/dtc/scripts" "dtc/scripts"
 
2624
    fi
 
2625
    fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
 
2626
    fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
 
2627
  elif test "$fdt" = "yes" ; then
 
2628
    # have neither and want - prompt for system/submodule install
 
2629
    error_exit "DTC not present. Your options:" \
 
2630
        "  (1) Preferred: Install the DTC devel package" \
 
2631
        "  (2) Fetch the DTC submodule, using:" \
 
2632
        "      git submodule update --init dtc"
 
2633
  else
 
2634
    # don't have and don't want
 
2635
    fdt_libs=
 
2636
    fdt=no
 
2637
  fi
 
2638
fi
 
2639
 
 
2640
libs_softmmu="$libs_softmmu $fdt_libs"
 
2641
 
 
2642
##########################################
 
2643
# GLX probe, used by milkymist-tmu2
 
2644
if test "$glx" != "no" ; then
 
2645
  glx_libs="-lGL -lX11"
 
2646
  cat > $TMPC << EOF
 
2647
#include <X11/Xlib.h>
 
2648
#include <GL/gl.h>
 
2649
#include <GL/glx.h>
 
2650
int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
 
2651
EOF
 
2652
  if compile_prog "" "-lGL -lX11" ; then
 
2653
    glx=yes
 
2654
  else
 
2655
    if test "$glx" = "yes" ; then
 
2656
      feature_not_found "glx"
 
2657
    fi
 
2658
    glx_libs=
 
2659
    glx=no
 
2660
  fi
 
2661
fi
 
2662
 
 
2663
##########################################
 
2664
# glusterfs probe
 
2665
if test "$glusterfs" != "no" ; then
 
2666
  if $pkg_config --atleast-version=3 glusterfs-api; then
 
2667
    glusterfs="yes"
 
2668
    glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
 
2669
    glusterfs_libs=`$pkg_config --libs glusterfs-api`
 
2670
    CFLAGS="$CFLAGS $glusterfs_cflags"
 
2671
    libs_tools="$glusterfs_libs $libs_tools"
 
2672
    libs_softmmu="$glusterfs_libs $libs_softmmu"
 
2673
    if $pkg_config --atleast-version=5 glusterfs-api; then
 
2674
      glusterfs_discard="yes"
 
2675
    fi
 
2676
  else
 
2677
    if test "$glusterfs" = "yes" ; then
 
2678
      feature_not_found "GlusterFS backend support"
 
2679
    fi
 
2680
    glusterfs="no"
 
2681
  fi
 
2682
fi
 
2683
 
 
2684
# Check for inotify functions when we are building linux-user
 
2685
# emulator.  This is done because older glibc versions don't
 
2686
# have syscall stubs for these implemented.  In that case we
 
2687
# don't provide them even if kernel supports them.
 
2688
#
 
2689
inotify=no
 
2690
cat > $TMPC << EOF
 
2691
#include <sys/inotify.h>
 
2692
 
 
2693
int
 
2694
main(void)
 
2695
{
 
2696
        /* try to start inotify */
 
2697
        return inotify_init();
 
2698
}
 
2699
EOF
 
2700
if compile_prog "" "" ; then
 
2701
  inotify=yes
 
2702
fi
 
2703
 
 
2704
inotify1=no
 
2705
cat > $TMPC << EOF
 
2706
#include <sys/inotify.h>
 
2707
 
 
2708
int
 
2709
main(void)
 
2710
{
 
2711
    /* try to start inotify */
 
2712
    return inotify_init1(0);
 
2713
}
 
2714
EOF
 
2715
if compile_prog "" "" ; then
 
2716
  inotify1=yes
 
2717
fi
 
2718
 
 
2719
# check if utimensat and futimens are supported
 
2720
utimens=no
 
2721
cat > $TMPC << EOF
 
2722
#define _ATFILE_SOURCE
 
2723
#include <stddef.h>
 
2724
#include <fcntl.h>
 
2725
#include <sys/stat.h>
 
2726
 
 
2727
#if defined __stub_futimens || defined __stub___futimens
 
2728
choke me
 
2729
#endif
 
2730
 
 
2731
#if defined __stub_utimensat || defined __stub___utimensat
 
2732
choke me
 
2733
#endif
 
2734
 
 
2735
int main(void)
 
2736
{
 
2737
    utimensat(AT_FDCWD, "foo", NULL, 0);
 
2738
    futimens(0, NULL);
 
2739
    return 0;
 
2740
}
 
2741
EOF
 
2742
if compile_prog "" "" ; then
 
2743
  utimens=yes
 
2744
fi
 
2745
 
 
2746
# check if pipe2 is there
 
2747
pipe2=no
 
2748
cat > $TMPC << EOF
 
2749
#include <unistd.h>
 
2750
#include <fcntl.h>
 
2751
 
 
2752
int main(void)
 
2753
{
 
2754
    int pipefd[2];
 
2755
    return pipe2(pipefd, O_CLOEXEC);
 
2756
}
 
2757
EOF
 
2758
if compile_prog "" "" ; then
 
2759
  pipe2=yes
 
2760
fi
 
2761
 
 
2762
# check if accept4 is there
 
2763
accept4=no
 
2764
cat > $TMPC << EOF
 
2765
#include <sys/socket.h>
 
2766
#include <stddef.h>
 
2767
 
 
2768
int main(void)
 
2769
{
 
2770
    accept4(0, NULL, NULL, SOCK_CLOEXEC);
 
2771
    return 0;
 
2772
}
 
2773
EOF
 
2774
if compile_prog "" "" ; then
 
2775
  accept4=yes
 
2776
fi
 
2777
 
 
2778
# check if tee/splice is there. vmsplice was added same time.
 
2779
splice=no
 
2780
cat > $TMPC << EOF
 
2781
#include <unistd.h>
 
2782
#include <fcntl.h>
 
2783
#include <limits.h>
 
2784
 
 
2785
int main(void)
 
2786
{
 
2787
    int len, fd = 0;
 
2788
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
 
2789
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
 
2790
    return 0;
 
2791
}
 
2792
EOF
 
2793
if compile_prog "" "" ; then
 
2794
  splice=yes
 
2795
fi
 
2796
 
 
2797
##########################################
 
2798
# signalfd probe
 
2799
signalfd="no"
 
2800
cat > $TMPC << EOF
 
2801
#include <unistd.h>
 
2802
#include <sys/syscall.h>
 
2803
#include <signal.h>
 
2804
int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
 
2805
EOF
 
2806
 
 
2807
if compile_prog "" "" ; then
 
2808
  signalfd=yes
 
2809
fi
 
2810
 
 
2811
# check if eventfd is supported
 
2812
eventfd=no
 
2813
cat > $TMPC << EOF
 
2814
#include <sys/eventfd.h>
 
2815
 
 
2816
int main(void)
 
2817
{
 
2818
    return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
 
2819
}
 
2820
EOF
 
2821
if compile_prog "" "" ; then
 
2822
  eventfd=yes
 
2823
fi
 
2824
 
 
2825
# check for fallocate
 
2826
fallocate=no
 
2827
cat > $TMPC << EOF
 
2828
#include <fcntl.h>
 
2829
 
 
2830
int main(void)
 
2831
{
 
2832
    fallocate(0, 0, 0, 0);
 
2833
    return 0;
 
2834
}
 
2835
EOF
 
2836
if compile_prog "" "" ; then
 
2837
  fallocate=yes
 
2838
fi
 
2839
 
 
2840
# check for fallocate hole punching
 
2841
fallocate_punch_hole=no
 
2842
cat > $TMPC << EOF
 
2843
#include <fcntl.h>
 
2844
#include <linux/falloc.h>
 
2845
 
 
2846
int main(void)
 
2847
{
 
2848
    fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
 
2849
    return 0;
 
2850
}
 
2851
EOF
 
2852
if compile_prog "" "" ; then
 
2853
  fallocate_punch_hole=yes
 
2854
fi
 
2855
 
 
2856
# check for sync_file_range
 
2857
sync_file_range=no
 
2858
cat > $TMPC << EOF
 
2859
#include <fcntl.h>
 
2860
 
 
2861
int main(void)
 
2862
{
 
2863
    sync_file_range(0, 0, 0, 0);
 
2864
    return 0;
 
2865
}
 
2866
EOF
 
2867
if compile_prog "" "" ; then
 
2868
  sync_file_range=yes
 
2869
fi
 
2870
 
 
2871
# check for linux/fiemap.h and FS_IOC_FIEMAP
 
2872
fiemap=no
 
2873
cat > $TMPC << EOF
 
2874
#include <sys/ioctl.h>
 
2875
#include <linux/fs.h>
 
2876
#include <linux/fiemap.h>
 
2877
 
 
2878
int main(void)
 
2879
{
 
2880
    ioctl(0, FS_IOC_FIEMAP, 0);
 
2881
    return 0;
 
2882
}
 
2883
EOF
 
2884
if compile_prog "" "" ; then
 
2885
  fiemap=yes
 
2886
fi
 
2887
 
 
2888
# check for dup3
 
2889
dup3=no
 
2890
cat > $TMPC << EOF
 
2891
#include <unistd.h>
 
2892
 
 
2893
int main(void)
 
2894
{
 
2895
    dup3(0, 0, 0);
 
2896
    return 0;
 
2897
}
 
2898
EOF
 
2899
if compile_prog "" "" ; then
 
2900
  dup3=yes
 
2901
fi
 
2902
 
 
2903
# check for ppoll support
 
2904
ppoll=no
 
2905
cat > $TMPC << EOF
 
2906
#include <poll.h>
 
2907
 
 
2908
int main(void)
 
2909
{
 
2910
    struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
 
2911
    ppoll(&pfd, 1, 0, 0);
 
2912
    return 0;
 
2913
}
 
2914
EOF
 
2915
if compile_prog "" "" ; then
 
2916
  ppoll=yes
 
2917
fi
 
2918
 
 
2919
# check for prctl(PR_SET_TIMERSLACK , ... ) support
 
2920
prctl_pr_set_timerslack=no
 
2921
cat > $TMPC << EOF
 
2922
#include <sys/prctl.h>
 
2923
 
 
2924
int main(void)
 
2925
{
 
2926
    prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
 
2927
    return 0;
 
2928
}
 
2929
EOF
 
2930
if compile_prog "" "" ; then
 
2931
  prctl_pr_set_timerslack=yes
 
2932
fi
 
2933
 
 
2934
# check for epoll support
 
2935
epoll=no
 
2936
cat > $TMPC << EOF
 
2937
#include <sys/epoll.h>
 
2938
 
 
2939
int main(void)
 
2940
{
 
2941
    epoll_create(0);
 
2942
    return 0;
 
2943
}
 
2944
EOF
 
2945
if compile_prog "" "" ; then
 
2946
  epoll=yes
 
2947
fi
 
2948
 
 
2949
# epoll_create1 and epoll_pwait are later additions
 
2950
# so we must check separately for their presence
 
2951
epoll_create1=no
 
2952
cat > $TMPC << EOF
 
2953
#include <sys/epoll.h>
 
2954
 
 
2955
int main(void)
 
2956
{
 
2957
    /* Note that we use epoll_create1 as a value, not as
 
2958
     * a function being called. This is necessary so that on
 
2959
     * old SPARC glibc versions where the function was present in
 
2960
     * the library but not declared in the header file we will
 
2961
     * fail the configure check. (Otherwise we will get a compiler
 
2962
     * warning but not an error, and will proceed to fail the
 
2963
     * qemu compile where we compile with -Werror.)
 
2964
     */
 
2965
    return (int)(uintptr_t)&epoll_create1;
 
2966
}
 
2967
EOF
 
2968
if compile_prog "" "" ; then
 
2969
  epoll_create1=yes
 
2970
fi
 
2971
 
 
2972
epoll_pwait=no
 
2973
cat > $TMPC << EOF
 
2974
#include <sys/epoll.h>
 
2975
 
 
2976
int main(void)
 
2977
{
 
2978
    epoll_pwait(0, 0, 0, 0, 0);
 
2979
    return 0;
 
2980
}
 
2981
EOF
 
2982
if compile_prog "" "" ; then
 
2983
  epoll_pwait=yes
 
2984
fi
 
2985
 
 
2986
# check for sendfile support
 
2987
sendfile=no
 
2988
cat > $TMPC << EOF
 
2989
#include <sys/sendfile.h>
 
2990
 
 
2991
int main(void)
 
2992
{
 
2993
    return sendfile(0, 0, 0, 0);
 
2994
}
 
2995
EOF
 
2996
if compile_prog "" "" ; then
 
2997
  sendfile=yes
 
2998
fi
 
2999
 
 
3000
# Check if tools are available to build documentation.
 
3001
if test "$docs" != "no" ; then
 
3002
  if has makeinfo && has pod2man; then
 
3003
    docs=yes
 
3004
  else
 
3005
    if test "$docs" = "yes" ; then
 
3006
      feature_not_found "docs"
 
3007
    fi
 
3008
    docs=no
 
3009
  fi
 
3010
fi
 
3011
 
 
3012
# Search for bswap_32 function
 
3013
byteswap_h=no
 
3014
cat > $TMPC << EOF
 
3015
#include <byteswap.h>
 
3016
int main(void) { return bswap_32(0); }
 
3017
EOF
 
3018
if compile_prog "" "" ; then
 
3019
  byteswap_h=yes
 
3020
fi
 
3021
 
 
3022
# Search for bswap32 function
 
3023
bswap_h=no
 
3024
cat > $TMPC << EOF
 
3025
#include <sys/endian.h>
 
3026
#include <sys/types.h>
 
3027
#include <machine/bswap.h>
 
3028
int main(void) { return bswap32(0); }
 
3029
EOF
 
3030
if compile_prog "" "" ; then
 
3031
  bswap_h=yes
 
3032
fi
 
3033
 
 
3034
##########################################
 
3035
# Do we have libiscsi
 
3036
# We check for iscsi_unmap_sync() to make sure we have a
 
3037
# recent enough version of libiscsi.
 
3038
if test "$libiscsi" != "no" ; then
 
3039
  cat > $TMPC << EOF
 
3040
#include <stdio.h>
 
3041
#include <iscsi/iscsi.h>
 
3042
int main(void) { iscsi_unmap_sync(NULL,0,0,0,NULL,0); return 0; }
 
3043
EOF
 
3044
  if $pkg_config --atleast-version=1.7.0 libiscsi; then
 
3045
    libiscsi="yes"
 
3046
    libiscsi_cflags=$($pkg_config --cflags libiscsi)
 
3047
    libiscsi_libs=$($pkg_config --libs libiscsi)
 
3048
    CFLAGS="$CFLAGS $libiscsi_cflags"
 
3049
    LIBS="$LIBS $libiscsi_libs"
 
3050
  elif compile_prog "" "-liscsi" ; then
 
3051
    libiscsi="yes"
 
3052
    LIBS="$LIBS -liscsi"
 
3053
  else
 
3054
    if test "$libiscsi" = "yes" ; then
 
3055
      feature_not_found "libiscsi"
 
3056
    fi
 
3057
    libiscsi="no"
 
3058
  fi
 
3059
fi
 
3060
 
 
3061
 
 
3062
##########################################
 
3063
# Do we need libm
 
3064
cat > $TMPC << EOF
 
3065
#include <math.h>
 
3066
int main(void) { return isnan(sin(0.0)); }
 
3067
EOF
 
3068
if compile_prog "" "" ; then
 
3069
  :
 
3070
elif compile_prog "" "-lm" ; then
 
3071
  LIBS="-lm $LIBS"
 
3072
  libs_qga="-lm $libs_qga"
 
3073
else
 
3074
  error_exit "libm check failed"
 
3075
fi
 
3076
 
 
3077
##########################################
 
3078
# Do we need librt
 
3079
# uClibc provides 2 versions of clock_gettime(), one with realtime
 
3080
# support and one without. This means that the clock_gettime() don't
 
3081
# need -lrt. We still need it for timer_create() so we check for this
 
3082
# function in addition.
 
3083
cat > $TMPC <<EOF
 
3084
#include <signal.h>
 
3085
#include <time.h>
 
3086
int main(void) {
 
3087
  timer_create(CLOCK_REALTIME, NULL, NULL);
 
3088
  return clock_gettime(CLOCK_REALTIME, NULL);
 
3089
}
 
3090
EOF
 
3091
 
 
3092
if compile_prog "" "" ; then
 
3093
  :
 
3094
# we need pthread for static linking. use previous pthread test result
 
3095
elif compile_prog "" "-lrt $pthread_lib" ; then
 
3096
  LIBS="-lrt $LIBS"
 
3097
  libs_qga="-lrt $libs_qga"
 
3098
fi
 
3099
 
 
3100
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
 
3101
        "$aix" != "yes" -a "$haiku" != "yes" ; then
 
3102
    libs_softmmu="-lutil $libs_softmmu"
 
3103
fi
 
3104
 
 
3105
##########################################
 
3106
# spice probe
 
3107
if test "$spice" != "no" ; then
 
3108
  cat > $TMPC << EOF
 
3109
#include <spice.h>
 
3110
int main(void) { spice_server_new(); return 0; }
 
3111
EOF
 
3112
  spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
 
3113
  spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
 
3114
  if $pkg_config --atleast-version=0.12.0 spice-server && \
 
3115
     $pkg_config --atleast-version=0.12.3 spice-protocol && \
 
3116
     compile_prog "$spice_cflags" "$spice_libs" ; then
 
3117
    spice="yes"
 
3118
    libs_softmmu="$libs_softmmu $spice_libs"
 
3119
    QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
 
3120
    spice_protocol_version=$($pkg_config --modversion spice-protocol)
 
3121
    spice_server_version=$($pkg_config --modversion spice-server)
 
3122
  else
 
3123
    if test "$spice" = "yes" ; then
 
3124
      feature_not_found "spice"
 
3125
    fi
 
3126
    spice="no"
 
3127
  fi
 
3128
fi
 
3129
 
 
3130
# check for libcacard for smartcard support
 
3131
smartcard_cflags=""
 
3132
# TODO - what's the minimal nss version we support?
 
3133
if test "$smartcard_nss" != "no"; then
 
3134
  cat > $TMPC << EOF
 
3135
#include <pk11pub.h>
 
3136
int main(void) { PK11_FreeSlot(0); return 0; }
 
3137
EOF
 
3138
    smartcard_includes="-I\$(SRC_PATH)/libcacard"
 
3139
    libcacard_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
 
3140
    libcacard_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
 
3141
    test_cflags="$libcacard_cflags"
 
3142
    # The header files in nss < 3.13.3 have a bug which causes them to
 
3143
    # emit a warning. If we're going to compile QEMU with -Werror, then
 
3144
    # test that the headers don't have this bug. Otherwise we would pass
 
3145
    # the configure test but fail to compile QEMU later.
 
3146
    if test "$werror" = "yes"; then
 
3147
        test_cflags="-Werror $test_cflags"
 
3148
    fi
 
3149
    if test -n "$libtool" &&
 
3150
       $pkg_config --atleast-version=3.12.8 nss && \
 
3151
      compile_prog "$test_cflags" "$libcacard_libs"; then
 
3152
        smartcard_nss="yes"
 
3153
        QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
 
3154
        QEMU_INCLUDES="$QEMU_INCLUDES $smartcard_includes"
 
3155
        libs_softmmu="$libcacard_libs $libs_softmmu"
 
3156
    else
 
3157
        if test "$smartcard_nss" = "yes"; then
 
3158
            feature_not_found "nss"
 
3159
        fi
 
3160
        smartcard_nss="no"
 
3161
    fi
 
3162
fi
 
3163
 
 
3164
# check for libusb
 
3165
if test "$libusb" != "no" ; then
 
3166
    if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
 
3167
        libusb="yes"
 
3168
        libusb_cflags=$($pkg_config --cflags libusb-1.0)
 
3169
        libusb_libs=$($pkg_config --libs libusb-1.0)
 
3170
        QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
 
3171
        libs_softmmu="$libs_softmmu $libusb_libs"
 
3172
    else
 
3173
        if test "$libusb" = "yes"; then
 
3174
            feature_not_found "libusb"
 
3175
        fi
 
3176
        libusb="no"
 
3177
    fi
 
3178
fi
 
3179
 
 
3180
# check for usbredirparser for usb network redirection support
 
3181
if test "$usb_redir" != "no" ; then
 
3182
    if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
 
3183
        usb_redir="yes"
 
3184
        usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
 
3185
        usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
 
3186
        QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
 
3187
        libs_softmmu="$libs_softmmu $usb_redir_libs"
 
3188
    else
 
3189
        if test "$usb_redir" = "yes"; then
 
3190
            feature_not_found "usb-redir"
 
3191
        fi
 
3192
        usb_redir="no"
 
3193
    fi
 
3194
fi
 
3195
 
 
3196
##########################################
 
3197
# check if we have VSS SDK headers for win
 
3198
 
 
3199
if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
 
3200
  case "$vss_win32_sdk" in
 
3201
    "")   vss_win32_include="-I$source_path" ;;
 
3202
    *\ *) # The SDK is installed in "Program Files" by default, but we cannot
 
3203
          # handle path with spaces. So we symlink the headers into ".sdk/vss".
 
3204
          vss_win32_include="-I$source_path/.sdk/vss"
 
3205
          symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
 
3206
          ;;
 
3207
    *)    vss_win32_include="-I$vss_win32_sdk"
 
3208
  esac
 
3209
  cat > $TMPC << EOF
 
3210
#define __MIDL_user_allocate_free_DEFINED__
 
3211
#include <inc/win2003/vss.h>
 
3212
int main(void) { return VSS_CTX_BACKUP; }
 
3213
EOF
 
3214
  if compile_prog "$vss_win32_include" "" ; then
 
3215
    guest_agent_with_vss="yes"
 
3216
    QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
 
3217
    libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
 
3218
  else
 
3219
    if test "$vss_win32_sdk" != "" ; then
 
3220
      echo "ERROR: Please download and install Microsoft VSS SDK:"
 
3221
      echo "ERROR:   http://www.microsoft.com/en-us/download/details.aspx?id=23490"
 
3222
      echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
 
3223
      echo "ERROR:   scripts/extract-vsssdk-headers setup.exe"
 
3224
      echo "ERROR: The headers are extracted in the directory \`inc'."
 
3225
      feature_not_found "VSS support"
 
3226
    fi
 
3227
    guest_agent_with_vss="no"
 
3228
  fi
 
3229
fi
 
3230
 
 
3231
##########################################
 
3232
# lookup Windows platform SDK (if not specified)
 
3233
# The SDK is needed only to build .tlb (type library) file of guest agent
 
3234
# VSS provider from the source. It is usually unnecessary because the
 
3235
# pre-compiled .tlb file is included.
 
3236
 
 
3237
if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
 
3238
  if test -z "$win_sdk"; then
 
3239
    programfiles="$PROGRAMFILES"
 
3240
    test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
 
3241
    if test -n "$programfiles"; then
 
3242
      win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
 
3243
    else
 
3244
      feature_not_found "Windows SDK"
 
3245
    fi
 
3246
  elif test "$win_sdk" = "no"; then
 
3247
    win_sdk=""
 
3248
  fi
 
3249
fi
 
3250
 
 
3251
##########################################
 
3252
 
 
3253
##########################################
 
3254
# check if we have fdatasync
 
3255
 
 
3256
fdatasync=no
 
3257
cat > $TMPC << EOF
 
3258
#include <unistd.h>
 
3259
int main(void) {
 
3260
#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
 
3261
return fdatasync(0);
 
3262
#else
 
3263
#error Not supported
 
3264
#endif
 
3265
}
 
3266
EOF
 
3267
if compile_prog "" "" ; then
 
3268
    fdatasync=yes
 
3269
fi
 
3270
 
 
3271
##########################################
 
3272
# check if we have madvise
 
3273
 
 
3274
madvise=no
 
3275
cat > $TMPC << EOF
 
3276
#include <sys/types.h>
 
3277
#include <sys/mman.h>
 
3278
#include <stddef.h>
 
3279
int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
 
3280
EOF
 
3281
if compile_prog "" "" ; then
 
3282
    madvise=yes
 
3283
fi
 
3284
 
 
3285
##########################################
 
3286
# check if we have posix_madvise
 
3287
 
 
3288
posix_madvise=no
 
3289
cat > $TMPC << EOF
 
3290
#include <sys/mman.h>
 
3291
#include <stddef.h>
 
3292
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
 
3293
EOF
 
3294
if compile_prog "" "" ; then
 
3295
    posix_madvise=yes
 
3296
fi
 
3297
 
 
3298
##########################################
 
3299
# check if we have usable SIGEV_THREAD_ID
 
3300
 
 
3301
sigev_thread_id=no
 
3302
cat > $TMPC << EOF
 
3303
#include <signal.h>
 
3304
int main(void) {
 
3305
  struct sigevent ev;
 
3306
  ev.sigev_notify = SIGEV_THREAD_ID;
 
3307
  ev._sigev_un._tid = 0;
 
3308
  asm volatile("" : : "g"(&ev));
 
3309
  return 0;
 
3310
}
 
3311
EOF
 
3312
if compile_prog "" "" ; then
 
3313
    sigev_thread_id=yes
 
3314
fi
 
3315
 
 
3316
##########################################
 
3317
# check if trace backend exists
 
3318
 
 
3319
$python "$source_path/scripts/tracetool.py" "--backend=$trace_backend" --check-backend  > /dev/null 2> /dev/null
 
3320
if test "$?" -ne 0 ; then
 
3321
  error_exit "invalid trace backend" \
 
3322
      "Please choose a supported trace backend."
 
3323
fi
 
3324
 
 
3325
##########################################
 
3326
# For 'ust' backend, test if ust headers are present
 
3327
if test "$trace_backend" = "ust"; then
 
3328
  cat > $TMPC << EOF
 
3329
#include <ust/tracepoint.h>
 
3330
#include <ust/marker.h>
 
3331
int main(void) { return 0; }
 
3332
EOF
 
3333
  if compile_prog "" "" ; then
 
3334
    LIBS="-lust -lurcu-bp $LIBS"
 
3335
    libs_qga="-lust -lurcu-bp $libs_qga"
 
3336
  else
 
3337
    error_exit "Trace backend 'ust' missing libust header files"
 
3338
  fi
 
3339
fi
 
3340
 
 
3341
##########################################
 
3342
# For 'dtrace' backend, test if 'dtrace' command is present
 
3343
if test "$trace_backend" = "dtrace"; then
 
3344
  if ! has 'dtrace' ; then
 
3345
    error_exit "dtrace command is not found in PATH $PATH"
 
3346
  fi
 
3347
  trace_backend_stap="no"
 
3348
  if has 'stap' ; then
 
3349
    trace_backend_stap="yes"
 
3350
  fi
 
3351
fi
 
3352
 
 
3353
##########################################
 
3354
# check and set a backend for coroutine
 
3355
 
 
3356
# We prefer ucontext, but it's not always possible. The fallback
 
3357
# is sigcontext. gthread is not selectable except explicitly, because
 
3358
# it is not functional enough to run QEMU proper. (It is occasionally
 
3359
# useful for debugging purposes.)  On Windows the only valid backend
 
3360
# is the Windows-specific one.
 
3361
 
 
3362
ucontext_works=no
 
3363
if test "$darwin" != "yes"; then
 
3364
  cat > $TMPC << EOF
 
3365
#include <ucontext.h>
 
3366
#ifdef __stub_makecontext
 
3367
#error Ignoring glibc stub makecontext which will always fail
 
3368
#endif
 
3369
int main(void) { makecontext(0, 0, 0); return 0; }
 
3370
EOF
 
3371
  if compile_prog "" "" ; then
 
3372
    ucontext_works=yes
 
3373
  fi
 
3374
fi
 
3375
 
 
3376
if test "$coroutine" = ""; then
 
3377
  if test "$mingw32" = "yes"; then
 
3378
    coroutine=win32
 
3379
  elif test "$ucontext_works" = "yes"; then
 
3380
    coroutine=ucontext
 
3381
  else
 
3382
    coroutine=sigaltstack
 
3383
  fi
 
3384
else
 
3385
  case $coroutine in
 
3386
  windows)
 
3387
    if test "$mingw32" != "yes"; then
 
3388
      error_exit "'windows' coroutine backend only valid for Windows"
 
3389
    fi
 
3390
    # Unfortunately the user visible backend name doesn't match the
 
3391
    # coroutine-*.c filename for this case, so we have to adjust it here.
 
3392
    coroutine=win32
 
3393
    ;;
 
3394
  ucontext)
 
3395
    if test "$ucontext_works" != "yes"; then
 
3396
      feature_not_found "ucontext"
 
3397
    fi
 
3398
    ;;
 
3399
  gthread|sigaltstack)
 
3400
    if test "$mingw32" = "yes"; then
 
3401
      error_exit "only the 'windows' coroutine backend is valid for Windows"
 
3402
    fi
 
3403
    ;;
 
3404
  *)
 
3405
    error_exit "unknown coroutine backend $coroutine"
 
3406
    ;;
 
3407
  esac
 
3408
fi
 
3409
 
 
3410
if test "$coroutine_pool" = ""; then
 
3411
  if test "$coroutine" = "gthread"; then
 
3412
    coroutine_pool=no
 
3413
  else
 
3414
    coroutine_pool=yes
 
3415
  fi
 
3416
fi
 
3417
if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
 
3418
  error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
 
3419
fi
 
3420
 
 
3421
##########################################
 
3422
# check if we have open_by_handle_at
 
3423
 
 
3424
open_by_handle_at=no
 
3425
cat > $TMPC << EOF
 
3426
#include <fcntl.h>
 
3427
#if !defined(AT_EMPTY_PATH)
 
3428
# error missing definition
 
3429
#else
 
3430
int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
 
3431
#endif
 
3432
EOF
 
3433
if compile_prog "" "" ; then
 
3434
    open_by_handle_at=yes
 
3435
fi
 
3436
 
 
3437
########################################
 
3438
# check if we have linux/magic.h
 
3439
 
 
3440
linux_magic_h=no
 
3441
cat > $TMPC << EOF
 
3442
#include <linux/magic.h>
 
3443
int main(void) {
 
3444
  return 0;
 
3445
}
 
3446
EOF
 
3447
if compile_prog "" "" ; then
 
3448
    linux_magic_h=yes
 
3449
fi
 
3450
 
 
3451
########################################
 
3452
# check whether we can disable warning option with a pragma (this is needed
 
3453
# to silence warnings in the headers of some versions of external libraries).
 
3454
# This test has to be compiled with -Werror as otherwise an unknown pragma is
 
3455
# only a warning.
 
3456
#
 
3457
# If we can't selectively disable warning in the code, disable -Werror so that
 
3458
# the build doesn't fail anyway.
 
3459
 
 
3460
pragma_disable_unused_but_set=no
 
3461
cat > $TMPC << EOF
 
3462
#pragma GCC diagnostic push
 
3463
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
 
3464
#pragma GCC diagnostic ignored "-Wstrict-prototypes"
 
3465
#pragma GCC diagnostic pop
 
3466
 
 
3467
int main(void) {
 
3468
    return 0;
 
3469
}
 
3470
EOF
 
3471
if compile_prog "-Werror" "" ; then
 
3472
    pragma_diagnostic_available=yes
 
3473
else
 
3474
    werror=no
 
3475
fi
 
3476
 
 
3477
########################################
 
3478
# check if we have valgrind/valgrind.h and valgrind/memcheck.h
 
3479
 
 
3480
valgrind_h=no
 
3481
cat > $TMPC << EOF
 
3482
#include <valgrind/valgrind.h>
 
3483
#include <valgrind/memcheck.h>
 
3484
int main(void) {
 
3485
  return 0;
 
3486
}
 
3487
EOF
 
3488
if compile_prog "" "" ; then
 
3489
    valgrind_h=yes
 
3490
fi
 
3491
 
 
3492
########################################
 
3493
# check if environ is declared
 
3494
 
 
3495
has_environ=no
 
3496
cat > $TMPC << EOF
 
3497
#include <unistd.h>
 
3498
int main(void) {
 
3499
    environ = 0;
 
3500
    return 0;
 
3501
}
 
3502
EOF
 
3503
if compile_prog "" "" ; then
 
3504
    has_environ=yes
 
3505
fi
 
3506
 
 
3507
########################################
 
3508
# check if cpuid.h is usable.
 
3509
 
 
3510
cpuid_h=no
 
3511
cat > $TMPC << EOF
 
3512
#include <cpuid.h>
 
3513
int main(void) {
 
3514
  return 0;
 
3515
}
 
3516
EOF
 
3517
if compile_prog "" "" ; then
 
3518
    cpuid_h=yes
 
3519
fi
 
3520
 
 
3521
########################################
 
3522
# check if __[u]int128_t is usable.
 
3523
 
 
3524
int128=no
 
3525
cat > $TMPC << EOF
 
3526
__int128_t a;
 
3527
__uint128_t b;
 
3528
int main (void) {
 
3529
  a = a + b;
 
3530
  b = a * b;
 
3531
  a = a * a;
 
3532
  return 0;
 
3533
}
 
3534
EOF
 
3535
if compile_prog "" "" ; then
 
3536
    int128=yes
 
3537
fi
 
3538
 
 
3539
########################################
 
3540
# check if getauxval is available.
 
3541
 
 
3542
getauxval=no
 
3543
cat > $TMPC << EOF
 
3544
#include <sys/auxv.h>
 
3545
int main(void) {
 
3546
  return getauxval(AT_HWCAP) == 0;
 
3547
}
 
3548
EOF
 
3549
if compile_prog "" "" ; then
 
3550
    getauxval=yes
 
3551
fi
 
3552
 
 
3553
##########################################
 
3554
# End of CC checks
 
3555
# After here, no more $cc or $ld runs
 
3556
 
 
3557
if test "$gcov" = "yes" ; then
 
3558
  CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
 
3559
  LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
 
3560
elif test "$debug" = "no" ; then
 
3561
  CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
 
3562
fi
 
3563
 
 
3564
 
 
3565
# Disable zero malloc errors for official releases unless explicitly told to
 
3566
# enable/disable
 
3567
if test -z "$zero_malloc" ; then
 
3568
    if test "$z_version" = "50" ; then
 
3569
        zero_malloc="no"
 
3570
    else
 
3571
        zero_malloc="yes"
 
3572
    fi
 
3573
fi
 
3574
 
 
3575
# Now we've finished running tests it's OK to add -Werror to the compiler flags
 
3576
if test "$werror" = "yes"; then
 
3577
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
 
3578
fi
 
3579
 
 
3580
if test "$solaris" = "no" ; then
 
3581
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
 
3582
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
 
3583
    fi
 
3584
fi
 
3585
 
 
3586
# test if pod2man has --utf8 option
 
3587
if pod2man --help | grep -q utf8; then
 
3588
    POD2MAN="pod2man --utf8"
 
3589
else
 
3590
    POD2MAN="pod2man"
 
3591
fi
 
3592
 
 
3593
# Use ASLR, no-SEH and DEP if available
 
3594
if test "$mingw32" = "yes" ; then
 
3595
    for flag in --dynamicbase --no-seh --nxcompat; do
 
3596
        if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
 
3597
            LDFLAGS="-Wl,$flag $LDFLAGS"
 
3598
        fi
 
3599
    done
 
3600
fi
 
3601
 
 
3602
qemu_confdir=$sysconfdir$confsuffix
 
3603
qemu_datadir=$datadir$confsuffix
 
3604
qemu_localedir="$datadir/locale"
 
3605
 
 
3606
tools=""
 
3607
if test "$want_tools" = "yes" ; then
 
3608
  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
 
3609
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
 
3610
    tools="qemu-nbd\$(EXESUF) $tools"
 
3611
  fi
 
3612
fi
 
3613
if test "$softmmu" = yes ; then
 
3614
  if test "$virtfs" != no ; then
 
3615
    if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
 
3616
      virtfs=yes
 
3617
      tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
 
3618
    else
 
3619
      if test "$virtfs" = yes; then
 
3620
        error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
 
3621
      fi
 
3622
      virtfs=no
 
3623
    fi
 
3624
  fi
 
3625
fi
 
3626
if [ "$guest_agent" != "no" ]; then
 
3627
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
 
3628
      tools="qemu-ga\$(EXESUF) $tools"
 
3629
      if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
 
3630
        tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
 
3631
      fi
 
3632
      guest_agent=yes
 
3633
  elif [ "$guest_agent" != yes ]; then
 
3634
      guest_agent=no
 
3635
  else
 
3636
      error_exit "Guest agent is not supported on this platform"
 
3637
  fi
 
3638
fi
 
3639
 
 
3640
# Mac OS X ships with a broken assembler
 
3641
roms=
 
3642
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
 
3643
        "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
 
3644
        "$softmmu" = yes ; then
 
3645
  roms="optionrom"
 
3646
fi
 
3647
if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
 
3648
  roms="$roms spapr-rtas"
 
3649
fi
 
3650
 
 
3651
if test "$cpu" = "s390x" ; then
 
3652
  roms="$roms s390-ccw"
 
3653
fi
 
3654
 
 
3655
# Probe for the need for relocating the user-only binary.
 
3656
if test "$pie" = "no" ; then
 
3657
  textseg_addr=
 
3658
  case "$cpu" in
 
3659
    arm | hppa | i386 | m68k | ppc | ppc64 | s390* | sparc | sparc64 | x86_64 | x32)
 
3660
      textseg_addr=0x60000000
 
3661
      ;;
 
3662
    mips)
 
3663
      textseg_addr=0x400000
 
3664
      ;;
 
3665
  esac
 
3666
  if [ -n "$textseg_addr" ]; then
 
3667
    cat > $TMPC <<EOF
 
3668
    int main(void) { return 0; }
 
3669
EOF
 
3670
    textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
 
3671
    if ! compile_prog "" "$textseg_ldflags"; then
 
3672
      # In case ld does not support -Ttext-segment, edit the default linker
 
3673
      # script via sed to set the .text start addr.  This is needed on FreeBSD
 
3674
      # at least.
 
3675
      $ld --verbose | sed \
 
3676
        -e '1,/==================================================/d' \
 
3677
        -e '/==================================================/,$d' \
 
3678
        -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
 
3679
        -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
 
3680
      textseg_ldflags="-Wl,-T../config-host.ld"
 
3681
    fi
 
3682
  fi
 
3683
fi
 
3684
 
 
3685
# add pixman flags after all config tests are done
 
3686
QEMU_CFLAGS="$QEMU_CFLAGS $pixman_cflags $fdt_cflags"
 
3687
libs_softmmu="$libs_softmmu $pixman_libs"
 
3688
 
 
3689
echo "Install prefix    $prefix"
 
3690
echo "BIOS directory    `eval echo $qemu_datadir`"
 
3691
echo "binary directory  `eval echo $bindir`"
 
3692
echo "library directory `eval echo $libdir`"
 
3693
echo "libexec directory `eval echo $libexecdir`"
 
3694
echo "include directory `eval echo $includedir`"
 
3695
echo "config directory  `eval echo $sysconfdir`"
 
3696
if test "$mingw32" = "no" ; then
 
3697
echo "local state directory   `eval echo $local_statedir`"
 
3698
echo "Manual directory  `eval echo $mandir`"
 
3699
echo "ELF interp prefix $interp_prefix"
 
3700
else
 
3701
echo "local state directory   queried at runtime"
 
3702
echo "Windows SDK       $win_sdk"
 
3703
fi
 
3704
echo "Source path       $source_path"
 
3705
echo "C compiler        $cc"
 
3706
echo "Host C compiler   $host_cc"
 
3707
echo "C++ compiler      $cxx"
 
3708
echo "Objective-C compiler $objcc"
 
3709
echo "ARFLAGS           $ARFLAGS"
 
3710
echo "CFLAGS            $CFLAGS"
 
3711
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
 
3712
echo "LDFLAGS           $LDFLAGS"
 
3713
echo "make              $make"
 
3714
echo "install           $install"
 
3715
echo "python            $python"
 
3716
if test "$slirp" = "yes" ; then
 
3717
    echo "smbd              $smbd"
 
3718
fi
 
3719
echo "host CPU          $cpu"
 
3720
echo "host big endian   $bigendian"
 
3721
echo "target list       $target_list"
 
3722
echo "tcg debug enabled $debug_tcg"
 
3723
echo "gprof enabled     $gprof"
 
3724
echo "sparse enabled    $sparse"
 
3725
echo "strip binaries    $strip_opt"
 
3726
echo "profiler          $profiler"
 
3727
echo "static build      $static"
 
3728
echo "-Werror enabled   $werror"
 
3729
if test "$darwin" = "yes" ; then
 
3730
    echo "Cocoa support     $cocoa"
 
3731
fi
 
3732
echo "pixman            $pixman"
 
3733
echo "SDL support       $sdl"
 
3734
echo "GTK support       $gtk"
 
3735
echo "curses support    $curses"
 
3736
echo "curl support      $curl"
 
3737
echo "mingw32 support   $mingw32"
 
3738
echo "Audio drivers     $audio_drv_list"
 
3739
echo "Block whitelist (rw) $block_drv_rw_whitelist"
 
3740
echo "Block whitelist (ro) $block_drv_ro_whitelist"
 
3741
echo "VirtFS support    $virtfs"
 
3742
echo "VNC support       $vnc"
 
3743
if test "$vnc" = "yes" ; then
 
3744
    echo "VNC TLS support   $vnc_tls"
 
3745
    echo "VNC SASL support  $vnc_sasl"
 
3746
    echo "VNC JPEG support  $vnc_jpeg"
 
3747
    echo "VNC PNG support   $vnc_png"
 
3748
    echo "VNC WS support    $vnc_ws"
 
3749
fi
 
3750
if test -n "$sparc_cpu"; then
 
3751
    echo "Target Sparc Arch $sparc_cpu"
 
3752
fi
 
3753
echo "xen support       $xen"
 
3754
echo "brlapi support    $brlapi"
 
3755
echo "bluez  support    $bluez"
 
3756
echo "Documentation     $docs"
 
3757
[ ! -z "$uname_release" ] && \
 
3758
echo "uname -r          $uname_release"
 
3759
echo "GUEST_BASE        $guest_base"
 
3760
echo "PIE               $pie"
 
3761
echo "vde support       $vde"
 
3762
echo "Linux AIO support $linux_aio"
 
3763
echo "ATTR/XATTR support $attr"
 
3764
echo "Install blobs     $blobs"
 
3765
echo "KVM support       $kvm"
 
3766
echo "RDMA support      $rdma"
 
3767
echo "TCG interpreter   $tcg_interpreter"
 
3768
echo "fdt support       $fdt"
 
3769
echo "preadv support    $preadv"
 
3770
echo "fdatasync         $fdatasync"
 
3771
echo "madvise           $madvise"
 
3772
echo "posix_madvise     $posix_madvise"
 
3773
echo "sigev_thread_id   $sigev_thread_id"
 
3774
echo "uuid support      $uuid"
 
3775
echo "libcap-ng support $cap_ng"
 
3776
echo "vhost-net support $vhost_net"
 
3777
echo "vhost-scsi support $vhost_scsi"
 
3778
echo "Trace backend     $trace_backend"
 
3779
echo "Trace output file $trace_file-<pid>"
 
3780
echo "spice support     $spice ($spice_protocol_version/$spice_server_version)"
 
3781
echo "rbd support       $rbd"
 
3782
echo "xfsctl support    $xfs"
 
3783
echo "nss used          $smartcard_nss"
 
3784
echo "libusb            $libusb"
 
3785
echo "usb net redir     $usb_redir"
 
3786
echo "GLX support       $glx"
 
3787
echo "libiscsi support  $libiscsi"
 
3788
echo "build guest agent $guest_agent"
 
3789
echo "QGA VSS support   $guest_agent_with_vss"
 
3790
echo "seccomp support   $seccomp"
 
3791
echo "coroutine backend $coroutine"
 
3792
echo "coroutine pool    $coroutine_pool"
 
3793
echo "GlusterFS support $glusterfs"
 
3794
echo "virtio-blk-data-plane $virtio_blk_data_plane"
 
3795
echo "gcov              $gcov_tool"
 
3796
echo "gcov enabled      $gcov"
 
3797
echo "TPM support       $tpm"
 
3798
echo "libssh2 support   $libssh2"
 
3799
echo "TPM passthrough   $tpm_passthrough"
 
3800
echo "QOM debugging     $qom_cast_debug"
 
3801
echo "vhdx              $vhdx"
 
3802
 
 
3803
if test "$sdl_too_old" = "yes"; then
 
3804
echo "-> Your SDL version is too old - please upgrade to have SDL support"
 
3805
fi
 
3806
 
 
3807
config_host_mak="config-host.mak"
 
3808
 
 
3809
echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
 
3810
 
 
3811
echo "# Automatically generated by configure - do not modify" > $config_host_mak
 
3812
echo >> $config_host_mak
 
3813
 
 
3814
echo all: >> $config_host_mak
 
3815
echo "prefix=$prefix" >> $config_host_mak
 
3816
echo "bindir=$bindir" >> $config_host_mak
 
3817
echo "libdir=$libdir" >> $config_host_mak
 
3818
echo "libexecdir=$libexecdir" >> $config_host_mak
 
3819
echo "includedir=$includedir" >> $config_host_mak
 
3820
echo "mandir=$mandir" >> $config_host_mak
 
3821
echo "sysconfdir=$sysconfdir" >> $config_host_mak
 
3822
echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
 
3823
echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
 
3824
echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
 
3825
if test "$mingw32" = "no" ; then
 
3826
  echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
 
3827
fi
 
3828
echo "qemu_helperdir=$libexecdir" >> $config_host_mak
 
3829
echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
 
3830
echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
 
3831
echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
 
3832
echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
 
3833
 
 
3834
echo "ARCH=$ARCH" >> $config_host_mak
 
3835
 
 
3836
if test "$debug_tcg" = "yes" ; then
 
3837
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
 
3838
fi
 
3839
if test "$strip_opt" = "yes" ; then
 
3840
  echo "STRIP=${strip}" >> $config_host_mak
 
3841
fi
 
3842
if test "$bigendian" = "yes" ; then
 
3843
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
 
3844
fi
 
3845
if test "$mingw32" = "yes" ; then
 
3846
  echo "CONFIG_WIN32=y" >> $config_host_mak
 
3847
  rc_version=`cat $source_path/VERSION`
 
3848
  version_major=${rc_version%%.*}
 
3849
  rc_version=${rc_version#*.}
 
3850
  version_minor=${rc_version%%.*}
 
3851
  rc_version=${rc_version#*.}
 
3852
  version_subminor=${rc_version%%.*}
 
3853
  version_micro=0
 
3854
  echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
 
3855
  echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
 
3856
  if test "$guest_agent_with_vss" = "yes" ; then
 
3857
    echo "CONFIG_QGA_VSS=y" >> $config_host_mak
 
3858
    echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
 
3859
  fi
 
3860
else
 
3861
  echo "CONFIG_POSIX=y" >> $config_host_mak
 
3862
fi
 
3863
 
 
3864
if test "$linux" = "yes" ; then
 
3865
  echo "CONFIG_LINUX=y" >> $config_host_mak
 
3866
fi
 
3867
 
 
3868
if test "$darwin" = "yes" ; then
 
3869
  echo "CONFIG_DARWIN=y" >> $config_host_mak
 
3870
fi
 
3871
 
 
3872
if test "$aix" = "yes" ; then
 
3873
  echo "CONFIG_AIX=y" >> $config_host_mak
 
3874
fi
 
3875
 
 
3876
if test "$solaris" = "yes" ; then
 
3877
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
 
3878
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
 
3879
  if test "$needs_libsunmath" = "yes" ; then
 
3880
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
 
3881
  fi
 
3882
fi
 
3883
if test "$haiku" = "yes" ; then
 
3884
  echo "CONFIG_HAIKU=y" >> $config_host_mak
 
3885
fi
 
3886
if test "$static" = "yes" ; then
 
3887
  echo "CONFIG_STATIC=y" >> $config_host_mak
 
3888
fi
 
3889
if test "$profiler" = "yes" ; then
 
3890
  echo "CONFIG_PROFILER=y" >> $config_host_mak
 
3891
fi
 
3892
if test "$slirp" = "yes" ; then
 
3893
  echo "CONFIG_SLIRP=y" >> $config_host_mak
 
3894
  echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
 
3895
fi
 
3896
if test "$vde" = "yes" ; then
 
3897
  echo "CONFIG_VDE=y" >> $config_host_mak
 
3898
fi
 
3899
if test "$cap_ng" = "yes" ; then
 
3900
  echo "CONFIG_LIBCAP=y" >> $config_host_mak
 
3901
fi
 
3902
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
 
3903
for drv in $audio_drv_list; do
 
3904
    def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
 
3905
    echo "$def=y" >> $config_host_mak
 
3906
    if test "$drv" = "fmod"; then
 
3907
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
 
3908
    fi
 
3909
done
 
3910
if test "$audio_pt_int" = "yes" ; then
 
3911
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
 
3912
fi
 
3913
if test "$audio_win_int" = "yes" ; then
 
3914
  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
 
3915
fi
 
3916
echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
 
3917
echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
 
3918
if test "$vnc" = "yes" ; then
 
3919
  echo "CONFIG_VNC=y" >> $config_host_mak
 
3920
fi
 
3921
if test "$vnc_tls" = "yes" ; then
 
3922
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
 
3923
fi
 
3924
if test "$vnc_sasl" = "yes" ; then
 
3925
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
 
3926
fi
 
3927
if test "$vnc_jpeg" = "yes" ; then
 
3928
  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
 
3929
fi
 
3930
if test "$vnc_png" = "yes" ; then
 
3931
  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
 
3932
fi
 
3933
if test "$vnc_ws" = "yes" ; then
 
3934
  echo "CONFIG_VNC_WS=y" >> $config_host_mak
 
3935
  echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak
 
3936
fi
 
3937
if test "$fnmatch" = "yes" ; then
 
3938
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
 
3939
fi
 
3940
if test "$uuid" = "yes" ; then
 
3941
  echo "CONFIG_UUID=y" >> $config_host_mak
 
3942
fi
 
3943
if test "$xfs" = "yes" ; then
 
3944
  echo "CONFIG_XFS=y" >> $config_host_mak
 
3945
fi
 
3946
qemu_version=`head $source_path/VERSION`
 
3947
echo "VERSION=$qemu_version" >>$config_host_mak
 
3948
echo "PKGVERSION=$pkgversion" >>$config_host_mak
 
3949
echo "SRC_PATH=$source_path" >> $config_host_mak
 
3950
echo "TARGET_DIRS=$target_list" >> $config_host_mak
 
3951
if [ "$docs" = "yes" ] ; then
 
3952
  echo "BUILD_DOCS=yes" >> $config_host_mak
 
3953
fi
 
3954
if test "$sdl" = "yes" ; then
 
3955
  echo "CONFIG_SDL=y" >> $config_host_mak
 
3956
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
 
3957
fi
 
3958
if test "$cocoa" = "yes" ; then
 
3959
  echo "CONFIG_COCOA=y" >> $config_host_mak
 
3960
fi
 
3961
if test "$curses" = "yes" ; then
 
3962
  echo "CONFIG_CURSES=y" >> $config_host_mak
 
3963
fi
 
3964
if test "$utimens" = "yes" ; then
 
3965
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
 
3966
fi
 
3967
if test "$pipe2" = "yes" ; then
 
3968
  echo "CONFIG_PIPE2=y" >> $config_host_mak
 
3969
fi
 
3970
if test "$accept4" = "yes" ; then
 
3971
  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
 
3972
fi
 
3973
if test "$splice" = "yes" ; then
 
3974
  echo "CONFIG_SPLICE=y" >> $config_host_mak
 
3975
fi
 
3976
if test "$eventfd" = "yes" ; then
 
3977
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
 
3978
fi
 
3979
if test "$fallocate" = "yes" ; then
 
3980
  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
 
3981
fi
 
3982
if test "$fallocate_punch_hole" = "yes" ; then
 
3983
  echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
 
3984
fi
 
3985
if test "$sync_file_range" = "yes" ; then
 
3986
  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
 
3987
fi
 
3988
if test "$fiemap" = "yes" ; then
 
3989
  echo "CONFIG_FIEMAP=y" >> $config_host_mak
 
3990
fi
 
3991
if test "$dup3" = "yes" ; then
 
3992
  echo "CONFIG_DUP3=y" >> $config_host_mak
 
3993
fi
 
3994
if test "$ppoll" = "yes" ; then
 
3995
  echo "CONFIG_PPOLL=y" >> $config_host_mak
 
3996
fi
 
3997
if test "$prctl_pr_set_timerslack" = "yes" ; then
 
3998
  echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
 
3999
fi
 
4000
if test "$epoll" = "yes" ; then
 
4001
  echo "CONFIG_EPOLL=y" >> $config_host_mak
 
4002
fi
 
4003
if test "$epoll_create1" = "yes" ; then
 
4004
  echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
 
4005
fi
 
4006
if test "$epoll_pwait" = "yes" ; then
 
4007
  echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
 
4008
fi
 
4009
if test "$sendfile" = "yes" ; then
 
4010
  echo "CONFIG_SENDFILE=y" >> $config_host_mak
 
4011
fi
 
4012
if test "$inotify" = "yes" ; then
 
4013
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
 
4014
fi
 
4015
if test "$inotify1" = "yes" ; then
 
4016
  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
 
4017
fi
 
4018
if test "$byteswap_h" = "yes" ; then
 
4019
  echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
 
4020
fi
 
4021
if test "$bswap_h" = "yes" ; then
 
4022
  echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
 
4023
fi
 
4024
if test "$curl" = "yes" ; then
 
4025
  echo "CONFIG_CURL=y" >> $config_host_mak
 
4026
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
 
4027
fi
 
4028
if test "$brlapi" = "yes" ; then
 
4029
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
 
4030
fi
 
4031
if test "$bluez" = "yes" ; then
 
4032
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
 
4033
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
 
4034
fi
 
4035
echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
 
4036
if test "$gtk" = "yes" ; then
 
4037
  echo "CONFIG_GTK=y" >> $config_host_mak
 
4038
  echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
 
4039
  echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
 
4040
fi
 
4041
if test "$xen" = "yes" ; then
 
4042
  echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
 
4043
  echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
 
4044
fi
 
4045
if test "$linux_aio" = "yes" ; then
 
4046
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
 
4047
fi
 
4048
if test "$attr" = "yes" ; then
 
4049
  echo "CONFIG_ATTR=y" >> $config_host_mak
 
4050
fi
 
4051
if test "$libattr" = "yes" ; then
 
4052
  echo "CONFIG_LIBATTR=y" >> $config_host_mak
 
4053
fi
 
4054
if test "$virtfs" = "yes" ; then
 
4055
  echo "CONFIG_VIRTFS=y" >> $config_host_mak
 
4056
fi
 
4057
if test "$vhost_scsi" = "yes" ; then
 
4058
  echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
 
4059
fi
 
4060
if test "$blobs" = "yes" ; then
 
4061
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
 
4062
fi
 
4063
if test "$iovec" = "yes" ; then
 
4064
  echo "CONFIG_IOVEC=y" >> $config_host_mak
 
4065
fi
 
4066
if test "$preadv" = "yes" ; then
 
4067
  echo "CONFIG_PREADV=y" >> $config_host_mak
 
4068
fi
 
4069
if test "$fdt" = "yes" ; then
 
4070
  echo "CONFIG_FDT=y" >> $config_host_mak
 
4071
fi
 
4072
if test "$signalfd" = "yes" ; then
 
4073
  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
 
4074
fi
 
4075
if test "$tcg_interpreter" = "yes" ; then
 
4076
  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
 
4077
fi
 
4078
if test "$fdatasync" = "yes" ; then
 
4079
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
 
4080
fi
 
4081
if test "$madvise" = "yes" ; then
 
4082
  echo "CONFIG_MADVISE=y" >> $config_host_mak
 
4083
fi
 
4084
if test "$posix_madvise" = "yes" ; then
 
4085
  echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
 
4086
fi
 
4087
if test "$sigev_thread_id" = "yes" ; then
 
4088
  echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
 
4089
fi
 
4090
 
 
4091
if test "$spice" = "yes" ; then
 
4092
  echo "CONFIG_SPICE=y" >> $config_host_mak
 
4093
fi
 
4094
 
 
4095
if test "$smartcard_nss" = "yes" ; then
 
4096
  echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
 
4097
  echo "libcacard_libs=$libcacard_libs" >> $config_host_mak
 
4098
  echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak
 
4099
fi
 
4100
 
 
4101
if test "$libusb" = "yes" ; then
 
4102
  echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
 
4103
fi
 
4104
 
 
4105
if test "$usb_redir" = "yes" ; then
 
4106
  echo "CONFIG_USB_REDIR=y" >> $config_host_mak
 
4107
fi
 
4108
 
 
4109
if test "$glx" = "yes" ; then
 
4110
  echo "CONFIG_GLX=y" >> $config_host_mak
 
4111
  echo "GLX_LIBS=$glx_libs" >> $config_host_mak
 
4112
fi
 
4113
 
 
4114
if test "$libiscsi" = "yes" ; then
 
4115
  echo "CONFIG_LIBISCSI=y" >> $config_host_mak
 
4116
fi
 
4117
 
 
4118
if test "$seccomp" = "yes"; then
 
4119
  echo "CONFIG_SECCOMP=y" >> $config_host_mak
 
4120
fi
 
4121
 
 
4122
# XXX: suppress that
 
4123
if [ "$bsd" = "yes" ] ; then
 
4124
  echo "CONFIG_BSD=y" >> $config_host_mak
 
4125
fi
 
4126
 
 
4127
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
 
4128
 
 
4129
if test "$zero_malloc" = "yes" ; then
 
4130
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
 
4131
fi
 
4132
if test "$qom_cast_debug" = "yes" ; then
 
4133
  echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
 
4134
fi
 
4135
if test "$rbd" = "yes" ; then
 
4136
  echo "CONFIG_RBD=y" >> $config_host_mak
 
4137
fi
 
4138
 
 
4139
echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
 
4140
if test "$coroutine_pool" = "yes" ; then
 
4141
  echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
 
4142
else
 
4143
  echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
 
4144
fi
 
4145
 
 
4146
if test "$open_by_handle_at" = "yes" ; then
 
4147
  echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
 
4148
fi
 
4149
 
 
4150
if test "$linux_magic_h" = "yes" ; then
 
4151
  echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
 
4152
fi
 
4153
 
 
4154
if test "$pragma_diagnostic_available" = "yes" ; then
 
4155
  echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
 
4156
fi
 
4157
 
 
4158
if test "$valgrind_h" = "yes" ; then
 
4159
  echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
 
4160
fi
 
4161
 
 
4162
if test "$has_environ" = "yes" ; then
 
4163
  echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
 
4164
fi
 
4165
 
 
4166
if test "$cpuid_h" = "yes" ; then
 
4167
  echo "CONFIG_CPUID_H=y" >> $config_host_mak
 
4168
fi
 
4169
 
 
4170
if test "$int128" = "yes" ; then
 
4171
  echo "CONFIG_INT128=y" >> $config_host_mak
 
4172
fi
 
4173
 
 
4174
if test "$getauxval" = "yes" ; then
 
4175
  echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
 
4176
fi
 
4177
 
 
4178
if test "$glusterfs" = "yes" ; then
 
4179
  echo "CONFIG_GLUSTERFS=y" >> $config_host_mak
 
4180
fi
 
4181
 
 
4182
if test "$glusterfs_discard" = "yes" ; then
 
4183
  echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
 
4184
fi
 
4185
 
 
4186
if test "$libssh2" = "yes" ; then
 
4187
  echo "CONFIG_LIBSSH2=y" >> $config_host_mak
 
4188
fi
 
4189
 
 
4190
if test "$virtio_blk_data_plane" = "yes" ; then
 
4191
  echo 'CONFIG_VIRTIO_BLK_DATA_PLANE=$(CONFIG_VIRTIO)' >> $config_host_mak
 
4192
fi
 
4193
 
 
4194
if test "$vhdx" = "yes" ; then
 
4195
  echo "CONFIG_VHDX=y" >> $config_host_mak
 
4196
fi
 
4197
 
 
4198
# USB host support
 
4199
if test "$libusb" = "yes"; then
 
4200
  echo "HOST_USB=libusb legacy" >> $config_host_mak
 
4201
else
 
4202
  echo "HOST_USB=stub" >> $config_host_mak
 
4203
fi
 
4204
 
 
4205
# TPM passthrough support?
 
4206
if test "$tpm" = "yes"; then
 
4207
  echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
 
4208
  if test "$tpm_passthrough" = "yes"; then
 
4209
    echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
 
4210
  fi
 
4211
fi
 
4212
 
 
4213
# use default implementation for tracing backend-specific routines
 
4214
trace_default=yes
 
4215
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
 
4216
if test "$trace_backend" = "nop"; then
 
4217
  echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
 
4218
fi
 
4219
if test "$trace_backend" = "simple"; then
 
4220
  echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
 
4221
  trace_default=no
 
4222
  # Set the appropriate trace file.
 
4223
  trace_file="\"$trace_file-\" FMT_pid"
 
4224
fi
 
4225
if test "$trace_backend" = "stderr"; then
 
4226
  echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
 
4227
  trace_default=no
 
4228
fi
 
4229
if test "$trace_backend" = "ust"; then
 
4230
  echo "CONFIG_TRACE_UST=y" >> $config_host_mak
 
4231
fi
 
4232
if test "$trace_backend" = "dtrace"; then
 
4233
  echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
 
4234
  if test "$trace_backend_stap" = "yes" ; then
 
4235
    echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
 
4236
  fi
 
4237
fi
 
4238
if test "$trace_backend" = "ftrace"; then
 
4239
  if test "$linux" = "yes" ; then
 
4240
    echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
 
4241
    trace_default=no
 
4242
  else
 
4243
    feature_not_found "ftrace(trace backend)"
 
4244
  fi
 
4245
fi
 
4246
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
 
4247
if test "$trace_default" = "yes"; then
 
4248
  echo "CONFIG_TRACE_DEFAULT=y" >> $config_host_mak
 
4249
fi
 
4250
 
 
4251
if test "$rdma" = "yes" ; then
 
4252
  echo "CONFIG_RDMA=y" >> $config_host_mak
 
4253
fi
 
4254
 
 
4255
if test "$tcg_interpreter" = "yes"; then
 
4256
  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
 
4257
elif test "$ARCH" = "sparc64" ; then
 
4258
  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
 
4259
elif test "$ARCH" = "s390x" ; then
 
4260
  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
 
4261
elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
 
4262
  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
 
4263
else
 
4264
  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
 
4265
fi
 
4266
QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
 
4267
 
 
4268
echo "TOOLS=$tools" >> $config_host_mak
 
4269
echo "ROMS=$roms" >> $config_host_mak
 
4270
echo "MAKE=$make" >> $config_host_mak
 
4271
echo "INSTALL=$install" >> $config_host_mak
 
4272
echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
 
4273
echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
 
4274
if test -n "$libtool"; then
 
4275
  echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
 
4276
  echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
 
4277
else
 
4278
  echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
 
4279
  echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
 
4280
fi
 
4281
echo "PYTHON=$python" >> $config_host_mak
 
4282
echo "CC=$cc" >> $config_host_mak
 
4283
if $iasl -h > /dev/null 2>&1; then
 
4284
  echo "IASL=$iasl" >> $config_host_mak
 
4285
fi
 
4286
echo "CC_I386=$cc_i386" >> $config_host_mak
 
4287
echo "HOST_CC=$host_cc" >> $config_host_mak
 
4288
echo "CXX=$cxx" >> $config_host_mak
 
4289
echo "OBJCC=$objcc" >> $config_host_mak
 
4290
echo "AR=$ar" >> $config_host_mak
 
4291
echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
 
4292
echo "AS=$as" >> $config_host_mak
 
4293
echo "CPP=$cpp" >> $config_host_mak
 
4294
echo "OBJCOPY=$objcopy" >> $config_host_mak
 
4295
echo "LD=$ld" >> $config_host_mak
 
4296
echo "WINDRES=$windres" >> $config_host_mak
 
4297
echo "LIBTOOL=$libtool" >> $config_host_mak
 
4298
echo "CFLAGS=$CFLAGS" >> $config_host_mak
 
4299
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
 
4300
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
 
4301
if test "$sparse" = "yes" ; then
 
4302
  echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
 
4303
  echo "HOST_CC      := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
 
4304
  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
 
4305
fi
 
4306
if test "$cross_prefix" != ""; then
 
4307
  echo "AUTOCONF_HOST := --host=${cross_prefix%-}"     >> $config_host_mak
 
4308
else
 
4309
  echo "AUTOCONF_HOST := "                             >> $config_host_mak
 
4310
fi
 
4311
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
 
4312
echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
 
4313
echo "LIBS+=$LIBS" >> $config_host_mak
 
4314
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
 
4315
echo "EXESUF=$EXESUF" >> $config_host_mak
 
4316
echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
 
4317
echo "POD2MAN=$POD2MAN" >> $config_host_mak
 
4318
echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
 
4319
if test "$gcov" = "yes" ; then
 
4320
  echo "CONFIG_GCOV=y" >> $config_host_mak
 
4321
  echo "GCOV=$gcov_tool" >> $config_host_mak
 
4322
fi
 
4323
 
 
4324
# use included Linux headers
 
4325
if test "$linux" = "yes" ; then
 
4326
  mkdir -p linux-headers
 
4327
  case "$cpu" in
 
4328
  i386|x86_64|x32)
 
4329
    linux_arch=x86
 
4330
    ;;
 
4331
  ppcemb|ppc|ppc64)
 
4332
    linux_arch=powerpc
 
4333
    ;;
 
4334
  s390x)
 
4335
    linux_arch=s390
 
4336
    ;;
 
4337
  aarch64)
 
4338
    linux_arch=arm64
 
4339
    ;;
 
4340
  *)
 
4341
    # For most CPUs the kernel architecture name and QEMU CPU name match.
 
4342
    linux_arch="$cpu"
 
4343
    ;;
 
4344
  esac
 
4345
    # For non-KVM architectures we will not have asm headers
 
4346
    if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
 
4347
      symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
 
4348
    fi
 
4349
fi
 
4350
 
 
4351
for target in $target_list; do
 
4352
target_dir="$target"
 
4353
config_target_mak=$target_dir/config-target.mak
 
4354
target_name=`echo $target | cut -d '-' -f 1`
 
4355
target_bigendian="no"
 
4356
 
 
4357
case "$target_name" in
 
4358
  armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
 
4359
  target_bigendian=yes
 
4360
  ;;
 
4361
esac
 
4362
target_softmmu="no"
 
4363
target_user_only="no"
 
4364
target_linux_user="no"
 
4365
target_bsd_user="no"
 
4366
case "$target" in
 
4367
  ${target_name}-softmmu)
 
4368
    target_softmmu="yes"
 
4369
    ;;
 
4370
  ${target_name}-linux-user)
 
4371
    if test "$linux" != "yes" ; then
 
4372
      error_exit "Target '$target' is only available on a Linux host"
 
4373
    fi
 
4374
    target_user_only="yes"
 
4375
    target_linux_user="yes"
 
4376
    ;;
 
4377
  ${target_name}-bsd-user)
 
4378
    if test "$bsd" != "yes" ; then
 
4379
      error_exit "Target '$target' is only available on a BSD host"
 
4380
    fi
 
4381
    target_user_only="yes"
 
4382
    target_bsd_user="yes"
 
4383
    ;;
 
4384
  *)
 
4385
    error_exit "Target '$target' not recognised"
 
4386
    exit 1
 
4387
    ;;
 
4388
esac
 
4389
 
 
4390
mkdir -p $target_dir
 
4391
echo "# Automatically generated by configure - do not modify" > $config_target_mak
 
4392
 
 
4393
bflt="no"
 
4394
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
 
4395
gdb_xml_files=""
 
4396
 
 
4397
TARGET_ARCH="$target_name"
 
4398
TARGET_BASE_ARCH=""
 
4399
TARGET_ABI_DIR=""
 
4400
 
 
4401
case "$target_name" in
 
4402
  i386)
 
4403
  ;;
 
4404
  x86_64)
 
4405
    TARGET_BASE_ARCH=i386
 
4406
  ;;
 
4407
  alpha)
 
4408
  ;;
 
4409
  arm|armeb)
 
4410
    TARGET_ARCH=arm
 
4411
    bflt="yes"
 
4412
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
 
4413
  ;;
 
4414
  aarch64)
 
4415
    TARGET_BASE_ARCH=arm
 
4416
    bflt="yes"
 
4417
    gdb_xml_files="aarch64-core.xml"
 
4418
  ;;
 
4419
  cris)
 
4420
  ;;
 
4421
  lm32)
 
4422
  ;;
 
4423
  m68k)
 
4424
    bflt="yes"
 
4425
    gdb_xml_files="cf-core.xml cf-fp.xml"
 
4426
  ;;
 
4427
  microblaze|microblazeel)
 
4428
    TARGET_ARCH=microblaze
 
4429
    bflt="yes"
 
4430
  ;;
 
4431
  mips|mipsel)
 
4432
    TARGET_ARCH=mips
 
4433
    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
 
4434
  ;;
 
4435
  mipsn32|mipsn32el)
 
4436
    TARGET_ARCH=mips64
 
4437
    TARGET_BASE_ARCH=mips
 
4438
    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
 
4439
    echo "TARGET_ABI32=y" >> $config_target_mak
 
4440
  ;;
 
4441
  mips64|mips64el)
 
4442
    TARGET_ARCH=mips64
 
4443
    TARGET_BASE_ARCH=mips
 
4444
    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
 
4445
  ;;
 
4446
  moxie)
 
4447
  ;;
 
4448
  or32)
 
4449
    TARGET_ARCH=openrisc
 
4450
    TARGET_BASE_ARCH=openrisc
 
4451
  ;;
 
4452
  ppc)
 
4453
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
 
4454
  ;;
 
4455
  ppcemb)
 
4456
    TARGET_BASE_ARCH=ppc
 
4457
    TARGET_ABI_DIR=ppc
 
4458
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
 
4459
  ;;
 
4460
  ppc64)
 
4461
    TARGET_BASE_ARCH=ppc
 
4462
    TARGET_ABI_DIR=ppc
 
4463
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
 
4464
  ;;
 
4465
  ppc64abi32)
 
4466
    TARGET_ARCH=ppc64
 
4467
    TARGET_BASE_ARCH=ppc
 
4468
    TARGET_ABI_DIR=ppc
 
4469
    echo "TARGET_ABI32=y" >> $config_target_mak
 
4470
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
 
4471
  ;;
 
4472
  sh4|sh4eb)
 
4473
    TARGET_ARCH=sh4
 
4474
    bflt="yes"
 
4475
  ;;
 
4476
  sparc)
 
4477
  ;;
 
4478
  sparc64)
 
4479
    TARGET_BASE_ARCH=sparc
 
4480
  ;;
 
4481
  sparc32plus)
 
4482
    TARGET_ARCH=sparc64
 
4483
    TARGET_BASE_ARCH=sparc
 
4484
    TARGET_ABI_DIR=sparc
 
4485
    echo "TARGET_ABI32=y" >> $config_target_mak
 
4486
  ;;
 
4487
  s390x)
 
4488
  ;;
 
4489
  unicore32)
 
4490
  ;;
 
4491
  xtensa|xtensaeb)
 
4492
    TARGET_ARCH=xtensa
 
4493
  ;;
 
4494
  *)
 
4495
    error_exit "Unsupported target CPU"
 
4496
  ;;
 
4497
esac
 
4498
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
 
4499
if [ "$TARGET_BASE_ARCH" = "" ]; then
 
4500
  TARGET_BASE_ARCH=$TARGET_ARCH
 
4501
fi
 
4502
 
 
4503
symlink "$source_path/Makefile.target" "$target_dir/Makefile"
 
4504
 
 
4505
upper() {
 
4506
    echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
 
4507
}
 
4508
 
 
4509
target_arch_name="`upper $TARGET_ARCH`"
 
4510
echo "TARGET_$target_arch_name=y" >> $config_target_mak
 
4511
echo "TARGET_NAME=$target_name" >> $config_target_mak
 
4512
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
 
4513
if [ "$TARGET_ABI_DIR" = "" ]; then
 
4514
  TARGET_ABI_DIR=$TARGET_ARCH
 
4515
fi
 
4516
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
 
4517
case "$target_name" in
 
4518
  i386|x86_64)
 
4519
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
 
4520
      echo "CONFIG_XEN=y" >> $config_target_mak
 
4521
      if test "$xen_pci_passthrough" = yes; then
 
4522
        echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
 
4523
      fi
 
4524
    fi
 
4525
    ;;
 
4526
  *)
 
4527
esac
 
4528
case "$target_name" in
 
4529
  aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x)
 
4530
    # Make sure the target and host cpus are compatible
 
4531
    if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
 
4532
      \( "$target_name" = "$cpu" -o \
 
4533
      \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
 
4534
      \( "$target_name" = "ppc64"  -a "$cpu" = "ppc" \) -o \
 
4535
      \( "$target_name" = "ppc"    -a "$cpu" = "ppc64" \) -o \
 
4536
      \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
 
4537
      \( "$target_name" = "x86_64" -a "$cpu" = "i386"   \) -o \
 
4538
      \( "$target_name" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
 
4539
      echo "CONFIG_KVM=y" >> $config_target_mak
 
4540
      if test "$vhost_net" = "yes" ; then
 
4541
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
 
4542
      fi
 
4543
    fi
 
4544
esac
 
4545
if test "$target_bigendian" = "yes" ; then
 
4546
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
 
4547
fi
 
4548
if test "$target_softmmu" = "yes" ; then
 
4549
  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
 
4550
fi
 
4551
if test "$target_user_only" = "yes" ; then
 
4552
  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
 
4553
  echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
 
4554
fi
 
4555
if test "$target_linux_user" = "yes" ; then
 
4556
  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
 
4557
fi
 
4558
list=""
 
4559
if test ! -z "$gdb_xml_files" ; then
 
4560
  for x in $gdb_xml_files; do
 
4561
    list="$list $source_path/gdb-xml/$x"
 
4562
  done
 
4563
  echo "TARGET_XML_FILES=$list" >> $config_target_mak
 
4564
fi
 
4565
 
 
4566
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
 
4567
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
 
4568
fi
 
4569
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
 
4570
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
 
4571
fi
 
4572
if test "$target_bsd_user" = "yes" ; then
 
4573
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
 
4574
fi
 
4575
 
 
4576
# generate QEMU_CFLAGS/LDFLAGS for targets
 
4577
 
 
4578
cflags=""
 
4579
ldflags=""
 
4580
 
 
4581
for i in $ARCH $TARGET_BASE_ARCH ; do
 
4582
  case "$i" in
 
4583
  alpha)
 
4584
    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
 
4585
    echo "CONFIG_ALPHA_DIS=y"  >> config-all-disas.mak
 
4586
  ;;
 
4587
  arm)
 
4588
    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
 
4589
    echo "CONFIG_ARM_DIS=y"  >> config-all-disas.mak
 
4590
  ;;
 
4591
  cris)
 
4592
    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
 
4593
    echo "CONFIG_CRIS_DIS=y"  >> config-all-disas.mak
 
4594
  ;;
 
4595
  hppa)
 
4596
    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
 
4597
    echo "CONFIG_HPPA_DIS=y"  >> config-all-disas.mak
 
4598
  ;;
 
4599
  i386|x86_64|x32)
 
4600
    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
 
4601
    echo "CONFIG_I386_DIS=y"  >> config-all-disas.mak
 
4602
  ;;
 
4603
  ia64*)
 
4604
    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
 
4605
    echo "CONFIG_IA64_DIS=y"  >> config-all-disas.mak
 
4606
  ;;
 
4607
  lm32)
 
4608
    echo "CONFIG_LM32_DIS=y"  >> $config_target_mak
 
4609
    echo "CONFIG_LM32_DIS=y"  >> config-all-disas.mak
 
4610
  ;;
 
4611
  m68k)
 
4612
    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
 
4613
    echo "CONFIG_M68K_DIS=y"  >> config-all-disas.mak
 
4614
  ;;
 
4615
  microblaze*)
 
4616
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
 
4617
    echo "CONFIG_MICROBLAZE_DIS=y"  >> config-all-disas.mak
 
4618
  ;;
 
4619
  mips*)
 
4620
    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
 
4621
    echo "CONFIG_MIPS_DIS=y"  >> config-all-disas.mak
 
4622
  ;;
 
4623
  moxie*)
 
4624
    echo "CONFIG_MOXIE_DIS=y"  >> $config_target_mak
 
4625
    echo "CONFIG_MOXIE_DIS=y"  >> config-all-disas.mak
 
4626
  ;;
 
4627
  or32)
 
4628
    echo "CONFIG_OPENRISC_DIS=y"  >> $config_target_mak
 
4629
    echo "CONFIG_OPENRISC_DIS=y"  >> config-all-disas.mak
 
4630
  ;;
 
4631
  ppc*)
 
4632
    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
 
4633
    echo "CONFIG_PPC_DIS=y"  >> config-all-disas.mak
 
4634
  ;;
 
4635
  s390*)
 
4636
    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
 
4637
    echo "CONFIG_S390_DIS=y"  >> config-all-disas.mak
 
4638
  ;;
 
4639
  sh4)
 
4640
    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
 
4641
    echo "CONFIG_SH4_DIS=y"  >> config-all-disas.mak
 
4642
  ;;
 
4643
  sparc*)
 
4644
    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
 
4645
    echo "CONFIG_SPARC_DIS=y"  >> config-all-disas.mak
 
4646
  ;;
 
4647
  xtensa*)
 
4648
    echo "CONFIG_XTENSA_DIS=y"  >> $config_target_mak
 
4649
    echo "CONFIG_XTENSA_DIS=y"  >> config-all-disas.mak
 
4650
  ;;
 
4651
  esac
 
4652
done
 
4653
if test "$tcg_interpreter" = "yes" ; then
 
4654
  echo "CONFIG_TCI_DIS=y"  >> $config_target_mak
 
4655
  echo "CONFIG_TCI_DIS=y"  >> config-all-disas.mak
 
4656
fi
 
4657
 
 
4658
case "$ARCH" in
 
4659
alpha)
 
4660
  # Ensure there's only a single GP
 
4661
  cflags="-msmall-data $cflags"
 
4662
;;
 
4663
esac
 
4664
 
 
4665
if test "$gprof" = "yes" ; then
 
4666
  echo "TARGET_GPROF=yes" >> $config_target_mak
 
4667
  if test "$target_linux_user" = "yes" ; then
 
4668
    cflags="-p $cflags"
 
4669
    ldflags="-p $ldflags"
 
4670
  fi
 
4671
  if test "$target_softmmu" = "yes" ; then
 
4672
    ldflags="-p $ldflags"
 
4673
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
 
4674
  fi
 
4675
fi
 
4676
 
 
4677
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
 
4678
  ldflags="$ldflags $textseg_ldflags"
 
4679
fi
 
4680
 
 
4681
echo "LDFLAGS+=$ldflags" >> $config_target_mak
 
4682
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
 
4683
 
 
4684
done # for target in $targets
 
4685
 
 
4686
if [ "$pixman" = "internal" ]; then
 
4687
  echo "config-host.h: subdir-pixman" >> $config_host_mak
 
4688
fi
 
4689
 
 
4690
if test "$rdma" = "yes" ; then
 
4691
echo "CONFIG_RDMA=y" >> $config_host_mak
 
4692
fi
 
4693
 
 
4694
if [ "$dtc_internal" = "yes" ]; then
 
4695
  echo "config-host.h: subdir-dtc" >> $config_host_mak
 
4696
fi
 
4697
 
 
4698
# build tree in object directory in case the source is not in the current directory
 
4699
DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
 
4700
DIRS="$DIRS fsdev"
 
4701
DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
 
4702
DIRS="$DIRS roms/seabios roms/vgabios"
 
4703
DIRS="$DIRS qapi-generated"
 
4704
FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
 
4705
FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
 
4706
FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
 
4707
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
 
4708
FILES="$FILES pc-bios/spapr-rtas/Makefile"
 
4709
FILES="$FILES pc-bios/s390-ccw/Makefile"
 
4710
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
 
4711
FILES="$FILES pc-bios/qemu-icon.bmp"
 
4712
for bios_file in \
 
4713
    $source_path/pc-bios/*.bin \
 
4714
    $source_path/pc-bios/*.aml \
 
4715
    $source_path/pc-bios/*.rom \
 
4716
    $source_path/pc-bios/*.dtb \
 
4717
    $source_path/pc-bios/*.img \
 
4718
    $source_path/pc-bios/openbios-* \
 
4719
    $source_path/pc-bios/palcode-*
 
4720
do
 
4721
    FILES="$FILES pc-bios/`basename $bios_file`"
 
4722
done
 
4723
mkdir -p $DIRS
 
4724
for f in $FILES ; do
 
4725
    if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then
 
4726
        symlink "$source_path/$f" "$f"
 
4727
    fi
 
4728
done
 
4729
 
 
4730
# temporary config to build submodules
 
4731
for rom in seabios vgabios ; do
 
4732
    config_mak=roms/$rom/config.mak
 
4733
    echo "# Automatically generated by configure - do not modify" > $config_mak
 
4734
    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
 
4735
    echo "AS=$as" >> $config_mak
 
4736
    echo "CC=$cc" >> $config_mak
 
4737
    echo "BCC=bcc" >> $config_mak
 
4738
    echo "CPP=$cpp" >> $config_mak
 
4739
    echo "OBJCOPY=objcopy" >> $config_mak
 
4740
    echo "IASL=$iasl" >> $config_mak
 
4741
    echo "LD=$ld" >> $config_mak
 
4742
done
 
4743
 
 
4744
if test "$docs" = "yes" ; then
 
4745
  mkdir -p QMP
 
4746
fi