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

« back to all changes in this revision

Viewing changes to .pc/1.6.1.patch/configure

  • Committer: Package Import Robot
  • Author(s): Serge Hallyn
  • Date: 2013-10-22 22:47:07 UTC
  • mfrom: (1.8.3) (10.1.42 sid)
  • Revision ID: package-import@ubuntu.com-20131022224707-1lya34fw3k3f24tv
Tags: 1.6.0+dfsg-2ubuntu1
* Merge 1.6.0~rc0+dfsg-2exp from debian experimental.  Remaining changes:
  - debian/control
    * update maintainer
    * remove libiscsi, usb-redir, vde, vnc-jpeg, and libssh2-1-dev
      from build-deps
    * enable rbd
    * add qemu-system and qemu-common B/R to qemu-keymaps
    * add D:udev, R:qemu, R:qemu-common and B:qemu-common to
      qemu-system-common
    * qemu-system-arm, qemu-system-ppc, qemu-system-sparc:
      - add qemu-kvm to Provides
      - add qemu-common, qemu-kvm, kvm to B/R
      - remove openbios-sparc from qemu-system-sparc D
      - drop openbios-ppc and openhackware Depends to Suggests (for now)
    * qemu-system-x86:
      - add qemu-common to Breaks/Replaces.
      - add cpu-checker to Recommends.
    * qemu-user: add B/R:qemu-kvm
    * qemu-kvm:
      - add armhf armel powerpc sparc to Architecture
      - C/R/P: qemu-kvm-spice
    * add qemu-common package
    * drop qemu-slof which is not packaged in ubuntu
  - add qemu-system-common.links for tap ifup/down scripts and OVMF link.
  - qemu-system-x86.links:
    * remove pxe rom links which are in kvm-ipxe
    * add symlink for kvm.1 manpage
  - debian/rules
    * add kvm-spice symlink to qemu-kvm
    * call dh_installmodules for qemu-system-x86
    * update dh_installinit to install upstart script
    * run dh_installman (Closes: #709241) (cherrypicked from 1.5.0+dfsg-2)
  - Add qemu-utils.links for kvm-* symlinks.
  - Add qemu-system-x86.qemu-kvm.upstart and .default
  - Add qemu-system-x86.modprobe to set nesting=1
  - Add qemu-system-common.preinst to add kvm group
  - qemu-system-common.postinst: remove bad group acl if there, then have
    udev relabel /dev/kvm.
  - New linaro patches from qemu-linaro rebasing branch
  - Dropped patches:
    * xen-simplify-xen_enabled.patch
    * sparc-linux-user-fix-missing-symbols-in-.rel-.rela.plt-sections.patch
    * main_loop-do-not-set-nonblocking-if-xen_enabled.patch
    * xen_machine_pv-do-not-create-a-dummy-CPU-in-machine-.patch
    * virtio-rng-fix-crash
  - Kept patches:
    * expose_vms_qemu64cpu.patch - updated
    * linaro arm patches from qemu-linaro rebasing branch
  - New patches:
    * fix-pci-add: change CONFIG variable in ifdef to make sure that
      pci_add is defined.
* Add linaro patches
* Add experimental mach-virt patches for arm virtualization.
* qemu-system-common.install: add debian/tmp/usr/lib to install the
  qemu-bridge-helper

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