Statistics
| Branch: | Revision:

root / configure @ 785c23ae

History | View | Annotate | Download (105.8 kB)

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
do_cc() {
31
    # Run the compiler, capturing its output to the log.
32
    echo $cc "$@" >> config.log
33
    $cc "$@" >> config.log 2>&1 || return $?
34
    # Test passed. If this is an --enable-werror build, rerun
35
    # the test with -Werror and bail out if it fails. This
36
    # makes warning-generating-errors in configure test code
37
    # obvious to developers.
38
    if test "$werror" != "yes"; then
39
        return 0
40
    fi
41
    # Don't bother rerunning the compile if we were already using -Werror
42
    case "$*" in
43
        *-Werror*)
44
           return 0
45
        ;;
46
    esac
47
    echo $cc -Werror "$@" >> config.log
48
    $cc -Werror "$@" >> config.log 2>&1 && return $?
49
    echo "ERROR: configure test passed without -Werror but failed with -Werror."
50
    echo "This is probably a bug in the configure script. The failing command"
51
    echo "will be at the bottom of config.log."
52
    echo "You can run configure with --disable-werror to bypass this check."
53
    exit 1
54
}
55

    
56
compile_object() {
57
  do_cc $QEMU_CFLAGS -c -o $TMPO $TMPC
58
}
59

    
60
compile_prog() {
61
  local_cflags="$1"
62
  local_ldflags="$2"
63
  do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
64
}
65

    
66
# symbolically link $1 to $2.  Portable version of "ln -sf".
67
symlink() {
68
  rm -rf "$2"
69
  mkdir -p "$(dirname "$2")"
70
  ln -s "$1" "$2"
71
}
72

    
73
# check whether a command is available to this shell (may be either an
74
# executable or a builtin)
75
has() {
76
    type "$1" >/dev/null 2>&1
77
}
78

    
79
# search for an executable in PATH
80
path_of() {
81
    local_command="$1"
82
    local_ifs="$IFS"
83
    local_dir=""
84

    
85
    # pathname has a dir component?
86
    if [ "${local_command#*/}" != "$local_command" ]; then
87
        if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
88
            echo "$local_command"
89
            return 0
90
        fi
91
    fi
92
    if [ -z "$local_command" ]; then
93
        return 1
94
    fi
95

    
96
    IFS=:
97
    for local_dir in $PATH; do
98
        if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
99
            echo "$local_dir/$local_command"
100
            IFS="${local_ifs:-$(printf ' \t\n')}"
101
            return 0
102
        fi
103
    done
104
    # not found
105
    IFS="${local_ifs:-$(printf ' \t\n')}"
106
    return 1
107
}
108

    
109
# default parameters
110
source_path=`dirname "$0"`
111
cpu=""
112
interp_prefix="/usr/gnemul/qemu-%M"
113
static="no"
114
cross_prefix=""
115
audio_drv_list=""
116
audio_card_list="ac97 es1370 sb16 hda"
117
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda"
118
block_drv_whitelist=""
119
host_cc="gcc"
120
libs_softmmu=""
121
libs_tools=""
122
audio_pt_int=""
123
audio_win_int=""
124
cc_i386=i386-pc-linux-gnu-gcc
125
libs_qga=""
126
debug_info="yes"
127

    
128
# Don't accept a target_list environment variable.
129
unset target_list
130

    
131
# Default value for a variable defining feature "foo".
132
#  * foo="no"  feature will only be used if --enable-foo arg is given
133
#  * foo=""    feature will be searched for, and if found, will be used
134
#              unless --disable-foo is given
135
#  * foo="yes" this value will only be set by --enable-foo flag.
136
#              feature will searched for,
137
#              if not found, configure exits with error
138
#
139
# Always add --enable-foo and --disable-foo command line args.
140
# Distributions want to ensure that several features are compiled in, and it
141
# is impossible without a --enable-foo that exits if a feature is not found.
142

    
143
bluez=""
144
brlapi=""
145
curl=""
146
curses=""
147
docs=""
148
fdt=""
149
nptl=""
150
sdl=""
151
virtfs=""
152
vnc="yes"
153
sparse="no"
154
uuid=""
155
vde=""
156
vnc_tls=""
157
vnc_sasl=""
158
vnc_jpeg=""
159
vnc_png=""
160
xen=""
161
xen_ctrl_version=""
162
xen_pci_passthrough=""
163
linux_aio=""
164
cap_ng=""
165
attr=""
166
libattr=""
167
xfs=""
168

    
169
vhost_net="no"
170
kvm="no"
171
gprof="no"
172
debug_tcg="no"
173
debug="no"
174
strip_opt="yes"
175
tcg_interpreter="no"
176
bigendian="no"
177
mingw32="no"
178
EXESUF=""
179
prefix="/usr/local"
180
mandir="\${prefix}/share/man"
181
datadir="\${prefix}/share"
182
qemu_docdir="\${prefix}/share/doc/qemu"
183
bindir="\${prefix}/bin"
184
libdir="\${prefix}/lib"
185
libexecdir="\${prefix}/libexec"
186
includedir="\${prefix}/include"
187
sysconfdir="\${prefix}/etc"
188
local_statedir="\${prefix}/var"
189
confsuffix="/qemu"
190
slirp="yes"
191
fmod_lib=""
192
fmod_inc=""
193
oss_lib=""
194
bsd="no"
195
linux="no"
196
solaris="no"
197
profiler="no"
198
cocoa="no"
199
softmmu="yes"
200
linux_user="no"
201
bsd_user="no"
202
guest_base=""
203
uname_release=""
204
mixemu="no"
205
aix="no"
206
blobs="yes"
207
pkgversion=""
208
pie=""
209
zero_malloc=""
210
trace_backend="nop"
211
trace_file="trace"
212
spice=""
213
rbd=""
214
smartcard=""
215
smartcard_nss=""
216
usb_redir=""
217
opengl=""
218
zlib="yes"
219
guest_agent="yes"
220
want_tools="yes"
221
libiscsi=""
222
coroutine=""
223
seccomp=""
224
glusterfs=""
225

    
226
# parse CC options first
227
for opt do
228
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
229
  case "$opt" in
230
  --cross-prefix=*) cross_prefix="$optarg"
231
  ;;
232
  --cc=*) CC="$optarg"
233
  ;;
234
  --source-path=*) source_path="$optarg"
235
  ;;
236
  --cpu=*) cpu="$optarg"
237
  ;;
238
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
239
  ;;
240
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
241
  ;;
242
  --enable-debug-info) debug_info="yes"
243
  ;;
244
  --disable-debug-info) debug_info="no"
245
  ;;
246
  esac
247
done
248
# OS specific
249
# Using uname is really, really broken.  Once we have the right set of checks
250
# we can eliminate its usage altogether.
251

    
252
cc="${CC-${cross_prefix}gcc}"
253
ar="${AR-${cross_prefix}ar}"
254
objcopy="${OBJCOPY-${cross_prefix}objcopy}"
255
ld="${LD-${cross_prefix}ld}"
256
libtool="${LIBTOOL-${cross_prefix}libtool}"
257
strip="${STRIP-${cross_prefix}strip}"
258
windres="${WINDRES-${cross_prefix}windres}"
259
pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
260
query_pkg_config() {
261
    "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
262
}
263
pkg_config=query_pkg_config
264
sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
265

    
266
# default flags for all hosts
267
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
268
QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
269
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
270
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
271
QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/fpu"
272
if test "$debug_info" = "yes"; then
273
    CFLAGS="-g $CFLAGS"
274
    LDFLAGS="-g $LDFLAGS"
275
fi
276

    
277
# make source path absolute
278
source_path=`cd "$source_path"; pwd`
279

    
280
check_define() {
281
cat > $TMPC <<EOF
282
#if !defined($1)
283
#error $1 not defined
284
#endif
285
int main(void) { return 0; }
286
EOF
287
  compile_object
288
}
289

    
290
if check_define __linux__ ; then
291
  targetos="Linux"
292
elif check_define _WIN32 ; then
293
  targetos='MINGW32'
294
elif check_define __OpenBSD__ ; then
295
  targetos='OpenBSD'
296
elif check_define __sun__ ; then
297
  targetos='SunOS'
298
elif check_define __HAIKU__ ; then
299
  targetos='Haiku'
300
else
301
  targetos=`uname -s`
302
fi
303

    
304
# Some host OSes need non-standard checks for which CPU to use.
305
# Note that these checks are broken for cross-compilation: if you're
306
# cross-compiling to one of these OSes then you'll need to specify
307
# the correct CPU with the --cpu option.
308
case $targetos in
309
Darwin)
310
  # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
311
  # run 64-bit userspace code.
312
  # If the user didn't specify a CPU explicitly and the kernel says this is
313
  # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
314
  if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
315
    cpu="x86_64"
316
  fi
317
  ;;
318
SunOS)
319
  # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
320
  if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
321
    cpu="x86_64"
322
  fi
323
esac
324

    
325
if test ! -z "$cpu" ; then
326
  # command line argument
327
  :
328
elif check_define __i386__ ; then
329
  cpu="i386"
330
elif check_define __x86_64__ ; then
331
  cpu="x86_64"
332
elif check_define __sparc__ ; then
333
  if check_define __arch64__ ; then
334
    cpu="sparc64"
335
  else
336
    cpu="sparc"
337
  fi
338
elif check_define _ARCH_PPC ; then
339
  if check_define _ARCH_PPC64 ; then
340
    cpu="ppc64"
341
  else
342
    cpu="ppc"
343
  fi
344
elif check_define __mips__ ; then
345
  cpu="mips"
346
elif check_define __ia64__ ; then
347
  cpu="ia64"
348
elif check_define __s390__ ; then
349
  if check_define __s390x__ ; then
350
    cpu="s390x"
351
  else
352
    cpu="s390"
353
  fi
354
elif check_define __arm__ ; then
355
  cpu="arm"
356
elif check_define __hppa__ ; then
357
  cpu="hppa"
358
else
359
  cpu=`uname -m`
360
fi
361

    
362
ARCH=
363
# Normalise host CPU name and set ARCH.
364
# Note that this case should only have supported host CPUs, not guests.
365
case "$cpu" in
366
  ia64|ppc|ppc64|s390|s390x|sparc64)
367
    cpu="$cpu"
368
  ;;
369
  i386|i486|i586|i686|i86pc|BePC)
370
    cpu="i386"
371
  ;;
372
  x86_64|amd64)
373
    cpu="x86_64"
374
  ;;
375
  armv*b|armv*l|arm)
376
    cpu="arm"
377
  ;;
378
  hppa|parisc|parisc64)
379
    cpu="hppa"
380
  ;;
381
  mips*)
382
    cpu="mips"
383
  ;;
384
  sparc|sun4[cdmuv])
385
    cpu="sparc"
386
  ;;
387
  *)
388
    # This will result in either an error or falling back to TCI later
389
    ARCH=unknown
390
  ;;
391
esac
392
if test -z "$ARCH"; then
393
  ARCH="$cpu"
394
fi
395

    
396
# OS specific
397

    
398
case $targetos in
399
CYGWIN*)
400
  mingw32="yes"
401
  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
402
  audio_possible_drivers="winwave sdl"
403
  audio_drv_list="winwave"
404
;;
405
MINGW32*)
406
  mingw32="yes"
407
  audio_possible_drivers="winwave dsound sdl fmod"
408
  audio_drv_list="winwave"
409
;;
410
GNU/kFreeBSD)
411
  bsd="yes"
412
  audio_drv_list="oss"
413
  audio_possible_drivers="oss sdl esd pa"
414
;;
415
FreeBSD)
416
  bsd="yes"
417
  make="${MAKE-gmake}"
418
  audio_drv_list="oss"
419
  audio_possible_drivers="oss sdl esd pa"
420
  # needed for kinfo_getvmmap(3) in libutil.h
421
  LIBS="-lutil $LIBS"
422
;;
423
DragonFly)
424
  bsd="yes"
425
  make="${MAKE-gmake}"
426
  audio_drv_list="oss"
427
  audio_possible_drivers="oss sdl esd pa"
428
;;
429
NetBSD)
430
  bsd="yes"
431
  make="${MAKE-gmake}"
432
  audio_drv_list="oss"
433
  audio_possible_drivers="oss sdl esd"
434
  oss_lib="-lossaudio"
435
;;
436
OpenBSD)
437
  bsd="yes"
438
  make="${MAKE-gmake}"
439
  audio_drv_list="oss"
440
  audio_possible_drivers="oss sdl esd"
441
  oss_lib="-lossaudio"
442
;;
443
Darwin)
444
  bsd="yes"
445
  darwin="yes"
446
  if [ "$cpu" = "x86_64" ] ; then
447
    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
448
    LDFLAGS="-arch x86_64 $LDFLAGS"
449
  else
450
    QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
451
  fi
452
  cocoa="yes"
453
  audio_drv_list="coreaudio"
454
  audio_possible_drivers="coreaudio sdl fmod"
455
  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
456
  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
457
  # Disable attempts to use ObjectiveC features in os/object.h since they
458
  # won't work when we're compiling with gcc as a C compiler.
459
  QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
460
;;
461
SunOS)
462
  solaris="yes"
463
  make="${MAKE-gmake}"
464
  install="${INSTALL-ginstall}"
465
  ld="gld"
466
  smbd="${SMBD-/usr/sfw/sbin/smbd}"
467
  needs_libsunmath="no"
468
  solarisrev=`uname -r | cut -f2 -d.`
469
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
470
    if test "$solarisrev" -le 9 ; then
471
      if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
472
        needs_libsunmath="yes"
473
        QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
474
        LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
475
        LIBS="-lsunmath $LIBS"
476
      else
477
        echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
478
        echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
479
        echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
480
        echo "Studio 11 can be downloaded from www.sun.com."
481
        exit 1
482
      fi
483
    fi
484
  fi
485
  if test -f /usr/include/sys/soundcard.h ; then
486
    audio_drv_list="oss"
487
  fi
488
  audio_possible_drivers="oss sdl"
489
# needed for CMSG_ macros in sys/socket.h
490
  QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
491
# needed for TIOCWIN* defines in termios.h
492
  QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
493
  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
494
  solarisnetlibs="-lsocket -lnsl -lresolv"
495
  LIBS="$solarisnetlibs $LIBS"
496
  libs_qga="$solarisnetlibs $libs_qga"
497
;;
498
AIX)
499
  aix="yes"
500
  make="${MAKE-gmake}"
501
;;
502
Haiku)
503
  haiku="yes"
504
  QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
505
  LIBS="-lposix_error_mapper -lnetwork $LIBS"
506
;;
507
*)
508
  audio_drv_list="oss"
509
  audio_possible_drivers="oss alsa sdl esd pa"
510
  linux="yes"
511
  linux_user="yes"
512
  usb="linux"
513
  kvm="yes"
514
  vhost_net="yes"
515
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
516
    audio_possible_drivers="$audio_possible_drivers fmod"
517
  fi
518
;;
519
esac
520

    
521
if [ "$bsd" = "yes" ] ; then
522
  if [ "$darwin" != "yes" ] ; then
523
    usb="bsd"
524
    bsd_user="yes"
525
  fi
526
fi
527

    
528
: ${make=${MAKE-make}}
529
: ${install=${INSTALL-install}}
530
: ${python=${PYTHON-python}}
531
: ${smbd=${SMBD-/usr/sbin/smbd}}
532

    
533
# Default objcc to clang if available, otherwise use CC
534
if has clang; then
535
  objcc=clang
536
else
537
  objcc="$cc"
538
fi
539

    
540
if test "$mingw32" = "yes" ; then
541
  EXESUF=".exe"
542
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
543
  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
544
  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
545
  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
546
cat > $TMPC << EOF
547
int main(void) { return 0; }
548
EOF
549
  if compile_prog "" "-liberty" ; then
550
    LIBS="-liberty $LIBS"
551
  fi
552
  prefix="c:/Program Files/QEMU"
553
  mandir="\${prefix}"
554
  datadir="\${prefix}"
555
  qemu_docdir="\${prefix}"
556
  bindir="\${prefix}"
557
  sysconfdir="\${prefix}"
558
  local_statedir="\${prefix}"
559
  confsuffix=""
560
  libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga"
561
fi
562

    
563
werror=""
564

    
565
for opt do
566
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
567
  case "$opt" in
568
  --help|-h) show_help=yes
569
  ;;
570
  --version|-V) exec cat $source_path/VERSION
571
  ;;
572
  --prefix=*) prefix="$optarg"
573
  ;;
574
  --interp-prefix=*) interp_prefix="$optarg"
575
  ;;
576
  --source-path=*)
577
  ;;
578
  --cross-prefix=*)
579
  ;;
580
  --cc=*)
581
  ;;
582
  --host-cc=*) host_cc="$optarg"
583
  ;;
584
  --objcc=*) objcc="$optarg"
585
  ;;
586
  --make=*) make="$optarg"
587
  ;;
588
  --install=*) install="$optarg"
589
  ;;
590
  --python=*) python="$optarg"
591
  ;;
592
  --smbd=*) smbd="$optarg"
593
  ;;
594
  --extra-cflags=*)
595
  ;;
596
  --extra-ldflags=*)
597
  ;;
598
  --enable-debug-info)
599
  ;;
600
  --disable-debug-info)
601
  ;;
602
  --cpu=*)
603
  ;;
604
  --target-list=*) target_list="$optarg"
605
  ;;
606
  --enable-trace-backend=*) trace_backend="$optarg"
607
  ;;
608
  --with-trace-file=*) trace_file="$optarg"
609
  ;;
610
  --enable-gprof) gprof="yes"
611
  ;;
612
  --static)
613
    static="yes"
614
    LDFLAGS="-static $LDFLAGS"
615
    QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
616
  ;;
617
  --mandir=*) mandir="$optarg"
618
  ;;
619
  --bindir=*) bindir="$optarg"
620
  ;;
621
  --libdir=*) libdir="$optarg"
622
  ;;
623
  --libexecdir=*) libexecdir="$optarg"
624
  ;;
625
  --includedir=*) includedir="$optarg"
626
  ;;
627
  --datadir=*) datadir="$optarg"
628
  ;;
629
  --with-confsuffix=*) confsuffix="$optarg"
630
  ;;
631
  --docdir=*) qemu_docdir="$optarg"
632
  ;;
633
  --sysconfdir=*) sysconfdir="$optarg"
634
  ;;
635
  --localstatedir=*) local_statedir="$optarg"
636
  ;;
637
  --sbindir=*|--sharedstatedir=*|\
638
  --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
639
  --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
640
    # These switches are silently ignored, for compatibility with
641
    # autoconf-generated configure scripts. This allows QEMU's
642
    # configure to be used by RPM and similar macros that set
643
    # lots of directory switches by default.
644
  ;;
645
  --disable-sdl) sdl="no"
646
  ;;
647
  --enable-sdl) sdl="yes"
648
  ;;
649
  --disable-virtfs) virtfs="no"
650
  ;;
651
  --enable-virtfs) virtfs="yes"
652
  ;;
653
  --disable-vnc) vnc="no"
654
  ;;
655
  --enable-vnc) vnc="yes"
656
  ;;
657
  --fmod-lib=*) fmod_lib="$optarg"
658
  ;;
659
  --fmod-inc=*) fmod_inc="$optarg"
660
  ;;
661
  --oss-lib=*) oss_lib="$optarg"
662
  ;;
663
  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
664
  ;;
665
  --audio-drv-list=*) audio_drv_list="$optarg"
666
  ;;
667
  --block-drv-whitelist=*) block_drv_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
668
  ;;
669
  --enable-debug-tcg) debug_tcg="yes"
670
  ;;
671
  --disable-debug-tcg) debug_tcg="no"
672
  ;;
673
  --enable-debug)
674
      # Enable debugging options that aren't excessively noisy
675
      debug_tcg="yes"
676
      debug="yes"
677
      strip_opt="no"
678
  ;;
679
  --enable-sparse) sparse="yes"
680
  ;;
681
  --disable-sparse) sparse="no"
682
  ;;
683
  --disable-strip) strip_opt="no"
684
  ;;
685
  --disable-vnc-tls) vnc_tls="no"
686
  ;;
687
  --enable-vnc-tls) vnc_tls="yes"
688
  ;;
689
  --disable-vnc-sasl) vnc_sasl="no"
690
  ;;
691
  --enable-vnc-sasl) vnc_sasl="yes"
692
  ;;
693
  --disable-vnc-jpeg) vnc_jpeg="no"
694
  ;;
695
  --enable-vnc-jpeg) vnc_jpeg="yes"
696
  ;;
697
  --disable-vnc-png) vnc_png="no"
698
  ;;
699
  --enable-vnc-png) vnc_png="yes"
700
  ;;
701
  --disable-slirp) slirp="no"
702
  ;;
703
  --disable-uuid) uuid="no"
704
  ;;
705
  --enable-uuid) uuid="yes"
706
  ;;
707
  --disable-vde) vde="no"
708
  ;;
709
  --enable-vde) vde="yes"
710
  ;;
711
  --disable-xen) xen="no"
712
  ;;
713
  --enable-xen) xen="yes"
714
  ;;
715
  --disable-xen-pci-passthrough) xen_pci_passthrough="no"
716
  ;;
717
  --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
718
  ;;
719
  --disable-brlapi) brlapi="no"
720
  ;;
721
  --enable-brlapi) brlapi="yes"
722
  ;;
723
  --disable-bluez) bluez="no"
724
  ;;
725
  --enable-bluez) bluez="yes"
726
  ;;
727
  --disable-kvm) kvm="no"
728
  ;;
729
  --enable-kvm) kvm="yes"
730
  ;;
731
  --disable-tcg-interpreter) tcg_interpreter="no"
732
  ;;
733
  --enable-tcg-interpreter) tcg_interpreter="yes"
734
  ;;
735
  --disable-cap-ng)  cap_ng="no"
736
  ;;
737
  --enable-cap-ng) cap_ng="yes"
738
  ;;
739
  --disable-spice) spice="no"
740
  ;;
741
  --enable-spice) spice="yes"
742
  ;;
743
  --disable-libiscsi) libiscsi="no"
744
  ;;
745
  --enable-libiscsi) libiscsi="yes"
746
  ;;
747
  --enable-profiler) profiler="yes"
748
  ;;
749
  --disable-cocoa) cocoa="no"
750
  ;;
751
  --enable-cocoa)
752
      cocoa="yes" ;
753
      sdl="no" ;
754
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
755
  ;;
756
  --disable-system) softmmu="no"
757
  ;;
758
  --enable-system) softmmu="yes"
759
  ;;
760
  --disable-user)
761
      linux_user="no" ;
762
      bsd_user="no" ;
763
  ;;
764
  --enable-user) ;;
765
  --disable-linux-user) linux_user="no"
766
  ;;
767
  --enable-linux-user) linux_user="yes"
768
  ;;
769
  --disable-bsd-user) bsd_user="no"
770
  ;;
771
  --enable-bsd-user) bsd_user="yes"
772
  ;;
773
  --enable-guest-base) guest_base="yes"
774
  ;;
775
  --disable-guest-base) guest_base="no"
776
  ;;
777
  --enable-pie) pie="yes"
778
  ;;
779
  --disable-pie) pie="no"
780
  ;;
781
  --enable-uname-release=*) uname_release="$optarg"
782
  ;;
783
  --enable-werror) werror="yes"
784
  ;;
785
  --disable-werror) werror="no"
786
  ;;
787
  --disable-curses) curses="no"
788
  ;;
789
  --enable-curses) curses="yes"
790
  ;;
791
  --disable-curl) curl="no"
792
  ;;
793
  --enable-curl) curl="yes"
794
  ;;
795
  --disable-fdt) fdt="no"
796
  ;;
797
  --enable-fdt) fdt="yes"
798
  ;;
799
  --disable-nptl) nptl="no"
800
  ;;
801
  --enable-nptl) nptl="yes"
802
  ;;
803
  --enable-mixemu) mixemu="yes"
804
  ;;
805
  --disable-linux-aio) linux_aio="no"
806
  ;;
807
  --enable-linux-aio) linux_aio="yes"
808
  ;;
809
  --disable-attr) attr="no"
810
  ;;
811
  --enable-attr) attr="yes"
812
  ;;
813
  --disable-blobs) blobs="no"
814
  ;;
815
  --with-pkgversion=*) pkgversion=" ($optarg)"
816
  ;;
817
  --with-coroutine=*) coroutine="$optarg"
818
  ;;
819
  --disable-docs) docs="no"
820
  ;;
821
  --enable-docs) docs="yes"
822
  ;;
823
  --disable-vhost-net) vhost_net="no"
824
  ;;
825
  --enable-vhost-net) vhost_net="yes"
826
  ;;
827
  --disable-opengl) opengl="no"
828
  ;;
829
  --enable-opengl) opengl="yes"
830
  ;;
831
  --disable-rbd) rbd="no"
832
  ;;
833
  --enable-rbd) rbd="yes"
834
  ;;
835
  --disable-xfsctl) xfs="no"
836
  ;;
837
  --enable-xfsctl) xfs="yes"
838
  ;;
839
  --disable-smartcard) smartcard="no"
840
  ;;
841
  --enable-smartcard) smartcard="yes"
842
  ;;
843
  --disable-smartcard-nss) smartcard_nss="no"
844
  ;;
845
  --enable-smartcard-nss) smartcard_nss="yes"
846
  ;;
847
  --disable-usb-redir) usb_redir="no"
848
  ;;
849
  --enable-usb-redir) usb_redir="yes"
850
  ;;
851
  --disable-zlib-test) zlib="no"
852
  ;;
853
  --enable-guest-agent) guest_agent="yes"
854
  ;;
855
  --disable-guest-agent) guest_agent="no"
856
  ;;
857
  --enable-tools) want_tools="yes"
858
  ;;
859
  --disable-tools) want_tools="no"
860
  ;;
861
  --enable-seccomp) seccomp="yes"
862
  ;;
863
  --disable-seccomp) seccomp="no"
864
  ;;
865
  --disable-glusterfs) glusterfs="no"
866
  ;;
867
  --enable-glusterfs) glusterfs="yes"
868
  ;;
869
  *) echo "ERROR: unknown option $opt"; show_help="yes"
870
  ;;
871
  esac
872
done
873

    
874
host_guest_base="no"
875
case "$cpu" in
876
    sparc)
877
           LDFLAGS="-m32 $LDFLAGS"
878
           QEMU_CFLAGS="-m32 -mcpu=ultrasparc $QEMU_CFLAGS"
879
           host_guest_base="yes"
880
           ;;
881
    sparc64)
882
           LDFLAGS="-m64 $LDFLAGS"
883
           QEMU_CFLAGS="-m64 -mcpu=ultrasparc $QEMU_CFLAGS"
884
           host_guest_base="yes"
885
           ;;
886
    s390)
887
           QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
888
           LDFLAGS="-m31 $LDFLAGS"
889
           host_guest_base="yes"
890
           ;;
891
    s390x)
892
           QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
893
           LDFLAGS="-m64 $LDFLAGS"
894
           host_guest_base="yes"
895
           ;;
896
    i386)
897
           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
898
           LDFLAGS="-m32 $LDFLAGS"
899
           cc_i386='$(CC) -m32'
900
           host_guest_base="yes"
901
           ;;
902
    x86_64)
903
           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
904
           LDFLAGS="-m64 $LDFLAGS"
905
           cc_i386='$(CC) -m32'
906
           host_guest_base="yes"
907
           ;;
908
    arm*)
909
           host_guest_base="yes"
910
           ;;
911
    ppc*)
912
           host_guest_base="yes"
913
           ;;
914
    mips*)
915
           host_guest_base="yes"
916
           ;;
917
    ia64*)
918
           host_guest_base="yes"
919
           ;;
920
    hppa*)
921
           host_guest_base="yes"
922
           ;;
923
    unicore32*)
924
           host_guest_base="yes"
925
           ;;
926
esac
927

    
928
[ -z "$guest_base" ] && guest_base="$host_guest_base"
929

    
930

    
931
default_target_list=""
932

    
933
# these targets are portable
934
if [ "$softmmu" = "yes" ] ; then
935
    default_target_list="\
936
i386-softmmu \
937
x86_64-softmmu \
938
alpha-softmmu \
939
arm-softmmu \
940
cris-softmmu \
941
lm32-softmmu \
942
m68k-softmmu \
943
microblaze-softmmu \
944
microblazeel-softmmu \
945
mips-softmmu \
946
mipsel-softmmu \
947
mips64-softmmu \
948
mips64el-softmmu \
949
or32-softmmu \
950
ppc-softmmu \
951
ppcemb-softmmu \
952
ppc64-softmmu \
953
sh4-softmmu \
954
sh4eb-softmmu \
955
sparc-softmmu \
956
sparc64-softmmu \
957
s390x-softmmu \
958
xtensa-softmmu \
959
xtensaeb-softmmu \
960
unicore32-softmmu \
961
"
962
fi
963
# the following are Linux specific
964
if [ "$linux_user" = "yes" ] ; then
965
    default_target_list="${default_target_list}\
966
i386-linux-user \
967
x86_64-linux-user \
968
alpha-linux-user \
969
arm-linux-user \
970
armeb-linux-user \
971
cris-linux-user \
972
m68k-linux-user \
973
microblaze-linux-user \
974
microblazeel-linux-user \
975
mips-linux-user \
976
mipsel-linux-user \
977
or32-linux-user \
978
ppc-linux-user \
979
ppc64-linux-user \
980
ppc64abi32-linux-user \
981
sh4-linux-user \
982
sh4eb-linux-user \
983
sparc-linux-user \
984
sparc64-linux-user \
985
sparc32plus-linux-user \
986
unicore32-linux-user \
987
s390x-linux-user \
988
"
989
fi
990
# the following are BSD specific
991
if [ "$bsd_user" = "yes" ] ; then
992
    default_target_list="${default_target_list}\
993
i386-bsd-user \
994
x86_64-bsd-user \
995
sparc-bsd-user \
996
sparc64-bsd-user \
997
"
998
fi
999

    
1000
if test x"$show_help" = x"yes" ; then
1001
cat << EOF
1002

    
1003
Usage: configure [options]
1004
Options: [defaults in brackets after descriptions]
1005

    
1006
EOF
1007
echo "Standard options:"
1008
echo "  --help                   print this message"
1009
echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
1010
echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
1011
echo "                           use %M for cpu name [$interp_prefix]"
1012
echo "  --target-list=LIST       set target list (default: build everything)"
1013
echo "Available targets: $default_target_list" | \
1014
    fold -s -w 53 | sed -e 's/^/                           /'
1015
echo ""
1016
echo "Advanced options (experts only):"
1017
echo "  --source-path=PATH       path of source code [$source_path]"
1018
echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
1019
echo "  --cc=CC                  use C compiler CC [$cc]"
1020
echo "  --host-cc=CC             use C compiler CC [$host_cc] for code run at"
1021
echo "                           build time"
1022
echo "  --objcc=OBJCC            use Objective-C compiler OBJCC [$objcc]"
1023
echo "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
1024
echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
1025
echo "  --make=MAKE              use specified make [$make]"
1026
echo "  --install=INSTALL        use specified install [$install]"
1027
echo "  --python=PYTHON          use specified python [$python]"
1028
echo "  --smbd=SMBD              use specified smbd [$smbd]"
1029
echo "  --static                 enable static build [$static]"
1030
echo "  --mandir=PATH            install man pages in PATH"
1031
echo "  --datadir=PATH           install firmware in PATH$confsuffix"
1032
echo "  --docdir=PATH            install documentation in PATH$confsuffix"
1033
echo "  --bindir=PATH            install binaries in PATH"
1034
echo "  --sysconfdir=PATH        install config in PATH$confsuffix"
1035
echo "  --localstatedir=PATH     install local state in PATH"
1036
echo "  --with-confsuffix=SUFFIX suffix for QEMU data inside datadir and sysconfdir [$confsuffix]"
1037
echo "  --enable-debug-tcg       enable TCG debugging"
1038
echo "  --disable-debug-tcg      disable TCG debugging (default)"
1039
echo "  --enable-debug           enable common debug build options"
1040
echo "  --enable-sparse          enable sparse checker"
1041
echo "  --disable-sparse         disable sparse checker (default)"
1042
echo "  --disable-strip          disable stripping binaries"
1043
echo "  --disable-werror         disable compilation abort on warning"
1044
echo "  --disable-sdl            disable SDL"
1045
echo "  --enable-sdl             enable SDL"
1046
echo "  --disable-virtfs         disable VirtFS"
1047
echo "  --enable-virtfs          enable VirtFS"
1048
echo "  --disable-vnc            disable VNC"
1049
echo "  --enable-vnc             enable VNC"
1050
echo "  --disable-cocoa          disable Cocoa (Mac OS X only)"
1051
echo "  --enable-cocoa           enable Cocoa (default on Mac OS X)"
1052
echo "  --audio-drv-list=LIST    set audio drivers list:"
1053
echo "                           Available drivers: $audio_possible_drivers"
1054
echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
1055
echo "                           Available cards: $audio_possible_cards"
1056
echo "  --block-drv-whitelist=L  set block driver whitelist"
1057
echo "                           (affects only QEMU, not qemu-img)"
1058
echo "  --enable-mixemu          enable mixer emulation"
1059
echo "  --disable-xen            disable xen backend driver support"
1060
echo "  --enable-xen             enable xen backend driver support"
1061
echo "  --disable-xen-pci-passthrough"
1062
echo "  --enable-xen-pci-passthrough"
1063
echo "  --disable-brlapi         disable BrlAPI"
1064
echo "  --enable-brlapi          enable BrlAPI"
1065
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
1066
echo "  --enable-vnc-tls         enable TLS encryption for VNC server"
1067
echo "  --disable-vnc-sasl       disable SASL encryption for VNC server"
1068
echo "  --enable-vnc-sasl        enable SASL encryption for VNC server"
1069
echo "  --disable-vnc-jpeg       disable JPEG lossy compression for VNC server"
1070
echo "  --enable-vnc-jpeg        enable JPEG lossy compression for VNC server"
1071
echo "  --disable-vnc-png        disable PNG compression for VNC server (default)"
1072
echo "  --enable-vnc-png         enable PNG compression for VNC server"
1073
echo "  --disable-curses         disable curses output"
1074
echo "  --enable-curses          enable curses output"
1075
echo "  --disable-curl           disable curl connectivity"
1076
echo "  --enable-curl            enable curl connectivity"
1077
echo "  --disable-fdt            disable fdt device tree"
1078
echo "  --enable-fdt             enable fdt device tree"
1079
echo "  --disable-bluez          disable bluez stack connectivity"
1080
echo "  --enable-bluez           enable bluez stack connectivity"
1081
echo "  --disable-slirp          disable SLIRP userspace network connectivity"
1082
echo "  --disable-kvm            disable KVM acceleration support"
1083
echo "  --enable-kvm             enable KVM acceleration support"
1084
echo "  --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)"
1085
echo "  --disable-nptl           disable usermode NPTL support"
1086
echo "  --enable-nptl            enable usermode NPTL support"
1087
echo "  --enable-system          enable all system emulation targets"
1088
echo "  --disable-system         disable all system emulation targets"
1089
echo "  --enable-user            enable supported user emulation targets"
1090
echo "  --disable-user           disable all user emulation targets"
1091
echo "  --enable-linux-user      enable all linux usermode emulation targets"
1092
echo "  --disable-linux-user     disable all linux usermode emulation targets"
1093
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
1094
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
1095
echo "  --enable-guest-base      enable GUEST_BASE support for usermode"
1096
echo "                           emulation targets"
1097
echo "  --disable-guest-base     disable GUEST_BASE support"
1098
echo "  --enable-pie             build Position Independent Executables"
1099
echo "  --disable-pie            do not build Position Independent Executables"
1100
echo "  --fmod-lib               path to FMOD library"
1101
echo "  --fmod-inc               path to FMOD includes"
1102
echo "  --oss-lib                path to OSS library"
1103
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
1104
echo "  --cpu=CPU                Build for host CPU [$cpu]"
1105
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
1106
echo "  --disable-uuid           disable uuid support"
1107
echo "  --enable-uuid            enable uuid support"
1108
echo "  --disable-vde            disable support for vde network"
1109
echo "  --enable-vde             enable support for vde network"
1110
echo "  --disable-linux-aio      disable Linux AIO support"
1111
echo "  --enable-linux-aio       enable Linux AIO support"
1112
echo "  --disable-cap-ng         disable libcap-ng support"
1113
echo "  --enable-cap-ng          enable libcap-ng support"
1114
echo "  --disable-attr           disables attr and xattr support"
1115
echo "  --enable-attr            enable attr and xattr support"
1116
echo "  --disable-blobs          disable installing provided firmware blobs"
1117
echo "  --enable-docs            enable documentation build"
1118
echo "  --disable-docs           disable documentation build"
1119
echo "  --disable-vhost-net      disable vhost-net acceleration support"
1120
echo "  --enable-vhost-net       enable vhost-net acceleration support"
1121
echo "  --enable-trace-backend=B Set trace backend"
1122
echo "                           Available backends:" $($python "$source_path"/scripts/tracetool.py --list-backends)
1123
echo "  --with-trace-file=NAME   Full PATH,NAME of file to store traces"
1124
echo "                           Default:trace-<pid>"
1125
echo "  --disable-spice          disable spice"
1126
echo "  --enable-spice           enable spice"
1127
echo "  --enable-rbd             enable building the rados block device (rbd)"
1128
echo "  --disable-libiscsi       disable iscsi support"
1129
echo "  --enable-libiscsi        enable iscsi support"
1130
echo "  --disable-smartcard      disable smartcard support"
1131
echo "  --enable-smartcard       enable smartcard support"
1132
echo "  --disable-smartcard-nss  disable smartcard nss support"
1133
echo "  --enable-smartcard-nss   enable smartcard nss support"
1134
echo "  --disable-usb-redir      disable usb network redirection support"
1135
echo "  --enable-usb-redir       enable usb network redirection support"
1136
echo "  --disable-guest-agent    disable building of the QEMU Guest Agent"
1137
echo "  --enable-guest-agent     enable building of the QEMU Guest Agent"
1138
echo "  --disable-seccomp        disable seccomp support"
1139
echo "  --enable-seccomp         enables seccomp support"
1140
echo "  --with-coroutine=BACKEND coroutine backend. Supported options:"
1141
echo "                           gthread, ucontext, sigaltstack, windows"
1142
echo "  --enable-glusterfs       enable GlusterFS backend"
1143
echo "  --disable-glusterfs      disable GlusterFS backend"
1144
echo ""
1145
echo "NOTE: The object files are built at the place where configure is launched"
1146
exit 1
1147
fi
1148

    
1149
# Now we have handled --enable-tcg-interpreter and know we're not just
1150
# printing the help message, bail out if the host CPU isn't supported.
1151
if test "$ARCH" = "unknown"; then
1152
    if test "$tcg_interpreter" = "yes" ; then
1153
        echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1154
        ARCH=tci
1155
    else
1156
        echo "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1157
        exit 1
1158
    fi
1159
fi
1160

    
1161
# check that the C compiler works.
1162
cat > $TMPC <<EOF
1163
int main(void) { return 0; }
1164
EOF
1165

    
1166
if compile_object ; then
1167
  : C compiler works ok
1168
else
1169
    echo "ERROR: \"$cc\" either does not exist or does not work"
1170
    exit 1
1171
fi
1172

    
1173
# Consult white-list to determine whether to enable werror
1174
# by default.  Only enable by default for git builds
1175
z_version=`cut -f3 -d. $source_path/VERSION`
1176

    
1177
if test -z "$werror" ; then
1178
    if test "$z_version" = "50" -a \
1179
        "$linux" = "yes" ; then
1180
        werror="yes"
1181
    else
1182
        werror="no"
1183
    fi
1184
fi
1185

    
1186
gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1187
gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1188
gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1189
gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"
1190
# Note that we do not add -Werror to gcc_flags here, because that would
1191
# enable it for all configure tests. If a configure test failed due
1192
# to -Werror this would just silently disable some features,
1193
# so it's too error prone.
1194
cat > $TMPC << EOF
1195
int main(void) { return 0; }
1196
EOF
1197
for flag in $gcc_flags; do
1198
    if compile_prog "-Werror $flag" "" ; then
1199
	QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1200
    fi
1201
done
1202

    
1203
if test "$static" = "yes" ; then
1204
  if test "$pie" = "yes" ; then
1205
    echo "static and pie are mutually incompatible"
1206
    exit 1
1207
  else
1208
    pie="no"
1209
  fi
1210
fi
1211

    
1212
if test "$pie" = ""; then
1213
  case "$cpu-$targetos" in
1214
    i386-Linux|x86_64-Linux|i386-OpenBSD|x86_64-OpenBSD)
1215
      ;;
1216
    *)
1217
      pie="no"
1218
      ;;
1219
  esac
1220
fi
1221

    
1222
if test "$pie" != "no" ; then
1223
  cat > $TMPC << EOF
1224

    
1225
#ifdef __linux__
1226
#  define THREAD __thread
1227
#else
1228
#  define THREAD
1229
#endif
1230

    
1231
static THREAD int tls_var;
1232

    
1233
int main(void) { return tls_var; }
1234

    
1235
EOF
1236
  if compile_prog "-fPIE -DPIE" "-pie"; then
1237
    QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1238
    LDFLAGS="-pie $LDFLAGS"
1239
    pie="yes"
1240
    if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1241
      LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1242
    fi
1243
  else
1244
    if test "$pie" = "yes"; then
1245
      echo "PIE not available due to missing toolchain support"
1246
      exit 1
1247
    else
1248
      echo "Disabling PIE due to missing toolchain support"
1249
      pie="no"
1250
    fi
1251
  fi
1252
fi
1253

    
1254
#
1255
# Solaris specific configure tool chain decisions
1256
#
1257
if test "$solaris" = "yes" ; then
1258
  if has $install; then
1259
    :
1260
  else
1261
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
1262
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
1263
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1264
    exit 1
1265
  fi
1266
  if test "`path_of $install`" = "/usr/sbin/install" ; then
1267
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
1268
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
1269
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1270
    exit 1
1271
  fi
1272
  if has ar; then
1273
    :
1274
  else
1275
    echo "Error: No path includes ar"
1276
    if test -f /usr/ccs/bin/ar ; then
1277
      echo "Add /usr/ccs/bin to your path and rerun configure"
1278
    fi
1279
    exit 1
1280
  fi
1281
fi
1282

    
1283
if ! has $python; then
1284
  echo "Python not found. Use --python=/path/to/python"
1285
  exit 1
1286
fi
1287

    
1288
# Note that if the Python conditional here evaluates True we will exit
1289
# with status 1 which is a shell 'false' value.
1290
if ! "$python" -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1291
  echo "Cannot use '$python', Python 2.4 or later is required."
1292
  echo "Note that Python 3 or later is not yet supported."
1293
  echo "Use --python=/path/to/python to specify a supported Python."
1294
  exit 1
1295
fi
1296

    
1297
if test -z "${target_list+xxx}" ; then
1298
    target_list="$default_target_list"
1299
else
1300
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
1301
fi
1302
# see if system emulation was really requested
1303
case " $target_list " in
1304
  *"-softmmu "*) softmmu=yes
1305
  ;;
1306
  *) softmmu=no
1307
  ;;
1308
esac
1309

    
1310
feature_not_found() {
1311
  feature=$1
1312

    
1313
  echo "ERROR"
1314
  echo "ERROR: User requested feature $feature"
1315
  echo "ERROR: configure was not able to find it"
1316
  echo "ERROR"
1317
  exit 1;
1318
}
1319

    
1320
if test -z "$cross_prefix" ; then
1321

    
1322
# ---
1323
# big/little endian test
1324
cat > $TMPC << EOF
1325
#include <inttypes.h>
1326
int main(int argc, char ** argv){
1327
        volatile uint32_t i=0x01234567;
1328
        return (*((uint8_t*)(&i))) == 0x67;
1329
}
1330
EOF
1331

    
1332
if compile_prog "" "" ; then
1333
$TMPE && bigendian="yes"
1334
else
1335
echo big/little test failed
1336
fi
1337

    
1338
else
1339

    
1340
# if cross compiling, cannot launch a program, so make a static guess
1341
case "$cpu" in
1342
  arm)
1343
    # ARM can be either way; ask the compiler which one we are
1344
    if check_define __ARMEB__; then
1345
      bigendian=yes
1346
    fi
1347
  ;;
1348
  hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
1349
    bigendian=yes
1350
  ;;
1351
esac
1352

    
1353
fi
1354

    
1355
##########################################
1356
# NPTL probe
1357

    
1358
if test "$nptl" != "no" ; then
1359
  cat > $TMPC <<EOF
1360
#include <sched.h>
1361
#include <linux/futex.h>
1362
int main(void) {
1363
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1364
#error bork
1365
#endif
1366
  return 0;
1367
}
1368
EOF
1369

    
1370
  if compile_object ; then
1371
    nptl=yes
1372
  else
1373
    if test "$nptl" = "yes" ; then
1374
      feature_not_found "nptl"
1375
    fi
1376
    nptl=no
1377
  fi
1378
fi
1379

    
1380
##########################################
1381
# zlib check
1382

    
1383
if test "$zlib" != "no" ; then
1384
    cat > $TMPC << EOF
1385
#include <zlib.h>
1386
int main(void) { zlibVersion(); return 0; }
1387
EOF
1388
    if compile_prog "" "-lz" ; then
1389
        :
1390
    else
1391
        echo
1392
        echo "Error: zlib check failed"
1393
        echo "Make sure to have the zlib libs and headers installed."
1394
        echo
1395
        exit 1
1396
    fi
1397
fi
1398

    
1399
##########################################
1400
# libseccomp check
1401

    
1402
if test "$seccomp" != "no" ; then
1403
    if $pkg_config libseccomp --modversion >/dev/null 2>&1; then
1404
        LIBS=`$pkg_config --libs libseccomp`
1405
	seccomp="yes"
1406
    else
1407
	if test "$seccomp" = "yes"; then
1408
            feature_not_found "libseccomp"
1409
	fi
1410
	seccomp="no"
1411
    fi
1412
fi
1413
##########################################
1414
# xen probe
1415

    
1416
if test "$xen" != "no" ; then
1417
  xen_libs="-lxenstore -lxenctrl -lxenguest"
1418

    
1419
  # First we test whether Xen headers and libraries are available.
1420
  # If no, we are done and there is no Xen support.
1421
  # If yes, more tests are run to detect the Xen version.
1422

    
1423
  # Xen (any)
1424
  cat > $TMPC <<EOF
1425
#include <xenctrl.h>
1426
int main(void) {
1427
  return 0;
1428
}
1429
EOF
1430
  if ! compile_prog "" "$xen_libs" ; then
1431
    # Xen not found
1432
    if test "$xen" = "yes" ; then
1433
      feature_not_found "xen"
1434
    fi
1435
    xen=no
1436

    
1437
  # Xen unstable
1438
  elif
1439
      cat > $TMPC <<EOF &&
1440
#include <xenctrl.h>
1441
#include <xenstore.h>
1442
#include <stdint.h>
1443
#include <xen/hvm/hvm_info_table.h>
1444
#if !defined(HVM_MAX_VCPUS)
1445
# error HVM_MAX_VCPUS not defined
1446
#endif
1447
int main(void) {
1448
  xc_interface *xc;
1449
  xs_daemon_open();
1450
  xc = xc_interface_open(0, 0, 0);
1451
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1452
  xc_gnttab_open(NULL, 0);
1453
  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1454
  xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1455
  return 0;
1456
}
1457
EOF
1458
      compile_prog "" "$xen_libs"
1459
    then
1460
    xen_ctrl_version=420
1461
    xen=yes
1462

    
1463
  elif
1464
      cat > $TMPC <<EOF &&
1465
#include <xenctrl.h>
1466
#include <xs.h>
1467
#include <stdint.h>
1468
#include <xen/hvm/hvm_info_table.h>
1469
#if !defined(HVM_MAX_VCPUS)
1470
# error HVM_MAX_VCPUS not defined
1471
#endif
1472
int main(void) {
1473
  xs_daemon_open();
1474
  xc_interface_open(0, 0, 0);
1475
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1476
  xc_gnttab_open(NULL, 0);
1477
  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1478
  return 0;
1479
}
1480
EOF
1481
      compile_prog "" "$xen_libs"
1482
    then
1483
    xen_ctrl_version=410
1484
    xen=yes
1485

    
1486
  # Xen 4.0.0
1487
  elif
1488
      cat > $TMPC <<EOF &&
1489
#include <xenctrl.h>
1490
#include <xs.h>
1491
#include <stdint.h>
1492
#include <xen/hvm/hvm_info_table.h>
1493
#if !defined(HVM_MAX_VCPUS)
1494
# error HVM_MAX_VCPUS not defined
1495
#endif
1496
int main(void) {
1497
  struct xen_add_to_physmap xatp = {
1498
    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1499
  };
1500
  xs_daemon_open();
1501
  xc_interface_open();
1502
  xc_gnttab_open();
1503
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1504
  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1505
  return 0;
1506
}
1507
EOF
1508
      compile_prog "" "$xen_libs"
1509
    then
1510
    xen_ctrl_version=400
1511
    xen=yes
1512

    
1513
  # Xen 3.4.0
1514
  elif
1515
      cat > $TMPC <<EOF &&
1516
#include <xenctrl.h>
1517
#include <xs.h>
1518
int main(void) {
1519
  struct xen_add_to_physmap xatp = {
1520
    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1521
  };
1522
  xs_daemon_open();
1523
  xc_interface_open();
1524
  xc_gnttab_open();
1525
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1526
  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1527
  return 0;
1528
}
1529
EOF
1530
      compile_prog "" "$xen_libs"
1531
    then
1532
    xen_ctrl_version=340
1533
    xen=yes
1534

    
1535
  # Xen 3.3.0
1536
  elif
1537
      cat > $TMPC <<EOF &&
1538
#include <xenctrl.h>
1539
#include <xs.h>
1540
int main(void) {
1541
  xs_daemon_open();
1542
  xc_interface_open();
1543
  xc_gnttab_open();
1544
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1545
  return 0;
1546
}
1547
EOF
1548
      compile_prog "" "$xen_libs"
1549
    then
1550
    xen_ctrl_version=330
1551
    xen=yes
1552

    
1553
  # Xen version unsupported
1554
  else
1555
    if test "$xen" = "yes" ; then
1556
      feature_not_found "xen (unsupported version)"
1557
    fi
1558
    xen=no
1559
  fi
1560

    
1561
  if test "$xen" = yes; then
1562
    libs_softmmu="$xen_libs $libs_softmmu"
1563
  fi
1564
fi
1565

    
1566
if test "$xen_pci_passthrough" != "no"; then
1567
  if test "$xen" = "yes" && test "$linux" = "yes" &&
1568
    test "$xen_ctrl_version" -ge 340; then
1569
    xen_pci_passthrough=yes
1570
  else
1571
    if test "$xen_pci_passthrough" = "yes"; then
1572
      echo "ERROR"
1573
      echo "ERROR: User requested feature Xen PCI Passthrough"
1574
      echo "ERROR: but this feature require /sys from Linux"
1575
      if test "$xen_ctrl_version" -lt 340; then
1576
        echo "ERROR: This feature does not work with Xen 3.3"
1577
      fi
1578
      echo "ERROR"
1579
      exit 1;
1580
    fi
1581
    xen_pci_passthrough=no
1582
  fi
1583
fi
1584

    
1585
##########################################
1586
# pkg-config probe
1587

    
1588
if ! has "$pkg_config_exe"; then
1589
  echo "Error: pkg-config binary '$pkg_config_exe' not found"
1590
  exit 1
1591
fi
1592

    
1593
##########################################
1594
# libtool probe
1595

    
1596
if ! has $libtool; then
1597
    libtool=
1598
fi
1599

    
1600
##########################################
1601
# Sparse probe
1602
if test "$sparse" != "no" ; then
1603
  if has cgcc; then
1604
    sparse=yes
1605
  else
1606
    if test "$sparse" = "yes" ; then
1607
      feature_not_found "sparse"
1608
    fi
1609
    sparse=no
1610
  fi
1611
fi
1612

    
1613
##########################################
1614
# SDL probe
1615

    
1616
# Look for sdl configuration program (pkg-config or sdl-config).  Try
1617
# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
1618
if test "`basename $sdl_config`" != sdl-config && ! has ${sdl_config}; then
1619
  sdl_config=sdl-config
1620
fi
1621

    
1622
if $pkg_config sdl --modversion >/dev/null 2>&1; then
1623
  sdlconfig="$pkg_config sdl"
1624
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
1625
elif has ${sdl_config}; then
1626
  sdlconfig="$sdl_config"
1627
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1628
else
1629
  if test "$sdl" = "yes" ; then
1630
    feature_not_found "sdl"
1631
  fi
1632
  sdl=no
1633
fi
1634
if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
1635
  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
1636
fi
1637

    
1638
sdl_too_old=no
1639
if test "$sdl" != "no" ; then
1640
  cat > $TMPC << EOF
1641
#include <SDL.h>
1642
#undef main /* We don't want SDL to override our main() */
1643
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
1644
EOF
1645
  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
1646
  if test "$static" = "yes" ; then
1647
    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
1648
  else
1649
    sdl_libs=`$sdlconfig --libs 2> /dev/null`
1650
  fi
1651
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1652
    if test "$_sdlversion" -lt 121 ; then
1653
      sdl_too_old=yes
1654
    else
1655
      if test "$cocoa" = "no" ; then
1656
        sdl=yes
1657
      fi
1658
    fi
1659

    
1660
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
1661
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
1662
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1663
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
1664
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
1665
      fi
1666
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1667
	:
1668
      else
1669
        sdl=no
1670
      fi
1671
    fi # static link
1672
  else # sdl not found
1673
    if test "$sdl" = "yes" ; then
1674
      feature_not_found "sdl"
1675
    fi
1676
    sdl=no
1677
  fi # sdl compile test
1678
fi
1679

    
1680
if test "$sdl" = "yes" ; then
1681
  cat > $TMPC <<EOF
1682
#include <SDL.h>
1683
#if defined(SDL_VIDEO_DRIVER_X11)
1684
#include <X11/XKBlib.h>
1685
#else
1686
#error No x11 support
1687
#endif
1688
int main(void) { return 0; }
1689
EOF
1690
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1691
    sdl_libs="$sdl_libs -lX11"
1692
  fi
1693
  libs_softmmu="$sdl_libs $libs_softmmu"
1694
fi
1695

    
1696
##########################################
1697
# VNC TLS detection
1698
if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
1699
  cat > $TMPC <<EOF
1700
#include <gnutls/gnutls.h>
1701
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
1702
EOF
1703
  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
1704
  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
1705
  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
1706
    vnc_tls=yes
1707
    libs_softmmu="$vnc_tls_libs $libs_softmmu"
1708
  else
1709
    if test "$vnc_tls" = "yes" ; then
1710
      feature_not_found "vnc-tls"
1711
    fi
1712
    vnc_tls=no
1713
  fi
1714
fi
1715

    
1716
##########################################
1717
# VNC SASL detection
1718
if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
1719
  cat > $TMPC <<EOF
1720
#include <sasl/sasl.h>
1721
#include <stdio.h>
1722
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
1723
EOF
1724
  # Assuming Cyrus-SASL installed in /usr prefix
1725
  vnc_sasl_cflags=""
1726
  vnc_sasl_libs="-lsasl2"
1727
  if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
1728
    vnc_sasl=yes
1729
    libs_softmmu="$vnc_sasl_libs $libs_softmmu"
1730
  else
1731
    if test "$vnc_sasl" = "yes" ; then
1732
      feature_not_found "vnc-sasl"
1733
    fi
1734
    vnc_sasl=no
1735
  fi
1736
fi
1737

    
1738
##########################################
1739
# VNC JPEG detection
1740
if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
1741
cat > $TMPC <<EOF
1742
#include <stdio.h>
1743
#include <jpeglib.h>
1744
int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
1745
EOF
1746
    vnc_jpeg_cflags=""
1747
    vnc_jpeg_libs="-ljpeg"
1748
  if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
1749
    vnc_jpeg=yes
1750
    libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
1751
  else
1752
    if test "$vnc_jpeg" = "yes" ; then
1753
      feature_not_found "vnc-jpeg"
1754
    fi
1755
    vnc_jpeg=no
1756
  fi
1757
fi
1758

    
1759
##########################################
1760
# VNC PNG detection
1761
if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
1762
cat > $TMPC <<EOF
1763
//#include <stdio.h>
1764
#include <png.h>
1765
#include <stddef.h>
1766
int main(void) {
1767
    png_structp png_ptr;
1768
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
1769
    return png_ptr != 0;
1770
}
1771
EOF
1772
  if $pkg_config libpng --modversion >/dev/null 2>&1; then
1773
    vnc_png_cflags=`$pkg_config libpng --cflags 2> /dev/null`
1774
    vnc_png_libs=`$pkg_config libpng --libs 2> /dev/null`
1775
  else
1776
    vnc_png_cflags=""
1777
    vnc_png_libs="-lpng"
1778
  fi
1779
  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
1780
    vnc_png=yes
1781
    libs_softmmu="$vnc_png_libs $libs_softmmu"
1782
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
1783
  else
1784
    if test "$vnc_png" = "yes" ; then
1785
      feature_not_found "vnc-png"
1786
    fi
1787
    vnc_png=no
1788
  fi
1789
fi
1790

    
1791
##########################################
1792
# fnmatch() probe, used for ACL routines
1793
fnmatch="no"
1794
cat > $TMPC << EOF
1795
#include <fnmatch.h>
1796
int main(void)
1797
{
1798
    fnmatch("foo", "foo", 0);
1799
    return 0;
1800
}
1801
EOF
1802
if compile_prog "" "" ; then
1803
   fnmatch="yes"
1804
fi
1805

    
1806
##########################################
1807
# uuid_generate() probe, used for vdi block driver
1808
if test "$uuid" != "no" ; then
1809
  uuid_libs="-luuid"
1810
  cat > $TMPC << EOF
1811
#include <uuid/uuid.h>
1812
int main(void)
1813
{
1814
    uuid_t my_uuid;
1815
    uuid_generate(my_uuid);
1816
    return 0;
1817
}
1818
EOF
1819
  if compile_prog "" "$uuid_libs" ; then
1820
    uuid="yes"
1821
    libs_softmmu="$uuid_libs $libs_softmmu"
1822
    libs_tools="$uuid_libs $libs_tools"
1823
  else
1824
    if test "$uuid" = "yes" ; then
1825
      feature_not_found "uuid"
1826
    fi
1827
    uuid=no
1828
  fi
1829
fi
1830

    
1831
##########################################
1832
# xfsctl() probe, used for raw-posix
1833
if test "$xfs" != "no" ; then
1834
  cat > $TMPC << EOF
1835
#include <stddef.h>  /* NULL */
1836
#include <xfs/xfs.h>
1837
int main(void)
1838
{
1839
    xfsctl(NULL, 0, 0, NULL);
1840
    return 0;
1841
}
1842
EOF
1843
  if compile_prog "" "" ; then
1844
    xfs="yes"
1845
  else
1846
    if test "$xfs" = "yes" ; then
1847
      feature_not_found "xfs"
1848
    fi
1849
    xfs=no
1850
  fi
1851
fi
1852

    
1853
##########################################
1854
# vde libraries probe
1855
if test "$vde" != "no" ; then
1856
  vde_libs="-lvdeplug"
1857
  cat > $TMPC << EOF
1858
#include <libvdeplug.h>
1859
int main(void)
1860
{
1861
    struct vde_open_args a = {0, 0, 0};
1862
    char s[] = "";
1863
    vde_open(s, s, &a);
1864
    return 0;
1865
}
1866
EOF
1867
  if compile_prog "" "$vde_libs" ; then
1868
    vde=yes
1869
    libs_softmmu="$vde_libs $libs_softmmu"
1870
    libs_tools="$vde_libs $libs_tools"
1871
  else
1872
    if test "$vde" = "yes" ; then
1873
      feature_not_found "vde"
1874
    fi
1875
    vde=no
1876
  fi
1877
fi
1878

    
1879
##########################################
1880
# libcap-ng library probe
1881
if test "$cap_ng" != "no" ; then
1882
  cap_libs="-lcap-ng"
1883
  cat > $TMPC << EOF
1884
#include <cap-ng.h>
1885
int main(void)
1886
{
1887
    capng_capability_to_name(CAPNG_EFFECTIVE);
1888
    return 0;
1889
}
1890
EOF
1891
  if compile_prog "" "$cap_libs" ; then
1892
    cap_ng=yes
1893
    libs_tools="$cap_libs $libs_tools"
1894
  else
1895
    if test "$cap_ng" = "yes" ; then
1896
      feature_not_found "cap_ng"
1897
    fi
1898
    cap_ng=no
1899
  fi
1900
fi
1901

    
1902
##########################################
1903
# Sound support libraries probe
1904

    
1905
audio_drv_probe()
1906
{
1907
    drv=$1
1908
    hdr=$2
1909
    lib=$3
1910
    exp=$4
1911
    cfl=$5
1912
        cat > $TMPC << EOF
1913
#include <$hdr>
1914
int main(void) { $exp }
1915
EOF
1916
    if compile_prog "$cfl" "$lib" ; then
1917
        :
1918
    else
1919
        echo
1920
        echo "Error: $drv check failed"
1921
        echo "Make sure to have the $drv libs and headers installed."
1922
        echo
1923
        exit 1
1924
    fi
1925
}
1926

    
1927
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1928
for drv in $audio_drv_list; do
1929
    case $drv in
1930
    alsa)
1931
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
1932
        "return snd_pcm_close((snd_pcm_t *)0);"
1933
    libs_softmmu="-lasound $libs_softmmu"
1934
    ;;
1935

    
1936
    fmod)
1937
    if test -z $fmod_lib || test -z $fmod_inc; then
1938
        echo
1939
        echo "Error: You must specify path to FMOD library and headers"
1940
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
1941
        echo
1942
        exit 1
1943
    fi
1944
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
1945
    libs_softmmu="$fmod_lib $libs_softmmu"
1946
    ;;
1947

    
1948
    esd)
1949
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1950
    libs_softmmu="-lesd $libs_softmmu"
1951
    audio_pt_int="yes"
1952
    ;;
1953

    
1954
    pa)
1955
    audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
1956
        "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
1957
    libs_softmmu="-lpulse $libs_softmmu"
1958
    audio_pt_int="yes"
1959
    ;;
1960

    
1961
    coreaudio)
1962
      libs_softmmu="-framework CoreAudio $libs_softmmu"
1963
    ;;
1964

    
1965
    dsound)
1966
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1967
      audio_win_int="yes"
1968
    ;;
1969

    
1970
    oss)
1971
      libs_softmmu="$oss_lib $libs_softmmu"
1972
    ;;
1973

    
1974
    sdl|wav)
1975
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
1976
    ;;
1977

    
1978
    winwave)
1979
      libs_softmmu="-lwinmm $libs_softmmu"
1980
      audio_win_int="yes"
1981
    ;;
1982

    
1983
    *)
1984
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
1985
        echo
1986
        echo "Error: Unknown driver '$drv' selected"
1987
        echo "Possible drivers are: $audio_possible_drivers"
1988
        echo
1989
        exit 1
1990
    }
1991
    ;;
1992
    esac
1993
done
1994

    
1995
##########################################
1996
# BrlAPI probe
1997

    
1998
if test "$brlapi" != "no" ; then
1999
  brlapi_libs="-lbrlapi"
2000
  cat > $TMPC << EOF
2001
#include <brlapi.h>
2002
#include <stddef.h>
2003
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2004
EOF
2005
  if compile_prog "" "$brlapi_libs" ; then
2006
    brlapi=yes
2007
    libs_softmmu="$brlapi_libs $libs_softmmu"
2008
  else
2009
    if test "$brlapi" = "yes" ; then
2010
      feature_not_found "brlapi"
2011
    fi
2012
    brlapi=no
2013
  fi
2014
fi
2015

    
2016
##########################################
2017
# curses probe
2018
if test "$mingw32" = "yes" ; then
2019
    curses_list="-lpdcurses"
2020
else
2021
    curses_list="-lncurses -lcurses"
2022
fi
2023

    
2024
if test "$curses" != "no" ; then
2025
  curses_found=no
2026
  cat > $TMPC << EOF
2027
#include <curses.h>
2028
int main(void) {
2029
  const char *s = curses_version();
2030
  resize_term(0, 0);
2031
  return s != 0;
2032
}
2033
EOF
2034
  for curses_lib in $curses_list; do
2035
    if compile_prog "" "$curses_lib" ; then
2036
      curses_found=yes
2037
      libs_softmmu="$curses_lib $libs_softmmu"
2038
      break
2039
    fi
2040
  done
2041
  if test "$curses_found" = "yes" ; then
2042
    curses=yes
2043
  else
2044
    if test "$curses" = "yes" ; then
2045
      feature_not_found "curses"
2046
    fi
2047
    curses=no
2048
  fi
2049
fi
2050

    
2051
##########################################
2052
# curl probe
2053

    
2054
if $pkg_config libcurl --modversion >/dev/null 2>&1; then
2055
  curlconfig="$pkg_config libcurl"
2056
else
2057
  curlconfig=curl-config
2058
fi
2059

    
2060
if test "$curl" != "no" ; then
2061
  cat > $TMPC << EOF
2062
#include <curl/curl.h>
2063
int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2064
EOF
2065
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
2066
  curl_libs=`$curlconfig --libs 2>/dev/null`
2067
  if compile_prog "$curl_cflags" "$curl_libs" ; then
2068
    curl=yes
2069
    libs_tools="$curl_libs $libs_tools"
2070
    libs_softmmu="$curl_libs $libs_softmmu"
2071
  else
2072
    if test "$curl" = "yes" ; then
2073
      feature_not_found "curl"
2074
    fi
2075
    curl=no
2076
  fi
2077
fi # test "$curl"
2078

    
2079
##########################################
2080
# bluez support probe
2081
if test "$bluez" != "no" ; then
2082
  cat > $TMPC << EOF
2083
#include <bluetooth/bluetooth.h>
2084
int main(void) { return bt_error(0); }
2085
EOF
2086
  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2087
  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
2088
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2089
    bluez=yes
2090
    libs_softmmu="$bluez_libs $libs_softmmu"
2091
  else
2092
    if test "$bluez" = "yes" ; then
2093
      feature_not_found "bluez"
2094
    fi
2095
    bluez="no"
2096
  fi
2097
fi
2098

    
2099
##########################################
2100
# glib support probe
2101

    
2102
if test "$mingw32" = yes; then
2103
    # g_poll is required in order to integrate with the glib main loop.
2104
    glib_req_ver=2.20
2105
else
2106
    glib_req_ver=2.12
2107
fi
2108
if $pkg_config --atleast-version=$glib_req_ver gthread-2.0 > /dev/null 2>&1
2109
then
2110
    glib_cflags=`$pkg_config --cflags gthread-2.0 2>/dev/null`
2111
    glib_libs=`$pkg_config --libs gthread-2.0 2>/dev/null`
2112
    LIBS="$glib_libs $LIBS"
2113
    libs_qga="$glib_libs $libs_qga"
2114
else
2115
    echo "glib-$glib_req_ver required to compile QEMU"
2116
    exit 1
2117
fi
2118

    
2119
##########################################
2120
# libcap probe
2121

    
2122
if test "$cap" != "no" ; then
2123
  cat > $TMPC <<EOF
2124
#include <stdio.h>
2125
#include <sys/capability.h>
2126
int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2127
EOF
2128
  if compile_prog "" "-lcap" ; then
2129
    cap=yes
2130
  else
2131
    cap=no
2132
  fi
2133
fi
2134

    
2135
##########################################
2136
# pthread probe
2137
PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
2138

    
2139
pthread=no
2140
cat > $TMPC << EOF
2141
#include <pthread.h>
2142
static void *f(void *p) { return NULL; }
2143
int main(void) {
2144
  pthread_t thread;
2145
  pthread_create(&thread, 0, f, 0);
2146
  return 0;
2147
}
2148
EOF
2149
if compile_prog "" "" ; then
2150
  pthread=yes
2151
else
2152
  for pthread_lib in $PTHREADLIBS_LIST; do
2153
    if compile_prog "" "$pthread_lib" ; then
2154
      pthread=yes
2155
      found=no
2156
      for lib_entry in $LIBS; do
2157
        if test "$lib_entry" = "$pthread_lib"; then
2158
          found=yes
2159
          break
2160
        fi
2161
      done
2162
      if test "$found" = "no"; then
2163
        LIBS="$pthread_lib $LIBS"
2164
      fi
2165
      break
2166
    fi
2167
  done
2168
fi
2169

    
2170
if test "$mingw32" != yes -a "$pthread" = no; then
2171
  echo
2172
  echo "Error: pthread check failed"
2173
  echo "Make sure to have the pthread libs and headers installed."
2174
  echo
2175
  exit 1
2176
fi
2177

    
2178
##########################################
2179
# rbd probe
2180
if test "$rbd" != "no" ; then
2181
  cat > $TMPC <<EOF
2182
#include <stdio.h>
2183
#include <rbd/librbd.h>
2184
int main(void) {
2185
    rados_t cluster;
2186
    rados_create(&cluster, NULL);
2187
    return 0;
2188
}
2189
EOF
2190
  rbd_libs="-lrbd -lrados"
2191
  if compile_prog "" "$rbd_libs" ; then
2192
    rbd=yes
2193
    libs_tools="$rbd_libs $libs_tools"
2194
    libs_softmmu="$rbd_libs $libs_softmmu"
2195
  else
2196
    if test "$rbd" = "yes" ; then
2197
      feature_not_found "rados block device"
2198
    fi
2199
    rbd=no
2200
  fi
2201
fi
2202

    
2203
##########################################
2204
# linux-aio probe
2205

    
2206
if test "$linux_aio" != "no" ; then
2207
  cat > $TMPC <<EOF
2208
#include <libaio.h>
2209
#include <sys/eventfd.h>
2210
#include <stddef.h>
2211
int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
2212
EOF
2213
  if compile_prog "" "-laio" ; then
2214
    linux_aio=yes
2215
    libs_softmmu="$libs_softmmu -laio"
2216
    libs_tools="$libs_tools -laio"
2217
  else
2218
    if test "$linux_aio" = "yes" ; then
2219
      feature_not_found "linux AIO"
2220
    fi
2221
    linux_aio=no
2222
  fi
2223
fi
2224

    
2225
##########################################
2226
# attr probe
2227

    
2228
if test "$attr" != "no" ; then
2229
  cat > $TMPC <<EOF
2230
#include <stdio.h>
2231
#include <sys/types.h>
2232
#ifdef CONFIG_LIBATTR
2233
#include <attr/xattr.h>
2234
#else
2235
#include <sys/xattr.h>
2236
#endif
2237
int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
2238
EOF
2239
  if compile_prog "" "" ; then
2240
    attr=yes
2241
  # Older distros have <attr/xattr.h>, and need -lattr:
2242
  elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
2243
    attr=yes
2244
    LIBS="-lattr $LIBS"
2245
    libattr=yes
2246
  else
2247
    if test "$attr" = "yes" ; then
2248
      feature_not_found "ATTR"
2249
    fi
2250
    attr=no
2251
  fi
2252
fi
2253

    
2254
##########################################
2255
# iovec probe
2256
cat > $TMPC <<EOF
2257
#include <sys/types.h>
2258
#include <sys/uio.h>
2259
#include <unistd.h>
2260
int main(void) { return sizeof(struct iovec); }
2261
EOF
2262
iovec=no
2263
if compile_prog "" "" ; then
2264
  iovec=yes
2265
fi
2266

    
2267
##########################################
2268
# preadv probe
2269
cat > $TMPC <<EOF
2270
#include <sys/types.h>
2271
#include <sys/uio.h>
2272
#include <unistd.h>
2273
int main(void) { return preadv(0, 0, 0, 0); }
2274
EOF
2275
preadv=no
2276
if compile_prog "" "" ; then
2277
  preadv=yes
2278
fi
2279

    
2280
##########################################
2281
# fdt probe
2282
if test "$fdt" != "no" ; then
2283
  fdt_libs="-lfdt"
2284
  cat > $TMPC << EOF
2285
int main(void) { return 0; }
2286
EOF
2287
  if compile_prog "" "$fdt_libs" ; then
2288
    fdt=yes
2289
  else
2290
    if test "$fdt" = "yes" ; then
2291
      feature_not_found "fdt"
2292
    fi
2293
    fdt_libs=
2294
    fdt=no
2295
  fi
2296
fi
2297

    
2298
##########################################
2299
# opengl probe, used by milkymist-tmu2
2300
if test "$opengl" != "no" ; then
2301
  opengl_libs="-lGL"
2302
  cat > $TMPC << EOF
2303
#include <X11/Xlib.h>
2304
#include <GL/gl.h>
2305
#include <GL/glx.h>
2306
int main(void) { return GL_VERSION != 0; }
2307
EOF
2308
  if compile_prog "" "-lGL" ; then
2309
    opengl=yes
2310
  else
2311
    if test "$opengl" = "yes" ; then
2312
      feature_not_found "opengl"
2313
    fi
2314
    opengl_libs=
2315
    opengl=no
2316
  fi
2317
fi
2318

    
2319
##########################################
2320
# glusterfs probe
2321
if test "$glusterfs" != "no" ; then
2322
  cat > $TMPC <<EOF
2323
#include <glusterfs/api/glfs.h>
2324
int main(void) {
2325
    (void) glfs_new("volume");
2326
    return 0;
2327
}
2328
EOF
2329
  glusterfs_libs="-lgfapi -lgfrpc -lgfxdr"
2330
  if compile_prog "" "$glusterfs_libs" ; then
2331
    glusterfs=yes
2332
    libs_tools="$glusterfs_libs $libs_tools"
2333
    libs_softmmu="$glusterfs_libs $libs_softmmu"
2334
  else
2335
    if test "$glusterfs" = "yes" ; then
2336
      feature_not_found "GlusterFS backend support"
2337
    fi
2338
    glusterfs=no
2339
  fi
2340
fi
2341

    
2342
#
2343
# Check for xxxat() functions when we are building linux-user
2344
# emulator.  This is done because older glibc versions don't
2345
# have syscall stubs for these implemented.
2346
#
2347
atfile=no
2348
cat > $TMPC << EOF
2349
#define _ATFILE_SOURCE
2350
#include <sys/types.h>
2351
#include <fcntl.h>
2352
#include <unistd.h>
2353

    
2354
int
2355
main(void)
2356
{
2357
	/* try to unlink nonexisting file */
2358
	return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
2359
}
2360
EOF
2361
if compile_prog "" "" ; then
2362
  atfile=yes
2363
fi
2364

    
2365
# Check for inotify functions when we are building linux-user
2366
# emulator.  This is done because older glibc versions don't
2367
# have syscall stubs for these implemented.  In that case we
2368
# don't provide them even if kernel supports them.
2369
#
2370
inotify=no
2371
cat > $TMPC << EOF
2372
#include <sys/inotify.h>
2373

    
2374
int
2375
main(void)
2376
{
2377
	/* try to start inotify */
2378
	return inotify_init();
2379
}
2380
EOF
2381
if compile_prog "" "" ; then
2382
  inotify=yes
2383
fi
2384

    
2385
inotify1=no
2386
cat > $TMPC << EOF
2387
#include <sys/inotify.h>
2388

    
2389
int
2390
main(void)
2391
{
2392
    /* try to start inotify */
2393
    return inotify_init1(0);
2394
}
2395
EOF
2396
if compile_prog "" "" ; then
2397
  inotify1=yes
2398
fi
2399

    
2400
# check if utimensat and futimens are supported
2401
utimens=no
2402
cat > $TMPC << EOF
2403
#define _ATFILE_SOURCE
2404
#include <stddef.h>
2405
#include <fcntl.h>
2406
#include <sys/stat.h>
2407

    
2408
int main(void)
2409
{
2410
    utimensat(AT_FDCWD, "foo", NULL, 0);
2411
    futimens(0, NULL);
2412
    return 0;
2413
}
2414
EOF
2415
if compile_prog "" "" ; then
2416
  utimens=yes
2417
fi
2418

    
2419
# check if pipe2 is there
2420
pipe2=no
2421
cat > $TMPC << EOF
2422
#include <unistd.h>
2423
#include <fcntl.h>
2424

    
2425
int main(void)
2426
{
2427
    int pipefd[2];
2428
    pipe2(pipefd, O_CLOEXEC);
2429
    return 0;
2430
}
2431
EOF
2432
if compile_prog "" "" ; then
2433
  pipe2=yes
2434
fi
2435

    
2436
# check if accept4 is there
2437
accept4=no
2438
cat > $TMPC << EOF
2439
#include <sys/socket.h>
2440
#include <stddef.h>
2441

    
2442
int main(void)
2443
{
2444
    accept4(0, NULL, NULL, SOCK_CLOEXEC);
2445
    return 0;
2446
}
2447
EOF
2448
if compile_prog "" "" ; then
2449
  accept4=yes
2450
fi
2451

    
2452
# check if tee/splice is there. vmsplice was added same time.
2453
splice=no
2454
cat > $TMPC << EOF
2455
#include <unistd.h>
2456
#include <fcntl.h>
2457
#include <limits.h>
2458

    
2459
int main(void)
2460
{
2461
    int len, fd = 0;
2462
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
2463
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
2464
    return 0;
2465
}
2466
EOF
2467
if compile_prog "" "" ; then
2468
  splice=yes
2469
fi
2470

    
2471
##########################################
2472
# signalfd probe
2473
signalfd="no"
2474
cat > $TMPC << EOF
2475
#include <unistd.h>
2476
#include <sys/syscall.h>
2477
#include <signal.h>
2478
int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
2479
EOF
2480

    
2481
if compile_prog "" "" ; then
2482
  signalfd=yes
2483
fi
2484

    
2485
# check if eventfd is supported
2486
eventfd=no
2487
cat > $TMPC << EOF
2488
#include <sys/eventfd.h>
2489

    
2490
int main(void)
2491
{
2492
    return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
2493
}
2494
EOF
2495
if compile_prog "" "" ; then
2496
  eventfd=yes
2497
fi
2498

    
2499
# check for fallocate
2500
fallocate=no
2501
cat > $TMPC << EOF
2502
#include <fcntl.h>
2503

    
2504
int main(void)
2505
{
2506
    fallocate(0, 0, 0, 0);
2507
    return 0;
2508
}
2509
EOF
2510
if compile_prog "" "" ; then
2511
  fallocate=yes
2512
fi
2513

    
2514
# check for sync_file_range
2515
sync_file_range=no
2516
cat > $TMPC << EOF
2517
#include <fcntl.h>
2518

    
2519
int main(void)
2520
{
2521
    sync_file_range(0, 0, 0, 0);
2522
    return 0;
2523
}
2524
EOF
2525
if compile_prog "" "" ; then
2526
  sync_file_range=yes
2527
fi
2528

    
2529
# check for linux/fiemap.h and FS_IOC_FIEMAP
2530
fiemap=no
2531
cat > $TMPC << EOF
2532
#include <sys/ioctl.h>
2533
#include <linux/fs.h>
2534
#include <linux/fiemap.h>
2535

    
2536
int main(void)
2537
{
2538
    ioctl(0, FS_IOC_FIEMAP, 0);
2539
    return 0;
2540
}
2541
EOF
2542
if compile_prog "" "" ; then
2543
  fiemap=yes
2544
fi
2545

    
2546
# check for dup3
2547
dup3=no
2548
cat > $TMPC << EOF
2549
#include <unistd.h>
2550

    
2551
int main(void)
2552
{
2553
    dup3(0, 0, 0);
2554
    return 0;
2555
}
2556
EOF
2557
if compile_prog "" "" ; then
2558
  dup3=yes
2559
fi
2560

    
2561
# check for epoll support
2562
epoll=no
2563
cat > $TMPC << EOF
2564
#include <sys/epoll.h>
2565

    
2566
int main(void)
2567
{
2568
    epoll_create(0);
2569
    return 0;
2570
}
2571
EOF
2572
if compile_prog "" "" ; then
2573
  epoll=yes
2574
fi
2575

    
2576
# epoll_create1 and epoll_pwait are later additions
2577
# so we must check separately for their presence
2578
epoll_create1=no
2579
cat > $TMPC << EOF
2580
#include <sys/epoll.h>
2581

    
2582
int main(void)
2583
{
2584
    /* Note that we use epoll_create1 as a value, not as
2585
     * a function being called. This is necessary so that on
2586
     * old SPARC glibc versions where the function was present in
2587
     * the library but not declared in the header file we will
2588
     * fail the configure check. (Otherwise we will get a compiler
2589
     * warning but not an error, and will proceed to fail the
2590
     * qemu compile where we compile with -Werror.)
2591
     */
2592
    return (int)(uintptr_t)&epoll_create1;
2593
}
2594
EOF
2595
if compile_prog "" "" ; then
2596
  epoll_create1=yes
2597
fi
2598

    
2599
epoll_pwait=no
2600
cat > $TMPC << EOF
2601
#include <sys/epoll.h>
2602

    
2603
int main(void)
2604
{
2605
    epoll_pwait(0, 0, 0, 0, 0);
2606
    return 0;
2607
}
2608
EOF
2609
if compile_prog "" "" ; then
2610
  epoll_pwait=yes
2611
fi
2612

    
2613
# Check if tools are available to build documentation.
2614
if test "$docs" != "no" ; then
2615
  if has makeinfo && has pod2man; then
2616
    docs=yes
2617
  else
2618
    if test "$docs" = "yes" ; then
2619
      feature_not_found "docs"
2620
    fi
2621
    docs=no
2622
  fi
2623
fi
2624

    
2625
# Search for bswap_32 function
2626
byteswap_h=no
2627
cat > $TMPC << EOF
2628
#include <byteswap.h>
2629
int main(void) { return bswap_32(0); }
2630
EOF
2631
if compile_prog "" "" ; then
2632
  byteswap_h=yes
2633
fi
2634

    
2635
# Search for bswap_32 function
2636
bswap_h=no
2637
cat > $TMPC << EOF
2638
#include <sys/endian.h>
2639
#include <sys/types.h>
2640
#include <machine/bswap.h>
2641
int main(void) { return bswap32(0); }
2642
EOF
2643
if compile_prog "" "" ; then
2644
  bswap_h=yes
2645
fi
2646

    
2647
##########################################
2648
# Do we have libiscsi
2649
# We check for iscsi_unmap_sync() to make sure we have a
2650
# recent enough version of libiscsi.
2651
if test "$libiscsi" != "no" ; then
2652
  cat > $TMPC << EOF
2653
#include <stdio.h>
2654
#include <iscsi/iscsi.h>
2655
int main(void) { iscsi_unmap_sync(NULL,0,0,0,NULL,0); return 0; }
2656
EOF
2657
  if compile_prog "" "-liscsi" ; then
2658
    libiscsi="yes"
2659
    LIBS="$LIBS -liscsi"
2660
  else
2661
    if test "$libiscsi" = "yes" ; then
2662
      feature_not_found "libiscsi"
2663
    fi
2664
    libiscsi="no"
2665
  fi
2666
fi
2667

    
2668

    
2669
##########################################
2670
# Do we need libm
2671
cat > $TMPC << EOF
2672
#include <math.h>
2673
int main(void) { return isnan(sin(0.0)); }
2674
EOF
2675
if compile_prog "" "" ; then
2676
  :
2677
elif compile_prog "" "-lm" ; then
2678
  LIBS="-lm $LIBS"
2679
  libs_qga="-lm $libs_qga"
2680
else
2681
  echo
2682
  echo "Error: libm check failed"
2683
  echo
2684
  exit 1
2685
fi
2686

    
2687
##########################################
2688
# Do we need librt
2689
# uClibc provides 2 versions of clock_gettime(), one with realtime
2690
# support and one without. This means that the clock_gettime() don't
2691
# need -lrt. We still need it for timer_create() so we check for this
2692
# function in addition.
2693
cat > $TMPC <<EOF
2694
#include <signal.h>
2695
#include <time.h>
2696
int main(void) {
2697
  timer_create(CLOCK_REALTIME, NULL, NULL);
2698
  return clock_gettime(CLOCK_REALTIME, NULL);
2699
}
2700
EOF
2701

    
2702
if compile_prog "" "" ; then
2703
  :
2704
# we need pthread for static linking. use previous pthread test result
2705
elif compile_prog "" "-lrt $pthread_lib" ; then
2706
  LIBS="-lrt $LIBS"
2707
  libs_qga="-lrt $libs_qga"
2708
fi
2709

    
2710
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
2711
        "$aix" != "yes" -a "$haiku" != "yes" ; then
2712
    libs_softmmu="-lutil $libs_softmmu"
2713
fi
2714

    
2715
##########################################
2716
# spice probe
2717
if test "$spice" != "no" ; then
2718
  cat > $TMPC << EOF
2719
#include <spice.h>
2720
int main(void) { spice_server_new(); return 0; }
2721
EOF
2722
  spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
2723
  spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
2724
  if $pkg_config --atleast-version=0.8.2 spice-server >/dev/null 2>&1 && \
2725
     $pkg_config --atleast-version=0.8.1 spice-protocol > /dev/null 2>&1 && \
2726
     compile_prog "$spice_cflags" "$spice_libs" ; then
2727
    spice="yes"
2728
    libs_softmmu="$libs_softmmu $spice_libs"
2729
    QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
2730
    spice_protocol_version=$($pkg_config --modversion spice-protocol)
2731
    spice_server_version=$($pkg_config --modversion spice-server)
2732
    if $pkg_config --atleast-version=0.12.0 spice-protocol >/dev/null 2>&1; then
2733
        spice_qxl_io_monitors_config_async="yes"
2734
    fi
2735
    if $pkg_config --atleast-version=0.12.2 spice-protocol > /dev/null 2>&1; then
2736
        spice_qxl_client_monitors_config="yes"
2737
    fi
2738
  else
2739
    if test "$spice" = "yes" ; then
2740
      feature_not_found "spice"
2741
    fi
2742
    spice="no"
2743
  fi
2744
fi
2745

    
2746
# check for libcacard for smartcard support
2747
if test "$smartcard" != "no" ; then
2748
    smartcard="yes"
2749
    smartcard_cflags=""
2750
    # TODO - what's the minimal nss version we support?
2751
    if test "$smartcard_nss" != "no"; then
2752
      cat > $TMPC << EOF
2753
#include <pk11pub.h>
2754
int main(void) { PK11_FreeSlot(0); return 0; }
2755
EOF
2756
        smartcard_includes="-I\$(SRC_PATH)/libcacard"
2757
        libcacard_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
2758
        libcacard_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
2759
        test_cflags="$libcacard_cflags"
2760
        # The header files in nss < 3.13.3 have a bug which causes them to
2761
        # emit a warning. If we're going to compile QEMU with -Werror, then
2762
        # test that the headers don't have this bug. Otherwise we would pass
2763
        # the configure test but fail to compile QEMU later.
2764
        if test "$werror" = "yes"; then
2765
            test_cflags="-Werror $test_cflags"
2766
        fi
2767
        if $pkg_config --atleast-version=3.12.8 nss >/dev/null 2>&1 && \
2768
          compile_prog "$test_cflags" "$libcacard_libs"; then
2769
            smartcard_nss="yes"
2770
            QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
2771
            QEMU_INCLUDES="$QEMU_INCLUDES $smartcard_includes"
2772
            libs_softmmu="$libcacard_libs $libs_softmmu"
2773
        else
2774
            if test "$smartcard_nss" = "yes"; then
2775
                feature_not_found "nss"
2776
            fi
2777
            smartcard_nss="no"
2778
        fi
2779
    fi
2780
fi
2781
if test "$smartcard" = "no" ; then
2782
    smartcard_nss="no"
2783
fi
2784

    
2785
# check for usbredirparser for usb network redirection support
2786
if test "$usb_redir" != "no" ; then
2787
    if $pkg_config --atleast-version=0.5 libusbredirparser-0.5 >/dev/null 2>&1 ; then
2788
        usb_redir="yes"
2789
        usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5 2>/dev/null)
2790
        usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5 2>/dev/null)
2791
        QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
2792
        libs_softmmu="$libs_softmmu $usb_redir_libs"
2793
    else
2794
        if test "$usb_redir" = "yes"; then
2795
            feature_not_found "usb-redir"
2796
        fi
2797
        usb_redir="no"
2798
    fi
2799
fi
2800

    
2801
##########################################
2802

    
2803
##########################################
2804
# check if we have fdatasync
2805

    
2806
fdatasync=no
2807
cat > $TMPC << EOF
2808
#include <unistd.h>
2809
int main(void) {
2810
#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
2811
return fdatasync(0);
2812
#else
2813
#error Not supported
2814
#endif
2815
}
2816
EOF
2817
if compile_prog "" "" ; then
2818
    fdatasync=yes
2819
fi
2820

    
2821
##########################################
2822
# check if we have madvise
2823

    
2824
madvise=no
2825
cat > $TMPC << EOF
2826
#include <sys/types.h>
2827
#include <sys/mman.h>
2828
#include <stddef.h>
2829
int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
2830
EOF
2831
if compile_prog "" "" ; then
2832
    madvise=yes
2833
fi
2834

    
2835
##########################################
2836
# check if we have posix_madvise
2837

    
2838
posix_madvise=no
2839
cat > $TMPC << EOF
2840
#include <sys/mman.h>
2841
#include <stddef.h>
2842
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
2843
EOF
2844
if compile_prog "" "" ; then
2845
    posix_madvise=yes
2846
fi
2847

    
2848
##########################################
2849
# check if trace backend exists
2850

    
2851
$python "$source_path/scripts/tracetool.py" "--backend=$trace_backend" --check-backend  > /dev/null 2> /dev/null
2852
if test "$?" -ne 0 ; then
2853
  echo
2854
  echo "Error: invalid trace backend"
2855
  echo "Please choose a supported trace backend."
2856
  echo
2857
  exit 1
2858
fi
2859

    
2860
##########################################
2861
# For 'ust' backend, test if ust headers are present
2862
if test "$trace_backend" = "ust"; then
2863
  cat > $TMPC << EOF
2864
#include <ust/tracepoint.h>
2865
#include <ust/marker.h>
2866
int main(void) { return 0; }
2867
EOF
2868
  if compile_prog "" "" ; then
2869
    LIBS="-lust -lurcu-bp $LIBS"
2870
    libs_qga="-lust -lurcu-bp $libs_qga"
2871
  else
2872
    echo
2873
    echo "Error: Trace backend 'ust' missing libust header files"
2874
    echo
2875
    exit 1
2876
  fi
2877
fi
2878

    
2879
##########################################
2880
# For 'dtrace' backend, test if 'dtrace' command is present
2881
if test "$trace_backend" = "dtrace"; then
2882
  if ! has 'dtrace' ; then
2883
    echo
2884
    echo "Error: dtrace command is not found in PATH $PATH"
2885
    echo
2886
    exit 1
2887
  fi
2888
  trace_backend_stap="no"
2889
  if has 'stap' ; then
2890
    trace_backend_stap="yes"
2891
  fi
2892
fi
2893

    
2894
##########################################
2895
# __sync_fetch_and_and requires at least -march=i486. Many toolchains
2896
# use i686 as default anyway, but for those that don't, an explicit
2897
# specification is necessary
2898
if test "$vhost_net" = "yes" && test "$cpu" = "i386"; then
2899
  cat > $TMPC << EOF
2900
static int sfaa(int *ptr)
2901
{
2902
  return __sync_fetch_and_and(ptr, 0);
2903
}
2904

    
2905
int main(int argc, char **argv)
2906
{
2907
  int val = 42;
2908
  sfaa(&val);
2909
  return val;
2910
}
2911
EOF
2912
  if ! compile_prog "" "" ; then
2913
    QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
2914
  fi
2915
fi
2916

    
2917
##########################################
2918
# check and set a backend for coroutine
2919

    
2920
# default is ucontext, but always fallback to gthread
2921
# windows autodetected by make
2922
if test "$coroutine" = "" -o "$coroutine" = "ucontext"; then
2923
  if test "$darwin" != "yes"; then
2924
    cat > $TMPC << EOF
2925
#include <ucontext.h>
2926
#ifdef __stub_makecontext
2927
#error Ignoring glibc stub makecontext which will always fail
2928
#endif
2929
int main(void) { makecontext(0, 0, 0); return 0; }
2930
EOF
2931
    if compile_prog "" "" ; then
2932
        coroutine_backend=ucontext
2933
    else
2934
	coroutine_backend=gthread
2935
    fi
2936
  else
2937
    echo "Silently falling back into gthread backend under darwin"
2938
  fi
2939
elif test "$coroutine" = "gthread" ; then
2940
  coroutine_backend=gthread
2941
elif test "$coroutine" = "windows" ; then
2942
  coroutine_backend=windows
2943
elif test "$coroutine" = "sigaltstack" ; then
2944
  coroutine_backend=sigaltstack
2945
else
2946
  echo
2947
  echo "Error: unknown coroutine backend $coroutine"
2948
  echo
2949
  exit 1
2950
fi
2951

    
2952
##########################################
2953
# check if we have open_by_handle_at
2954

    
2955
open_by_handle_at=no
2956
cat > $TMPC << EOF
2957
#include <fcntl.h>
2958
#if !defined(AT_EMPTY_PATH)
2959
# error missing definition
2960
#else
2961
int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
2962
#endif
2963
EOF
2964
if compile_prog "" "" ; then
2965
    open_by_handle_at=yes
2966
fi
2967

    
2968
########################################
2969
# check if we have linux/magic.h
2970

    
2971
linux_magic_h=no
2972
cat > $TMPC << EOF
2973
#include <linux/magic.h>
2974
int main(void) {
2975
  return 0;
2976
}
2977
EOF
2978
if compile_prog "" "" ; then
2979
    linux_magic_h=yes
2980
fi
2981

    
2982
########################################
2983
# check whether we can disable the -Wunused-but-set-variable
2984
# option with a pragma (this is needed to silence a warning in
2985
# some versions of the valgrind VALGRIND_STACK_DEREGISTER macro.)
2986
# This test has to be compiled with -Werror as otherwise an
2987
# unknown pragma is only a warning.
2988
pragma_disable_unused_but_set=no
2989
cat > $TMPC << EOF
2990
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
2991
int main(void) {
2992
    return 0;
2993
}
2994
EOF
2995
if compile_prog "-Werror" "" ; then
2996
    pragma_disable_unused_but_set=yes
2997
fi
2998

    
2999
########################################
3000
# check if we have valgrind/valgrind.h and valgrind/memcheck.h
3001

    
3002
valgrind_h=no
3003
cat > $TMPC << EOF
3004
#include <valgrind/valgrind.h>
3005
#include <valgrind/memcheck.h>
3006
int main(void) {
3007
  return 0;
3008
}
3009
EOF
3010
if compile_prog "" "" ; then
3011
    valgrind_h=yes
3012
fi
3013

    
3014
########################################
3015
# check if environ is declared
3016

    
3017
has_environ=no
3018
cat > $TMPC << EOF
3019
#include <unistd.h>
3020
int main(void) {
3021
    environ = 0;
3022
    return 0;
3023
}
3024
EOF
3025
if compile_prog "" "" ; then
3026
    has_environ=yes
3027
fi
3028

    
3029
##########################################
3030
# End of CC checks
3031
# After here, no more $cc or $ld runs
3032

    
3033
if test "$debug" = "no" ; then
3034
  CFLAGS="-O2 -D_FORTIFY_SOURCE=2 $CFLAGS"
3035
fi
3036

    
3037
# Disable zero malloc errors for official releases unless explicitly told to
3038
# enable/disable
3039
if test -z "$zero_malloc" ; then
3040
    if test "$z_version" = "50" ; then
3041
	zero_malloc="no"
3042
    else
3043
	zero_malloc="yes"
3044
    fi
3045
fi
3046

    
3047
# Now we've finished running tests it's OK to add -Werror to the compiler flags
3048
if test "$werror" = "yes"; then
3049
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
3050
fi
3051

    
3052
if test "$solaris" = "no" ; then
3053
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
3054
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
3055
    fi
3056
fi
3057

    
3058
# test if pod2man has --utf8 option
3059
if pod2man --help | grep -q utf8; then
3060
    POD2MAN="pod2man --utf8"
3061
else
3062
    POD2MAN="pod2man"
3063
fi
3064

    
3065
# Use ASLR, no-SEH and DEP if available
3066
if test "$mingw32" = "yes" ; then
3067
    for flag in --dynamicbase --no-seh --nxcompat; do
3068
        if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
3069
            LDFLAGS="-Wl,$flag $LDFLAGS"
3070
        fi
3071
    done
3072
fi
3073

    
3074
qemu_confdir=$sysconfdir$confsuffix
3075
qemu_datadir=$datadir$confsuffix
3076

    
3077
tools=""
3078
if test "$want_tools" = "yes" ; then
3079
  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
3080
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
3081
    tools="qemu-nbd\$(EXESUF) $tools"
3082
  fi
3083
fi
3084
if test "$softmmu" = yes ; then
3085
  if test "$virtfs" != no ; then
3086
    if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
3087
      virtfs=yes
3088
      tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
3089
    else
3090
      if test "$virtfs" = yes; then
3091
        echo "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
3092
        exit 1
3093
      fi
3094
      virtfs=no
3095
    fi
3096
  fi
3097
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
3098
    if [ "$guest_agent" = "yes" ]; then
3099
      tools="qemu-ga\$(EXESUF) $tools"
3100
    fi
3101
  fi
3102
  if test "$smartcard_nss" = "yes" ; then
3103
    tools="vscclient\$(EXESUF) $tools"
3104
  fi
3105
fi
3106

    
3107
# Mac OS X ships with a broken assembler
3108
roms=
3109
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
3110
        "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
3111
        "$softmmu" = yes ; then
3112
  roms="optionrom"
3113
fi
3114
if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
3115
  roms="$roms spapr-rtas"
3116
fi
3117

    
3118
echo "Install prefix    $prefix"
3119
echo "BIOS directory    `eval echo $qemu_datadir`"
3120
echo "binary directory  `eval echo $bindir`"
3121
echo "library directory `eval echo $libdir`"
3122
echo "libexec directory `eval echo $libexecdir`"
3123
echo "include directory `eval echo $includedir`"
3124
echo "config directory  `eval echo $sysconfdir`"
3125
echo "local state directory   `eval echo $local_statedir`"
3126
if test "$mingw32" = "no" ; then
3127
echo "Manual directory  `eval echo $mandir`"
3128
echo "ELF interp prefix $interp_prefix"
3129
fi
3130
echo "Source path       $source_path"
3131
echo "C compiler        $cc"
3132
echo "Host C compiler   $host_cc"
3133
echo "Objective-C compiler $objcc"
3134
echo "CFLAGS            $CFLAGS"
3135
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
3136
echo "LDFLAGS           $LDFLAGS"
3137
echo "make              $make"
3138
echo "install           $install"
3139
echo "python            $python"
3140
if test "$slirp" = "yes" ; then
3141
    echo "smbd              $smbd"
3142
fi
3143
echo "host CPU          $cpu"
3144
echo "host big endian   $bigendian"
3145
echo "target list       $target_list"
3146
echo "tcg debug enabled $debug_tcg"
3147
echo "gprof enabled     $gprof"
3148
echo "sparse enabled    $sparse"
3149
echo "strip binaries    $strip_opt"
3150
echo "profiler          $profiler"
3151
echo "static build      $static"
3152
echo "-Werror enabled   $werror"
3153
if test "$darwin" = "yes" ; then
3154
    echo "Cocoa support     $cocoa"
3155
fi
3156
echo "SDL support       $sdl"
3157
echo "curses support    $curses"
3158
echo "curl support      $curl"
3159
echo "mingw32 support   $mingw32"
3160
echo "Audio drivers     $audio_drv_list"
3161
echo "Extra audio cards $audio_card_list"
3162
echo "Block whitelist   $block_drv_whitelist"
3163
echo "Mixer emulation   $mixemu"
3164
echo "VirtFS support    $virtfs"
3165
echo "VNC support       $vnc"
3166
if test "$vnc" = "yes" ; then
3167
    echo "VNC TLS support   $vnc_tls"
3168
    echo "VNC SASL support  $vnc_sasl"
3169
    echo "VNC JPEG support  $vnc_jpeg"
3170
    echo "VNC PNG support   $vnc_png"
3171
fi
3172
if test -n "$sparc_cpu"; then
3173
    echo "Target Sparc Arch $sparc_cpu"
3174
fi
3175
echo "xen support       $xen"
3176
echo "brlapi support    $brlapi"
3177
echo "bluez  support    $bluez"
3178
echo "Documentation     $docs"
3179
[ ! -z "$uname_release" ] && \
3180
echo "uname -r          $uname_release"
3181
echo "NPTL support      $nptl"
3182
echo "GUEST_BASE        $guest_base"
3183
echo "PIE               $pie"
3184
echo "vde support       $vde"
3185
echo "Linux AIO support $linux_aio"
3186
echo "ATTR/XATTR support $attr"
3187
echo "Install blobs     $blobs"
3188
echo "KVM support       $kvm"
3189
echo "TCG interpreter   $tcg_interpreter"
3190
echo "fdt support       $fdt"
3191
echo "preadv support    $preadv"
3192
echo "fdatasync         $fdatasync"
3193
echo "madvise           $madvise"
3194
echo "posix_madvise     $posix_madvise"
3195
echo "uuid support      $uuid"
3196
echo "libcap-ng support $cap_ng"
3197
echo "vhost-net support $vhost_net"
3198
echo "Trace backend     $trace_backend"
3199
echo "Trace output file $trace_file-<pid>"
3200
echo "spice support     $spice ($spice_protocol_version/$spice_server_version)"
3201
echo "rbd support       $rbd"
3202
echo "xfsctl support    $xfs"
3203
echo "nss used          $smartcard_nss"
3204
echo "usb net redir     $usb_redir"
3205
echo "OpenGL support    $opengl"
3206
echo "libiscsi support  $libiscsi"
3207
echo "build guest agent $guest_agent"
3208
echo "seccomp support   $seccomp"
3209
echo "coroutine backend $coroutine_backend"
3210
echo "GlusterFS support $glusterfs"
3211

    
3212
if test "$sdl_too_old" = "yes"; then
3213
echo "-> Your SDL version is too old - please upgrade to have SDL support"
3214
fi
3215

    
3216
config_host_mak="config-host.mak"
3217
config_host_ld="config-host.ld"
3218

    
3219
echo "# Automatically generated by configure - do not modify" > $config_host_mak
3220
printf "# Configured with:" >> $config_host_mak
3221
printf " '%s'" "$0" "$@" >> $config_host_mak
3222
echo >> $config_host_mak
3223

    
3224
echo all: >> $config_host_mak
3225
echo "prefix=$prefix" >> $config_host_mak
3226
echo "bindir=$bindir" >> $config_host_mak
3227
echo "libdir=$libdir" >> $config_host_mak
3228
echo "libexecdir=$libexecdir" >> $config_host_mak
3229
echo "includedir=$includedir" >> $config_host_mak
3230
echo "mandir=$mandir" >> $config_host_mak
3231
echo "sysconfdir=$sysconfdir" >> $config_host_mak
3232
echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
3233
echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
3234
echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
3235
echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
3236
echo "CONFIG_QEMU_HELPERDIR=\"$libexecdir\"" >> $config_host_mak
3237

    
3238
echo "ARCH=$ARCH" >> $config_host_mak
3239
if test "$debug_tcg" = "yes" ; then
3240
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
3241
fi
3242
if test "$debug" = "yes" ; then
3243
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
3244
fi
3245
if test "$strip_opt" = "yes" ; then
3246
  echo "STRIP=${strip}" >> $config_host_mak
3247
fi
3248
if test "$bigendian" = "yes" ; then
3249
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
3250
fi
3251
if test "$mingw32" = "yes" ; then
3252
  echo "CONFIG_WIN32=y" >> $config_host_mak
3253
  rc_version=`cat $source_path/VERSION`
3254
  version_major=${rc_version%%.*}
3255
  rc_version=${rc_version#*.}
3256
  version_minor=${rc_version%%.*}
3257
  rc_version=${rc_version#*.}
3258
  version_subminor=${rc_version%%.*}
3259
  version_micro=0
3260
  echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
3261
  echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
3262
else
3263
  echo "CONFIG_POSIX=y" >> $config_host_mak
3264
fi
3265

    
3266
if test "$linux" = "yes" ; then
3267
  echo "CONFIG_LINUX=y" >> $config_host_mak
3268
fi
3269

    
3270
if test "$darwin" = "yes" ; then
3271
  echo "CONFIG_DARWIN=y" >> $config_host_mak
3272
fi
3273

    
3274
if test "$aix" = "yes" ; then
3275
  echo "CONFIG_AIX=y" >> $config_host_mak
3276
fi
3277

    
3278
if test "$solaris" = "yes" ; then
3279
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
3280
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
3281
  if test "$needs_libsunmath" = "yes" ; then
3282
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
3283
  fi
3284
fi
3285
if test "$haiku" = "yes" ; then
3286
  echo "CONFIG_HAIKU=y" >> $config_host_mak
3287
fi
3288
if test "$static" = "yes" ; then
3289
  echo "CONFIG_STATIC=y" >> $config_host_mak
3290
fi
3291
if test "$profiler" = "yes" ; then
3292
  echo "CONFIG_PROFILER=y" >> $config_host_mak
3293
fi
3294
if test "$slirp" = "yes" ; then
3295
  echo "CONFIG_SLIRP=y" >> $config_host_mak
3296
  echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
3297
  QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES"
3298
fi
3299
if test "$vde" = "yes" ; then
3300
  echo "CONFIG_VDE=y" >> $config_host_mak
3301
fi
3302
if test "$cap_ng" = "yes" ; then
3303
  echo "CONFIG_LIBCAP=y" >> $config_host_mak
3304
fi
3305
for card in $audio_card_list; do
3306
    def=CONFIG_`echo $card | LC_ALL=C tr '[a-z]' '[A-Z]'`
3307
    echo "$def=y" >> $config_host_mak
3308
done
3309
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
3310
for drv in $audio_drv_list; do
3311
    def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
3312
    echo "$def=y" >> $config_host_mak
3313
    if test "$drv" = "fmod"; then
3314
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
3315
    fi
3316
done
3317
if test "$audio_pt_int" = "yes" ; then
3318
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
3319
fi
3320
if test "$audio_win_int" = "yes" ; then
3321
  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
3322
fi
3323
echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
3324
if test "$mixemu" = "yes" ; then
3325
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
3326
fi
3327
if test "$vnc" = "yes" ; then
3328
  echo "CONFIG_VNC=y" >> $config_host_mak
3329
fi
3330
if test "$vnc_tls" = "yes" ; then
3331
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
3332
  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
3333
fi
3334
if test "$vnc_sasl" = "yes" ; then
3335
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
3336
  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
3337
fi
3338
if test "$vnc_jpeg" = "yes" ; then
3339
  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
3340
  echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak
3341
fi
3342
if test "$vnc_png" = "yes" ; then
3343
  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
3344
  echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak
3345
fi
3346
if test "$fnmatch" = "yes" ; then
3347
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
3348
fi
3349
if test "$uuid" = "yes" ; then
3350
  echo "CONFIG_UUID=y" >> $config_host_mak
3351
fi
3352
if test "$xfs" = "yes" ; then
3353
  echo "CONFIG_XFS=y" >> $config_host_mak
3354
fi
3355
qemu_version=`head $source_path/VERSION`
3356
echo "VERSION=$qemu_version" >>$config_host_mak
3357
echo "PKGVERSION=$pkgversion" >>$config_host_mak
3358
echo "SRC_PATH=$source_path" >> $config_host_mak
3359
echo "TARGET_DIRS=$target_list" >> $config_host_mak
3360
if [ "$docs" = "yes" ] ; then
3361
  echo "BUILD_DOCS=yes" >> $config_host_mak
3362
fi
3363
if test "$sdl" = "yes" ; then
3364
  echo "CONFIG_SDL=y" >> $config_host_mak
3365
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
3366
fi
3367
if test "$cocoa" = "yes" ; then
3368
  echo "CONFIG_COCOA=y" >> $config_host_mak
3369
fi
3370
if test "$curses" = "yes" ; then
3371
  echo "CONFIG_CURSES=y" >> $config_host_mak
3372
fi
3373
if test "$atfile" = "yes" ; then
3374
  echo "CONFIG_ATFILE=y" >> $config_host_mak
3375
fi
3376
if test "$utimens" = "yes" ; then
3377
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
3378
fi
3379
if test "$pipe2" = "yes" ; then
3380
  echo "CONFIG_PIPE2=y" >> $config_host_mak
3381
fi
3382
if test "$accept4" = "yes" ; then
3383
  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
3384
fi
3385
if test "$splice" = "yes" ; then
3386
  echo "CONFIG_SPLICE=y" >> $config_host_mak
3387
fi
3388
if test "$eventfd" = "yes" ; then
3389
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
3390
fi
3391
if test "$fallocate" = "yes" ; then
3392
  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
3393
fi
3394
if test "$sync_file_range" = "yes" ; then
3395
  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
3396
fi
3397
if test "$fiemap" = "yes" ; then
3398
  echo "CONFIG_FIEMAP=y" >> $config_host_mak
3399
fi
3400
if test "$dup3" = "yes" ; then
3401
  echo "CONFIG_DUP3=y" >> $config_host_mak
3402
fi
3403
if test "$epoll" = "yes" ; then
3404
  echo "CONFIG_EPOLL=y" >> $config_host_mak
3405
fi
3406
if test "$epoll_create1" = "yes" ; then
3407
  echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
3408
fi
3409
if test "$epoll_pwait" = "yes" ; then
3410
  echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
3411
fi
3412
if test "$inotify" = "yes" ; then
3413
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
3414
fi
3415
if test "$inotify1" = "yes" ; then
3416
  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
3417
fi
3418
if test "$byteswap_h" = "yes" ; then
3419
  echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
3420
fi
3421
if test "$bswap_h" = "yes" ; then
3422
  echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
3423
fi
3424
if test "$curl" = "yes" ; then
3425
  echo "CONFIG_CURL=y" >> $config_host_mak
3426
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
3427
fi
3428
if test "$brlapi" = "yes" ; then
3429
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
3430
fi
3431
if test "$bluez" = "yes" ; then
3432
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
3433
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
3434
fi
3435
echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
3436
if test "$xen" = "yes" ; then
3437
  echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
3438
  echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
3439
fi
3440
if test "$linux_aio" = "yes" ; then
3441
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
3442
fi
3443
if test "$attr" = "yes" ; then
3444
  echo "CONFIG_ATTR=y" >> $config_host_mak
3445
fi
3446
if test "$libattr" = "yes" ; then
3447
  echo "CONFIG_LIBATTR=y" >> $config_host_mak
3448
fi
3449
if test "$virtfs" = "yes" ; then
3450
  echo "CONFIG_VIRTFS=y" >> $config_host_mak
3451
fi
3452
if test "$blobs" = "yes" ; then
3453
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
3454
fi
3455
if test "$iovec" = "yes" ; then
3456
  echo "CONFIG_IOVEC=y" >> $config_host_mak
3457
fi
3458
if test "$preadv" = "yes" ; then
3459
  echo "CONFIG_PREADV=y" >> $config_host_mak
3460
fi
3461
if test "$fdt" = "yes" ; then
3462
  echo "CONFIG_FDT=y" >> $config_host_mak
3463
fi
3464
if test "$signalfd" = "yes" ; then
3465
  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
3466
fi
3467
if test "$tcg_interpreter" = "yes" ; then
3468
  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
3469
fi
3470
if test "$fdatasync" = "yes" ; then
3471
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
3472
fi
3473
if test "$madvise" = "yes" ; then
3474
  echo "CONFIG_MADVISE=y" >> $config_host_mak
3475
fi
3476
if test "$posix_madvise" = "yes" ; then
3477
  echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
3478
fi
3479

    
3480
if test "$spice" = "yes" ; then
3481
  echo "CONFIG_SPICE=y" >> $config_host_mak
3482
fi
3483

    
3484
if test "$spice_qxl_io_monitors_config_async" = "yes" ; then
3485
  echo "CONFIG_QXL_IO_MONITORS_CONFIG_ASYNC=y" >> $config_host_mak
3486
fi
3487

    
3488
if test "$spice_qxl_client_monitors_config" = "yes" ; then
3489
  echo "CONFIG_QXL_CLIENT_MONITORS_CONFIG=y" >> $config_host_mak
3490
fi
3491

    
3492
if test "$smartcard" = "yes" ; then
3493
  echo "CONFIG_SMARTCARD=y" >> $config_host_mak
3494
fi
3495

    
3496
if test "$smartcard_nss" = "yes" ; then
3497
  echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
3498
  echo "libcacard_libs=$libcacard_libs" >> $config_host_mak
3499
  echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak
3500
fi
3501

    
3502
if test "$usb_redir" = "yes" ; then
3503
  echo "CONFIG_USB_REDIR=y" >> $config_host_mak
3504
fi
3505

    
3506
if test "$opengl" = "yes" ; then
3507
  echo "CONFIG_OPENGL=y" >> $config_host_mak
3508
fi
3509

    
3510
if test "$libiscsi" = "yes" ; then
3511
  echo "CONFIG_LIBISCSI=y" >> $config_host_mak
3512
fi
3513

    
3514
if test "$seccomp" = "yes"; then
3515
  echo "CONFIG_SECCOMP=y" >> $config_host_mak
3516
fi
3517

    
3518
# XXX: suppress that
3519
if [ "$bsd" = "yes" ] ; then
3520
  echo "CONFIG_BSD=y" >> $config_host_mak
3521
fi
3522

    
3523
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
3524

    
3525
if test "$zero_malloc" = "yes" ; then
3526
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
3527
fi
3528
if test "$rbd" = "yes" ; then
3529
  echo "CONFIG_RBD=y" >> $config_host_mak
3530
fi
3531

    
3532
if test "$coroutine_backend" = "ucontext" ; then
3533
  echo "CONFIG_UCONTEXT_COROUTINE=y" >> $config_host_mak
3534
elif test "$coroutine_backend" = "sigaltstack" ; then
3535
  echo "CONFIG_SIGALTSTACK_COROUTINE=y" >> $config_host_mak
3536
fi
3537

    
3538
if test "$open_by_handle_at" = "yes" ; then
3539
  echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
3540
fi
3541

    
3542
if test "$linux_magic_h" = "yes" ; then
3543
  echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
3544
fi
3545

    
3546
if test "$pragma_disable_unused_but_set" = "yes" ; then
3547
  echo "CONFIG_PRAGMA_DISABLE_UNUSED_BUT_SET=y" >> $config_host_mak
3548
fi
3549

    
3550
if test "$valgrind_h" = "yes" ; then
3551
  echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
3552
fi
3553

    
3554
if test "$has_environ" = "yes" ; then
3555
  echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
3556
fi
3557

    
3558
if test "$glusterfs" = "yes" ; then
3559
  echo "CONFIG_GLUSTERFS=y" >> $config_host_mak
3560
fi
3561

    
3562
# USB host support
3563
case "$usb" in
3564
linux)
3565
  echo "HOST_USB=linux" >> $config_host_mak
3566
;;
3567
bsd)
3568
  echo "HOST_USB=bsd" >> $config_host_mak
3569
;;
3570
*)
3571
  echo "HOST_USB=stub" >> $config_host_mak
3572
;;
3573
esac
3574

    
3575
# use default implementation for tracing backend-specific routines
3576
trace_default=yes
3577
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
3578
if test "$trace_backend" = "nop"; then
3579
  echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
3580
fi
3581
if test "$trace_backend" = "simple"; then
3582
  echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
3583
  trace_default=no
3584
  # Set the appropriate trace file.
3585
  trace_file="\"$trace_file-\" FMT_pid"
3586
fi
3587
if test "$trace_backend" = "stderr"; then
3588
  echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
3589
  trace_default=no
3590
fi
3591
if test "$trace_backend" = "ust"; then
3592
  echo "CONFIG_TRACE_UST=y" >> $config_host_mak
3593
fi
3594
if test "$trace_backend" = "dtrace"; then
3595
  echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
3596
  if test "$trace_backend_stap" = "yes" ; then
3597
    echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
3598
  fi
3599
fi
3600
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
3601
if test "$trace_default" = "yes"; then
3602
  echo "CONFIG_TRACE_DEFAULT=y" >> $config_host_mak
3603
fi
3604

    
3605
echo "TOOLS=$tools" >> $config_host_mak
3606
echo "ROMS=$roms" >> $config_host_mak
3607
echo "MAKE=$make" >> $config_host_mak
3608
echo "INSTALL=$install" >> $config_host_mak
3609
echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
3610
echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
3611
echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
3612
echo "PYTHON=$python" >> $config_host_mak
3613
echo "CC=$cc" >> $config_host_mak
3614
echo "CC_I386=$cc_i386" >> $config_host_mak
3615
echo "HOST_CC=$host_cc" >> $config_host_mak
3616
echo "OBJCC=$objcc" >> $config_host_mak
3617
echo "AR=$ar" >> $config_host_mak
3618
echo "OBJCOPY=$objcopy" >> $config_host_mak
3619
echo "LD=$ld" >> $config_host_mak
3620
echo "WINDRES=$windres" >> $config_host_mak
3621
echo "LIBTOOL=$libtool" >> $config_host_mak
3622
echo "CFLAGS=$CFLAGS" >> $config_host_mak
3623
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
3624
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
3625
if test "$sparse" = "yes" ; then
3626
  echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
3627
  echo "HOST_CC      := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
3628
  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
3629
fi
3630
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
3631
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
3632
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
3633
echo "LIBS+=$LIBS" >> $config_host_mak
3634
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
3635
echo "EXESUF=$EXESUF" >> $config_host_mak
3636
echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
3637
echo "POD2MAN=$POD2MAN" >> $config_host_mak
3638

    
3639
# generate list of library paths for linker script
3640

    
3641
$ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld}
3642

    
3643
if test -f ${config_host_ld}~ ; then
3644
  if cmp -s $config_host_ld ${config_host_ld}~ ; then
3645
    mv ${config_host_ld}~ $config_host_ld
3646
  else
3647
    rm ${config_host_ld}~
3648
  fi
3649
fi
3650

    
3651
for d in libdis libdis-user; do
3652
    symlink "$source_path/Makefile.dis" "$d/Makefile"
3653
    echo > $d/config.mak
3654
done
3655

    
3656
# use included Linux headers
3657
if test "$linux" = "yes" ; then
3658
  mkdir -p linux-headers
3659
  case "$cpu" in
3660
  i386|x86_64)
3661
    linux_arch=x86
3662
    ;;
3663
  ppcemb|ppc|ppc64)
3664
    linux_arch=powerpc
3665
    ;;
3666
  s390x)
3667
    linux_arch=s390
3668
    ;;
3669
  *)
3670
    # For most CPUs the kernel architecture name and QEMU CPU name match.
3671
    linux_arch="$cpu"
3672
    ;;
3673
  esac
3674
    # For non-KVM architectures we will not have asm headers
3675
    if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
3676
      symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
3677
    fi
3678
fi
3679

    
3680
for target in $target_list; do
3681
target_dir="$target"
3682
config_target_mak=$target_dir/config-target.mak
3683
target_arch2=`echo $target | cut -d '-' -f 1`
3684
target_bigendian="no"
3685

    
3686
case "$target_arch2" in
3687
  armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
3688
  target_bigendian=yes
3689
  ;;
3690
esac
3691
target_softmmu="no"
3692
target_user_only="no"
3693
target_linux_user="no"
3694
target_bsd_user="no"
3695
case "$target" in
3696
  ${target_arch2}-softmmu)
3697
    target_softmmu="yes"
3698
    ;;
3699
  ${target_arch2}-linux-user)
3700
    if test "$linux" != "yes" ; then
3701
      echo "ERROR: Target '$target' is only available on a Linux host"
3702
      exit 1
3703
    fi
3704
    target_user_only="yes"
3705
    target_linux_user="yes"
3706
    ;;
3707
  ${target_arch2}-bsd-user)
3708
    if test "$bsd" != "yes" ; then
3709
      echo "ERROR: Target '$target' is only available on a BSD host"
3710
      exit 1
3711
    fi
3712
    target_user_only="yes"
3713
    target_bsd_user="yes"
3714
    ;;
3715
  *)
3716
    echo "ERROR: Target '$target' not recognised"
3717
    exit 1
3718
    ;;
3719
esac
3720

    
3721
mkdir -p $target_dir
3722
echo "# Automatically generated by configure - do not modify" > $config_target_mak
3723

    
3724
bflt="no"
3725
target_nptl="no"
3726
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
3727
gdb_xml_files=""
3728
target_short_alignment=2
3729
target_int_alignment=4
3730
target_long_alignment=4
3731
target_llong_alignment=8
3732
target_libs_softmmu=
3733

    
3734
TARGET_ARCH="$target_arch2"
3735
TARGET_BASE_ARCH=""
3736
TARGET_ABI_DIR=""
3737

    
3738
case "$target_arch2" in
3739
  i386)
3740
  ;;
3741
  x86_64)
3742
    TARGET_BASE_ARCH=i386
3743
    target_phys_bits=64
3744
    target_long_alignment=8
3745
  ;;
3746
  alpha)
3747
    target_long_alignment=8
3748
    target_nptl="yes"
3749
  ;;
3750
  arm|armeb)
3751
    TARGET_ARCH=arm
3752
    bflt="yes"
3753
    target_nptl="yes"
3754
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
3755
    target_llong_alignment=4
3756
    target_libs_softmmu="$fdt_libs"
3757
  ;;
3758
  cris)
3759
    target_nptl="yes"
3760
  ;;
3761
  lm32)
3762
    target_libs_softmmu="$opengl_libs"
3763
  ;;
3764
  m68k)
3765
    bflt="yes"
3766
    gdb_xml_files="cf-core.xml cf-fp.xml"
3767
    target_int_alignment=2
3768
    target_long_alignment=2
3769
    target_llong_alignment=2
3770
  ;;
3771
  microblaze|microblazeel)
3772
    TARGET_ARCH=microblaze
3773
    bflt="yes"
3774
    target_nptl="yes"
3775
    target_libs_softmmu="$fdt_libs"
3776
  ;;
3777
  mips|mipsel)
3778
    TARGET_ARCH=mips
3779
    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
3780
    target_nptl="yes"
3781
  ;;
3782
  mipsn32|mipsn32el)
3783
    TARGET_ARCH=mipsn32
3784
    TARGET_BASE_ARCH=mips
3785
    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
3786
  ;;
3787
  mips64|mips64el)
3788
    TARGET_ARCH=mips64
3789
    TARGET_BASE_ARCH=mips
3790
    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
3791
    target_long_alignment=8
3792
  ;;
3793
  or32)
3794
    TARGET_ARCH=openrisc
3795
    TARGET_BASE_ARCH=openrisc
3796
  ;;
3797
  ppc)
3798
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3799
    target_nptl="yes"
3800
    target_libs_softmmu="$fdt_libs"
3801
  ;;
3802
  ppcemb)
3803
    TARGET_BASE_ARCH=ppc
3804
    TARGET_ABI_DIR=ppc
3805
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3806
    target_nptl="yes"
3807
    target_libs_softmmu="$fdt_libs"
3808
  ;;
3809
  ppc64)
3810
    TARGET_BASE_ARCH=ppc
3811
    TARGET_ABI_DIR=ppc
3812
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3813
    target_long_alignment=8
3814
    target_libs_softmmu="$fdt_libs"
3815
  ;;
3816
  ppc64abi32)
3817
    TARGET_ARCH=ppc64
3818
    TARGET_BASE_ARCH=ppc
3819
    TARGET_ABI_DIR=ppc
3820
    echo "TARGET_ABI32=y" >> $config_target_mak
3821
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3822
    target_libs_softmmu="$fdt_libs"
3823
  ;;
3824
  sh4|sh4eb)
3825
    TARGET_ARCH=sh4
3826
    bflt="yes"
3827
    target_nptl="yes"
3828
  ;;
3829
  sparc)
3830
  ;;
3831
  sparc64)
3832
    TARGET_BASE_ARCH=sparc
3833
    target_long_alignment=8
3834
  ;;
3835
  sparc32plus)
3836
    TARGET_ARCH=sparc64
3837
    TARGET_BASE_ARCH=sparc
3838
    TARGET_ABI_DIR=sparc
3839
    echo "TARGET_ABI32=y" >> $config_target_mak
3840
  ;;
3841
  s390x)
3842
    target_nptl="yes"
3843
    target_long_alignment=8
3844
  ;;
3845
  unicore32)
3846
    target_phys_bits=32
3847
  ;;
3848
  xtensa|xtensaeb)
3849
    TARGET_ARCH=xtensa
3850
  ;;
3851
  *)
3852
    echo "Unsupported target CPU"
3853
    exit 1
3854
  ;;
3855
esac
3856
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
3857
if [ "$TARGET_BASE_ARCH" = "" ]; then
3858
  TARGET_BASE_ARCH=$TARGET_ARCH
3859
fi
3860

    
3861
symlink "$source_path/Makefile.target" "$target_dir/Makefile"
3862

    
3863
upper() {
3864
    echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
3865
}
3866

    
3867
echo "TARGET_SHORT_ALIGNMENT=$target_short_alignment" >> $config_target_mak
3868
echo "TARGET_INT_ALIGNMENT=$target_int_alignment" >> $config_target_mak
3869
echo "TARGET_LONG_ALIGNMENT=$target_long_alignment" >> $config_target_mak
3870
echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak
3871
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
3872
target_arch_name="`upper $TARGET_ARCH`"
3873
echo "TARGET_$target_arch_name=y" >> $config_target_mak
3874
echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
3875
echo "TARGET_TYPE=TARGET_TYPE_`upper $target_arch2`" >> $config_target_mak
3876
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
3877
if [ "$TARGET_ABI_DIR" = "" ]; then
3878
  TARGET_ABI_DIR=$TARGET_ARCH
3879
fi
3880
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
3881
case "$target_arch2" in
3882
  i386|x86_64)
3883
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
3884
      echo "CONFIG_XEN=y" >> $config_target_mak
3885
      if test "$xen_pci_passthrough" = yes; then
3886
        echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
3887
      fi
3888
    else
3889
      echo "CONFIG_NO_XEN=y" >> $config_target_mak
3890
    fi
3891
    ;;
3892
  *)
3893
    echo "CONFIG_NO_XEN=y" >> $config_target_mak
3894
esac
3895
case "$target_arch2" in
3896
  i386|x86_64|ppcemb|ppc|ppc64|s390x)
3897
    # Make sure the target and host cpus are compatible
3898
    if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
3899
      \( "$target_arch2" = "$cpu" -o \
3900
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \
3901
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
3902
      \( "$target_arch2" = "ppc"    -a "$cpu" = "ppc64" \) -o \
3903
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
3904
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
3905
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
3906
      echo "CONFIG_KVM=y" >> $config_target_mak
3907
      if test "$vhost_net" = "yes" ; then
3908
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
3909
      fi
3910
    fi
3911
esac
3912
case "$target_arch2" in
3913
  i386|x86_64)
3914
    echo "CONFIG_HAVE_GET_MEMORY_MAPPING=y" >> $config_target_mak
3915
esac
3916
if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then
3917
  echo "CONFIG_PSERIES=y" >> $config_target_mak
3918
fi
3919
if test "$target_bigendian" = "yes" ; then
3920
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
3921
fi
3922
if test "$target_softmmu" = "yes" ; then
3923
  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
3924
  echo "LIBS+=$libs_softmmu $target_libs_softmmu" >> $config_target_mak
3925
  if test "$smartcard_nss" = "yes" ; then
3926
    echo "subdir-$target: subdir-libcacard" >> $config_host_mak
3927
  fi
3928
  case "$target_arch2" in
3929
    i386|x86_64)
3930
      echo "CONFIG_HAVE_CORE_DUMP=y" >> $config_target_mak
3931
  esac
3932
fi
3933
if test "$target_user_only" = "yes" ; then
3934
  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
3935
  echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
3936
fi
3937
if test "$target_linux_user" = "yes" ; then
3938
  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
3939
fi
3940
list=""
3941
if test ! -z "$gdb_xml_files" ; then
3942
  for x in $gdb_xml_files; do
3943
    list="$list $source_path/gdb-xml/$x"
3944
  done
3945
  echo "TARGET_XML_FILES=$list" >> $config_target_mak
3946
fi
3947

    
3948
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
3949
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
3950
fi
3951
if test "$target_user_only" = "yes" \
3952
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
3953
  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
3954
fi
3955
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
3956
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
3957
fi
3958
if test "$target_bsd_user" = "yes" ; then
3959
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
3960
fi
3961

    
3962
# the static way of configuring available audio cards requires this workaround
3963
if test "$target_user_only" != "yes" && grep -q CONFIG_PCSPK $source_path/default-configs/$target.mak; then
3964
  echo "CONFIG_PCSPK=y" >> $config_target_mak
3965
fi
3966

    
3967
# generate QEMU_CFLAGS/LDFLAGS for targets
3968

    
3969
cflags=""
3970
includes=""
3971
ldflags=""
3972

    
3973
if test "$tcg_interpreter" = "yes"; then
3974
  includes="-I\$(SRC_PATH)/tcg/tci $includes"
3975
elif test "$ARCH" = "sparc64" ; then
3976
  includes="-I\$(SRC_PATH)/tcg/sparc $includes"
3977
elif test "$ARCH" = "s390x" ; then
3978
  includes="-I\$(SRC_PATH)/tcg/s390 $includes"
3979
elif test "$ARCH" = "x86_64" ; then
3980
  includes="-I\$(SRC_PATH)/tcg/i386 $includes"
3981
else
3982
  includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
3983
fi
3984
includes="-I\$(SRC_PATH)/tcg $includes"
3985

    
3986
if test "$linux" = "yes" ; then
3987
  includes="-I\$(SRC_PATH)/linux-headers $includes"
3988
fi
3989

    
3990
if test "$target_user_only" = "yes" ; then
3991
    libdis_config_mak=libdis-user/config.mak
3992
else
3993
    libdis_config_mak=libdis/config.mak
3994
fi
3995

    
3996
for i in $ARCH $TARGET_BASE_ARCH ; do
3997
  case "$i" in
3998
  alpha)
3999
    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
4000
    echo "CONFIG_ALPHA_DIS=y"  >> $libdis_config_mak
4001
  ;;
4002
  arm)
4003
    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
4004
    echo "CONFIG_ARM_DIS=y"  >> $libdis_config_mak
4005
  ;;
4006
  cris)
4007
    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
4008
    echo "CONFIG_CRIS_DIS=y"  >> $libdis_config_mak
4009
  ;;
4010
  hppa)
4011
    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
4012
    echo "CONFIG_HPPA_DIS=y"  >> $libdis_config_mak
4013
  ;;
4014
  i386|x86_64)
4015
    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
4016
    echo "CONFIG_I386_DIS=y"  >> $libdis_config_mak
4017
  ;;
4018
  ia64*)
4019
    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
4020
    echo "CONFIG_IA64_DIS=y"  >> $libdis_config_mak
4021
  ;;
4022
  lm32)
4023
    echo "CONFIG_LM32_DIS=y"  >> $config_target_mak
4024
    echo "CONFIG_LM32_DIS=y"  >> $libdis_config_mak
4025
  ;;
4026
  m68k)
4027
    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
4028
    echo "CONFIG_M68K_DIS=y"  >> $libdis_config_mak
4029
  ;;
4030
  microblaze*)
4031
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
4032
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $libdis_config_mak
4033
  ;;
4034
  mips*)
4035
    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
4036
    echo "CONFIG_MIPS_DIS=y"  >> $libdis_config_mak
4037
  ;;
4038
  or32)
4039
    echo "CONFIG_OPENRISC_DIS=y"  >> $config_target_mak
4040
    echo "CONFIG_OPENRISC_DIS=y"  >> $libdis_config_mak
4041
  ;;
4042
  ppc*)
4043
    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
4044
    echo "CONFIG_PPC_DIS=y"  >> $libdis_config_mak
4045
  ;;
4046
  s390*)
4047
    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
4048
    echo "CONFIG_S390_DIS=y"  >> $libdis_config_mak
4049
  ;;
4050
  sh4)
4051
    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
4052
    echo "CONFIG_SH4_DIS=y"  >> $libdis_config_mak
4053
  ;;
4054
  sparc*)
4055
    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
4056
    echo "CONFIG_SPARC_DIS=y"  >> $libdis_config_mak
4057
  ;;
4058
  xtensa*)
4059
    echo "CONFIG_XTENSA_DIS=y"  >> $config_target_mak
4060
    echo "CONFIG_XTENSA_DIS=y"  >> $libdis_config_mak
4061
  ;;
4062
  esac
4063
done
4064
if test "$tcg_interpreter" = "yes" ; then
4065
  echo "CONFIG_TCI_DIS=y"  >> $config_target_mak
4066
  echo "CONFIG_TCI_DIS=y"  >> $libdis_config_mak
4067
fi
4068

    
4069
case "$ARCH" in
4070
alpha)
4071
  # Ensure there's only a single GP
4072
  cflags="-msmall-data $cflags"
4073
;;
4074
esac
4075

    
4076
if test "$target_softmmu" = "yes" ; then
4077
  case "$TARGET_BASE_ARCH" in
4078
  arm)
4079
    cflags="-DHAS_AUDIO $cflags"
4080
  ;;
4081
  lm32)
4082
    cflags="-DHAS_AUDIO $cflags"
4083
  ;;
4084
  i386|mips|ppc)
4085
    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
4086
  ;;
4087
  esac
4088
fi
4089

    
4090
if test "$gprof" = "yes" ; then
4091
  echo "TARGET_GPROF=yes" >> $config_target_mak
4092
  if test "$target_linux_user" = "yes" ; then
4093
    cflags="-p $cflags"
4094
    ldflags="-p $ldflags"
4095
  fi
4096
  if test "$target_softmmu" = "yes" ; then
4097
    ldflags="-p $ldflags"
4098
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
4099
  fi
4100
fi
4101

    
4102
if test "$ARCH" = "tci"; then
4103
  linker_script=""
4104
else
4105
  linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
4106
fi
4107

    
4108
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
4109
  case "$ARCH" in
4110
  alpha | s390x)
4111
    # The default placement of the application is fine.
4112
    ;;
4113
  *)
4114
    ldflags="$linker_script $ldflags"
4115
    ;;
4116
  esac
4117
fi
4118

    
4119
echo "LDFLAGS+=$ldflags" >> $config_target_mak
4120
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
4121
echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
4122

    
4123
done # for target in $targets
4124

    
4125
# build tree in object directory in case the source is not in the current directory
4126
DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32"
4127
DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas"
4128
DIRS="$DIRS roms/seabios roms/vgabios"
4129
DIRS="$DIRS qapi-generated"
4130
DIRS="$DIRS libcacard libcacard/libcacard libcacard/trace"
4131
FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
4132
FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
4133
FILES="$FILES tests/tcg/lm32/Makefile libcacard/Makefile"
4134
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
4135
FILES="$FILES pc-bios/spapr-rtas/Makefile"
4136
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
4137
for bios_file in \
4138
    $source_path/pc-bios/*.bin \
4139
    $source_path/pc-bios/*.rom \
4140
    $source_path/pc-bios/*.dtb \
4141
    $source_path/pc-bios/openbios-* \
4142
    $source_path/pc-bios/palcode-*
4143
do
4144
    FILES="$FILES pc-bios/`basename $bios_file`"
4145
done
4146
mkdir -p $DIRS
4147
for f in $FILES ; do
4148
    if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then
4149
        symlink "$source_path/$f" "$f"
4150
    fi
4151
done
4152

    
4153
# temporary config to build submodules
4154
for rom in seabios vgabios ; do
4155
    config_mak=roms/$rom/config.mak
4156
    echo "# Automatically generated by configure - do not modify" > $config_mak
4157
    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
4158
    echo "CC=$cc" >> $config_mak
4159
    echo "BCC=bcc" >> $config_mak
4160
    echo "CPP=${cross_prefix}cpp" >> $config_mak
4161
    echo "OBJCOPY=objcopy" >> $config_mak
4162
    echo "IASL=iasl" >> $config_mak
4163
    echo "LD=$ld" >> $config_mak
4164
done
4165

    
4166
d=libuser
4167
symlink "$source_path/Makefile.user" "$d/Makefile"
4168

    
4169
if test "$docs" = "yes" ; then
4170
  mkdir -p QMP
4171
fi