Statistics
| Branch: | Revision:

root / configure @ 834574ea

History | View | Annotate | Download (111.6 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="cc"
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
pixman=""
151
sdl=""
152
virtfs=""
153
vnc="yes"
154
sparse="no"
155
uuid=""
156
vde=""
157
vnc_tls=""
158
vnc_sasl=""
159
vnc_jpeg=""
160
vnc_png=""
161
vnc_ws=""
162
xen=""
163
xen_ctrl_version=""
164
xen_pci_passthrough=""
165
linux_aio=""
166
cap_ng=""
167
attr=""
168
libattr=""
169
xfs=""
170

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

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

    
259
# Preferred compiler:
260
#  ${CC} (if set)
261
#  ${cross_prefix}gcc (if cross-prefix specified)
262
#  system compiler
263
if test -z "${CC}${cross_prefix}"; then
264
  cc="$host_cc"
265
else
266
  cc="${CC-${cross_prefix}gcc}"
267
fi
268

    
269
ar="${AR-${cross_prefix}ar}"
270
as="${AS-${cross_prefix}as}"
271
cpp="${CPP-$cc -E}"
272
objcopy="${OBJCOPY-${cross_prefix}objcopy}"
273
ld="${LD-${cross_prefix}ld}"
274
libtool="${LIBTOOL-${cross_prefix}libtool}"
275
strip="${STRIP-${cross_prefix}strip}"
276
windres="${WINDRES-${cross_prefix}windres}"
277
pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
278
query_pkg_config() {
279
    "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
280
}
281
pkg_config=query_pkg_config
282
sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
283

    
284
# default flags for all hosts
285
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
286
QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
287
QEMU_CFLAGS="-Wredundant-decls $QEMU_CFLAGS"
288
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
289
QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
290
if test "$debug_info" = "yes"; then
291
    CFLAGS="-g $CFLAGS"
292
    LDFLAGS="-g $LDFLAGS"
293
fi
294

    
295
# make source path absolute
296
source_path=`cd "$source_path"; pwd`
297

    
298
check_define() {
299
cat > $TMPC <<EOF
300
#if !defined($1)
301
#error $1 not defined
302
#endif
303
int main(void) { return 0; }
304
EOF
305
  compile_object
306
}
307

    
308
if check_define __linux__ ; then
309
  targetos="Linux"
310
elif check_define _WIN32 ; then
311
  targetos='MINGW32'
312
elif check_define __OpenBSD__ ; then
313
  targetos='OpenBSD'
314
elif check_define __sun__ ; then
315
  targetos='SunOS'
316
elif check_define __HAIKU__ ; then
317
  targetos='Haiku'
318
else
319
  targetos=`uname -s`
320
fi
321

    
322
# Some host OSes need non-standard checks for which CPU to use.
323
# Note that these checks are broken for cross-compilation: if you're
324
# cross-compiling to one of these OSes then you'll need to specify
325
# the correct CPU with the --cpu option.
326
case $targetos in
327
Darwin)
328
  # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
329
  # run 64-bit userspace code.
330
  # If the user didn't specify a CPU explicitly and the kernel says this is
331
  # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
332
  if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
333
    cpu="x86_64"
334
  fi
335
  ;;
336
SunOS)
337
  # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
338
  if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
339
    cpu="x86_64"
340
  fi
341
esac
342

    
343
if test ! -z "$cpu" ; then
344
  # command line argument
345
  :
346
elif check_define __i386__ ; then
347
  cpu="i386"
348
elif check_define __x86_64__ ; then
349
  cpu="x86_64"
350
elif check_define __sparc__ ; then
351
  if check_define __arch64__ ; then
352
    cpu="sparc64"
353
  else
354
    cpu="sparc"
355
  fi
356
elif check_define _ARCH_PPC ; then
357
  if check_define _ARCH_PPC64 ; then
358
    cpu="ppc64"
359
  else
360
    cpu="ppc"
361
  fi
362
elif check_define __mips__ ; then
363
  cpu="mips"
364
elif check_define __ia64__ ; then
365
  cpu="ia64"
366
elif check_define __s390__ ; then
367
  if check_define __s390x__ ; then
368
    cpu="s390x"
369
  else
370
    cpu="s390"
371
  fi
372
elif check_define __arm__ ; then
373
  cpu="arm"
374
elif check_define __hppa__ ; then
375
  cpu="hppa"
376
else
377
  cpu=`uname -m`
378
fi
379

    
380
ARCH=
381
# Normalise host CPU name and set ARCH.
382
# Note that this case should only have supported host CPUs, not guests.
383
case "$cpu" in
384
  ia64|ppc|ppc64|s390|s390x|sparc64)
385
    cpu="$cpu"
386
  ;;
387
  i386|i486|i586|i686|i86pc|BePC)
388
    cpu="i386"
389
  ;;
390
  x86_64|amd64)
391
    cpu="x86_64"
392
  ;;
393
  armv*b|armv*l|arm)
394
    cpu="arm"
395
  ;;
396
  hppa|parisc|parisc64)
397
    cpu="hppa"
398
  ;;
399
  mips*)
400
    cpu="mips"
401
  ;;
402
  sparc|sun4[cdmuv])
403
    cpu="sparc"
404
  ;;
405
  *)
406
    # This will result in either an error or falling back to TCI later
407
    ARCH=unknown
408
  ;;
409
esac
410
if test -z "$ARCH"; then
411
  ARCH="$cpu"
412
fi
413

    
414
# OS specific
415

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

    
539
if [ "$bsd" = "yes" ] ; then
540
  if [ "$darwin" != "yes" ] ; then
541
    usb="bsd"
542
    bsd_user="yes"
543
  fi
544
fi
545

    
546
: ${make=${MAKE-make}}
547
: ${install=${INSTALL-install}}
548
: ${python=${PYTHON-python}}
549
: ${smbd=${SMBD-/usr/sbin/smbd}}
550

    
551
# Default objcc to clang if available, otherwise use CC
552
if has clang; then
553
  objcc=clang
554
else
555
  objcc="$cc"
556
fi
557

    
558
if test "$mingw32" = "yes" ; then
559
  EXESUF=".exe"
560
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
561
  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
562
  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
563
  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
564
cat > $TMPC << EOF
565
int main(void) { return 0; }
566
EOF
567
  if compile_prog "" "-liberty" ; then
568
    LIBS="-liberty $LIBS"
569
  fi
570
  prefix="c:/Program Files/QEMU"
571
  mandir="\${prefix}"
572
  datadir="\${prefix}"
573
  qemu_docdir="\${prefix}"
574
  bindir="\${prefix}"
575
  sysconfdir="\${prefix}"
576
  local_statedir="\${prefix}"
577
  confsuffix=""
578
  libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga"
579
fi
580

    
581
werror=""
582

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

    
910
case "$cpu" in
911
    sparc)
912
           LDFLAGS="-m32 $LDFLAGS"
913
           QEMU_CFLAGS="-m32 -mcpu=ultrasparc $QEMU_CFLAGS"
914
           ;;
915
    sparc64)
916
           LDFLAGS="-m64 $LDFLAGS"
917
           QEMU_CFLAGS="-m64 -mcpu=ultrasparc $QEMU_CFLAGS"
918
           ;;
919
    s390)
920
           QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
921
           LDFLAGS="-m31 $LDFLAGS"
922
           ;;
923
    s390x)
924
           QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
925
           LDFLAGS="-m64 $LDFLAGS"
926
           ;;
927
    i386)
928
           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
929
           LDFLAGS="-m32 $LDFLAGS"
930
           cc_i386='$(CC) -m32'
931
           ;;
932
    x86_64)
933
           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
934
           LDFLAGS="-m64 $LDFLAGS"
935
           cc_i386='$(CC) -m32'
936
           ;;
937
    # No special flags required for other host CPUs
938
esac
939

    
940
default_target_list=""
941

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

    
1009
if test x"$show_help" = x"yes" ; then
1010
cat << EOF
1011

    
1012
Usage: configure [options]
1013
Options: [defaults in brackets after descriptions]
1014

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

    
1159
# Now we have handled --enable-tcg-interpreter and know we're not just
1160
# printing the help message, bail out if the host CPU isn't supported.
1161
if test "$ARCH" = "unknown"; then
1162
    if test "$tcg_interpreter" = "yes" ; then
1163
        echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1164
        ARCH=tci
1165
    else
1166
        echo "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1167
        exit 1
1168
    fi
1169
fi
1170

    
1171
# check that the C compiler works.
1172
cat > $TMPC <<EOF
1173
int main(void) { return 0; }
1174
EOF
1175

    
1176
if compile_object ; then
1177
  : C compiler works ok
1178
else
1179
    echo "ERROR: \"$cc\" either does not exist or does not work"
1180
    exit 1
1181
fi
1182

    
1183
# Consult white-list to determine whether to enable werror
1184
# by default.  Only enable by default for git builds
1185
z_version=`cut -f3 -d. $source_path/VERSION`
1186

    
1187
if test -z "$werror" ; then
1188
    if test -d "$source_path/.git" -a \
1189
        "$linux" = "yes" ; then
1190
        werror="yes"
1191
    else
1192
        werror="no"
1193
    fi
1194
fi
1195

    
1196
gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1197
gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1198
gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1199
gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"
1200
gcc_flags="-Wno-initializer-overrides $gcc_flags"
1201
# Note that we do not add -Werror to gcc_flags here, because that would
1202
# enable it for all configure tests. If a configure test failed due
1203
# to -Werror this would just silently disable some features,
1204
# so it's too error prone.
1205
cat > $TMPC << EOF
1206
int main(void) { return 0; }
1207
EOF
1208
for flag in $gcc_flags; do
1209
    # Use the positive sense of the flag when testing for -Wno-wombat
1210
    # support (gcc will happily accept the -Wno- form of unknown
1211
    # warning options).
1212
    optflag="$(echo $flag | sed -e 's/^-Wno-/-W/')"
1213
    if compile_prog "-Werror $optflag" "" ; then
1214
	QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1215
    fi
1216
done
1217

    
1218
# Workaround for http://gcc.gnu.org/PR55489.  Happens with -fPIE/-fPIC and
1219
# large functions that use global variables.  The bug is in all releases of
1220
# GCC, but it became particularly acute in 4.6.x and 4.7.x.  It is fixed in
1221
# 4.7.3 and 4.8.0.  We should be able to delete this at the end of 2013.
1222
cat > $TMPC << EOF
1223
#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1224
int main(void) { return 0; }
1225
#else
1226
#error No bug in this compiler.
1227
#endif
1228
EOF
1229
if compile_prog "-Werror -fno-gcse" "" ; then
1230
  TRANSLATE_OPT_CFLAGS=-fno-gcse
1231
fi
1232

    
1233
if test "$static" = "yes" ; then
1234
  if test "$pie" = "yes" ; then
1235
    echo "static and pie are mutually incompatible"
1236
    exit 1
1237
  else
1238
    pie="no"
1239
  fi
1240
fi
1241

    
1242
if test "$pie" = ""; then
1243
  case "$cpu-$targetos" in
1244
    i386-Linux|x86_64-Linux|i386-OpenBSD|x86_64-OpenBSD)
1245
      ;;
1246
    *)
1247
      pie="no"
1248
      ;;
1249
  esac
1250
fi
1251

    
1252
if test "$pie" != "no" ; then
1253
  cat > $TMPC << EOF
1254

    
1255
#ifdef __linux__
1256
#  define THREAD __thread
1257
#else
1258
#  define THREAD
1259
#endif
1260

    
1261
static THREAD int tls_var;
1262

    
1263
int main(void) { return tls_var; }
1264

    
1265
EOF
1266
  if compile_prog "-fPIE -DPIE" "-pie"; then
1267
    QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1268
    LDFLAGS="-pie $LDFLAGS"
1269
    pie="yes"
1270
    if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1271
      LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1272
    fi
1273
  else
1274
    if test "$pie" = "yes"; then
1275
      echo "PIE not available due to missing toolchain support"
1276
      exit 1
1277
    else
1278
      echo "Disabling PIE due to missing toolchain support"
1279
      pie="no"
1280
    fi
1281
  fi
1282
fi
1283

    
1284
#
1285
# Solaris specific configure tool chain decisions
1286
#
1287
if test "$solaris" = "yes" ; then
1288
  if has $install; then
1289
    :
1290
  else
1291
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
1292
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
1293
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1294
    exit 1
1295
  fi
1296
  if test "`path_of $install`" = "/usr/sbin/install" ; then
1297
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
1298
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
1299
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1300
    exit 1
1301
  fi
1302
  if has ar; then
1303
    :
1304
  else
1305
    echo "Error: No path includes ar"
1306
    if test -f /usr/ccs/bin/ar ; then
1307
      echo "Add /usr/ccs/bin to your path and rerun configure"
1308
    fi
1309
    exit 1
1310
  fi
1311
fi
1312

    
1313
if ! has $python; then
1314
  echo "Python not found. Use --python=/path/to/python"
1315
  exit 1
1316
fi
1317

    
1318
# Note that if the Python conditional here evaluates True we will exit
1319
# with status 1 which is a shell 'false' value.
1320
if ! "$python" -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1321
  echo "Cannot use '$python', Python 2.4 or later is required."
1322
  echo "Note that Python 3 or later is not yet supported."
1323
  echo "Use --python=/path/to/python to specify a supported Python."
1324
  exit 1
1325
fi
1326

    
1327
if test -z "${target_list+xxx}" ; then
1328
    target_list="$default_target_list"
1329
else
1330
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
1331
fi
1332
# see if system emulation was really requested
1333
case " $target_list " in
1334
  *"-softmmu "*) softmmu=yes
1335
  ;;
1336
  *) softmmu=no
1337
  ;;
1338
esac
1339

    
1340
feature_not_found() {
1341
  feature=$1
1342

    
1343
  echo "ERROR"
1344
  echo "ERROR: User requested feature $feature"
1345
  echo "ERROR: configure was not able to find it"
1346
  echo "ERROR"
1347
  exit 1;
1348
}
1349

    
1350
if test -z "$cross_prefix" ; then
1351

    
1352
# ---
1353
# big/little endian test
1354
cat > $TMPC << EOF
1355
#include <inttypes.h>
1356
int main(void) {
1357
        volatile uint32_t i=0x01234567;
1358
        return (*((uint8_t*)(&i))) == 0x67;
1359
}
1360
EOF
1361

    
1362
if compile_prog "" "" ; then
1363
$TMPE && bigendian="yes"
1364
else
1365
echo big/little test failed
1366
fi
1367

    
1368
else
1369

    
1370
# if cross compiling, cannot launch a program, so make a static guess
1371
case "$cpu" in
1372
  arm)
1373
    # ARM can be either way; ask the compiler which one we are
1374
    if check_define __ARMEB__; then
1375
      bigendian=yes
1376
    fi
1377
  ;;
1378
  hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
1379
    bigendian=yes
1380
  ;;
1381
esac
1382

    
1383
fi
1384

    
1385
##########################################
1386
# pkg-config probe
1387

    
1388
if ! has "$pkg_config_exe"; then
1389
  echo "Error: pkg-config binary '$pkg_config_exe' not found"
1390
  exit 1
1391
fi
1392

    
1393
##########################################
1394
# NPTL probe
1395

    
1396
if test "$nptl" != "no" ; then
1397
  cat > $TMPC <<EOF
1398
#include <sched.h>
1399
#include <linux/futex.h>
1400
int main(void) {
1401
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1402
#error bork
1403
#endif
1404
  return 0;
1405
}
1406
EOF
1407

    
1408
  if compile_object ; then
1409
    nptl=yes
1410
  else
1411
    if test "$nptl" = "yes" ; then
1412
      feature_not_found "nptl"
1413
    fi
1414
    nptl=no
1415
  fi
1416
fi
1417

    
1418
##########################################
1419
# zlib check
1420

    
1421
if test "$zlib" != "no" ; then
1422
    cat > $TMPC << EOF
1423
#include <zlib.h>
1424
int main(void) { zlibVersion(); return 0; }
1425
EOF
1426
    if compile_prog "" "-lz" ; then
1427
        :
1428
    else
1429
        echo
1430
        echo "Error: zlib check failed"
1431
        echo "Make sure to have the zlib libs and headers installed."
1432
        echo
1433
        exit 1
1434
    fi
1435
fi
1436

    
1437
##########################################
1438
# libseccomp check
1439

    
1440
if test "$seccomp" != "no" ; then
1441
    if $pkg_config --atleast-version=1.0.0 libseccomp --modversion >/dev/null 2>&1; then
1442
        libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
1443
	seccomp="yes"
1444
    else
1445
	if test "$seccomp" = "yes"; then
1446
            feature_not_found "libseccomp"
1447
	fi
1448
	seccomp="no"
1449
    fi
1450
fi
1451
##########################################
1452
# xen probe
1453

    
1454
if test "$xen" != "no" ; then
1455
  xen_libs="-lxenstore -lxenctrl -lxenguest"
1456

    
1457
  # First we test whether Xen headers and libraries are available.
1458
  # If no, we are done and there is no Xen support.
1459
  # If yes, more tests are run to detect the Xen version.
1460

    
1461
  # Xen (any)
1462
  cat > $TMPC <<EOF
1463
#include <xenctrl.h>
1464
int main(void) {
1465
  return 0;
1466
}
1467
EOF
1468
  if ! compile_prog "" "$xen_libs" ; then
1469
    # Xen not found
1470
    if test "$xen" = "yes" ; then
1471
      feature_not_found "xen"
1472
    fi
1473
    xen=no
1474

    
1475
  # Xen unstable
1476
  elif
1477
      cat > $TMPC <<EOF &&
1478
#include <xenctrl.h>
1479
#include <xenstore.h>
1480
#include <stdint.h>
1481
#include <xen/hvm/hvm_info_table.h>
1482
#if !defined(HVM_MAX_VCPUS)
1483
# error HVM_MAX_VCPUS not defined
1484
#endif
1485
int main(void) {
1486
  xc_interface *xc;
1487
  xs_daemon_open();
1488
  xc = xc_interface_open(0, 0, 0);
1489
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1490
  xc_gnttab_open(NULL, 0);
1491
  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1492
  xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1493
  return 0;
1494
}
1495
EOF
1496
      compile_prog "" "$xen_libs"
1497
    then
1498
    xen_ctrl_version=420
1499
    xen=yes
1500

    
1501
  elif
1502
      cat > $TMPC <<EOF &&
1503
#include <xenctrl.h>
1504
#include <xs.h>
1505
#include <stdint.h>
1506
#include <xen/hvm/hvm_info_table.h>
1507
#if !defined(HVM_MAX_VCPUS)
1508
# error HVM_MAX_VCPUS not defined
1509
#endif
1510
int main(void) {
1511
  xs_daemon_open();
1512
  xc_interface_open(0, 0, 0);
1513
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1514
  xc_gnttab_open(NULL, 0);
1515
  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1516
  return 0;
1517
}
1518
EOF
1519
      compile_prog "" "$xen_libs"
1520
    then
1521
    xen_ctrl_version=410
1522
    xen=yes
1523

    
1524
  # Xen 4.0.0
1525
  elif
1526
      cat > $TMPC <<EOF &&
1527
#include <xenctrl.h>
1528
#include <xs.h>
1529
#include <stdint.h>
1530
#include <xen/hvm/hvm_info_table.h>
1531
#if !defined(HVM_MAX_VCPUS)
1532
# error HVM_MAX_VCPUS not defined
1533
#endif
1534
int main(void) {
1535
  struct xen_add_to_physmap xatp = {
1536
    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1537
  };
1538
  xs_daemon_open();
1539
  xc_interface_open();
1540
  xc_gnttab_open();
1541
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1542
  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1543
  return 0;
1544
}
1545
EOF
1546
      compile_prog "" "$xen_libs"
1547
    then
1548
    xen_ctrl_version=400
1549
    xen=yes
1550

    
1551
  # Xen 3.4.0
1552
  elif
1553
      cat > $TMPC <<EOF &&
1554
#include <xenctrl.h>
1555
#include <xs.h>
1556
int main(void) {
1557
  struct xen_add_to_physmap xatp = {
1558
    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1559
  };
1560
  xs_daemon_open();
1561
  xc_interface_open();
1562
  xc_gnttab_open();
1563
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1564
  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1565
  return 0;
1566
}
1567
EOF
1568
      compile_prog "" "$xen_libs"
1569
    then
1570
    xen_ctrl_version=340
1571
    xen=yes
1572

    
1573
  # Xen 3.3.0
1574
  elif
1575
      cat > $TMPC <<EOF &&
1576
#include <xenctrl.h>
1577
#include <xs.h>
1578
int main(void) {
1579
  xs_daemon_open();
1580
  xc_interface_open();
1581
  xc_gnttab_open();
1582
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1583
  return 0;
1584
}
1585
EOF
1586
      compile_prog "" "$xen_libs"
1587
    then
1588
    xen_ctrl_version=330
1589
    xen=yes
1590

    
1591
  # Xen version unsupported
1592
  else
1593
    if test "$xen" = "yes" ; then
1594
      feature_not_found "xen (unsupported version)"
1595
    fi
1596
    xen=no
1597
  fi
1598

    
1599
  if test "$xen" = yes; then
1600
    libs_softmmu="$xen_libs $libs_softmmu"
1601
  fi
1602
fi
1603

    
1604
if test "$xen_pci_passthrough" != "no"; then
1605
  if test "$xen" = "yes" && test "$linux" = "yes" &&
1606
    test "$xen_ctrl_version" -ge 340; then
1607
    xen_pci_passthrough=yes
1608
  else
1609
    if test "$xen_pci_passthrough" = "yes"; then
1610
      echo "ERROR"
1611
      echo "ERROR: User requested feature Xen PCI Passthrough"
1612
      echo "ERROR: but this feature require /sys from Linux"
1613
      if test "$xen_ctrl_version" -lt 340; then
1614
        echo "ERROR: This feature does not work with Xen 3.3"
1615
      fi
1616
      echo "ERROR"
1617
      exit 1;
1618
    fi
1619
    xen_pci_passthrough=no
1620
  fi
1621
fi
1622

    
1623
##########################################
1624
# libtool probe
1625

    
1626
if ! has $libtool; then
1627
    libtool=
1628
fi
1629

    
1630
##########################################
1631
# Sparse probe
1632
if test "$sparse" != "no" ; then
1633
  if has cgcc; then
1634
    sparse=yes
1635
  else
1636
    if test "$sparse" = "yes" ; then
1637
      feature_not_found "sparse"
1638
    fi
1639
    sparse=no
1640
  fi
1641
fi
1642

    
1643
##########################################
1644
# GTK probe
1645

    
1646
if test "$gtk" != "no"; then
1647
    if $pkg_config gtk+-2.0 --modversion >/dev/null 2>/dev/null && \
1648
       $pkg_config vte --modversion >/dev/null 2>/dev/null; then
1649
	gtk_cflags=`$pkg_config --cflags gtk+-2.0 2>/dev/null`
1650
	gtk_libs=`$pkg_config --libs gtk+-2.0 2>/dev/null`
1651
	vte_cflags=`$pkg_config --cflags vte 2>/dev/null`
1652
	vte_libs=`$pkg_config --libs vte 2>/dev/null`
1653
	libs_softmmu="$gtk_libs $vte_libs $libs_softmmu"
1654
	gtk="yes"
1655
    else
1656
	if test "$gtk" = "yes" ; then
1657
	    feature_not_found "gtk"
1658
	fi
1659
	gtk="no"
1660
    fi
1661
fi
1662

    
1663
##########################################
1664
# SDL probe
1665

    
1666
# Look for sdl configuration program (pkg-config or sdl-config).  Try
1667
# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
1668
if test "`basename $sdl_config`" != sdl-config && ! has ${sdl_config}; then
1669
  sdl_config=sdl-config
1670
fi
1671

    
1672
if $pkg_config sdl --modversion >/dev/null 2>&1; then
1673
  sdlconfig="$pkg_config sdl"
1674
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
1675
elif has ${sdl_config}; then
1676
  sdlconfig="$sdl_config"
1677
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1678
else
1679
  if test "$sdl" = "yes" ; then
1680
    feature_not_found "sdl"
1681
  fi
1682
  sdl=no
1683
fi
1684
if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
1685
  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
1686
fi
1687

    
1688
sdl_too_old=no
1689
if test "$sdl" != "no" ; then
1690
  cat > $TMPC << EOF
1691
#include <SDL.h>
1692
#undef main /* We don't want SDL to override our main() */
1693
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
1694
EOF
1695
  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
1696
  if test "$static" = "yes" ; then
1697
    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
1698
  else
1699
    sdl_libs=`$sdlconfig --libs 2> /dev/null`
1700
  fi
1701
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1702
    if test "$_sdlversion" -lt 121 ; then
1703
      sdl_too_old=yes
1704
    else
1705
      if test "$cocoa" = "no" ; then
1706
        sdl=yes
1707
      fi
1708
    fi
1709

    
1710
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
1711
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
1712
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1713
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
1714
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
1715
      fi
1716
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1717
	:
1718
      else
1719
        sdl=no
1720
      fi
1721
    fi # static link
1722
  else # sdl not found
1723
    if test "$sdl" = "yes" ; then
1724
      feature_not_found "sdl"
1725
    fi
1726
    sdl=no
1727
  fi # sdl compile test
1728
fi
1729

    
1730
if test "$sdl" = "yes" ; then
1731
  cat > $TMPC <<EOF
1732
#include <SDL.h>
1733
#if defined(SDL_VIDEO_DRIVER_X11)
1734
#include <X11/XKBlib.h>
1735
#else
1736
#error No x11 support
1737
#endif
1738
int main(void) { return 0; }
1739
EOF
1740
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1741
    sdl_libs="$sdl_libs -lX11"
1742
  fi
1743
  libs_softmmu="$sdl_libs $libs_softmmu"
1744
fi
1745

    
1746
##########################################
1747
# VNC TLS/WS detection
1748
if test "$vnc" = "yes" -a \( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \) ; then
1749
  cat > $TMPC <<EOF
1750
#include <gnutls/gnutls.h>
1751
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
1752
EOF
1753
  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
1754
  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
1755
  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
1756
    if test "$vnc_tls" != "no" ; then
1757
      vnc_tls=yes
1758
    fi
1759
    if test "$vnc_ws" != "no" ; then
1760
      vnc_ws=yes
1761
    fi
1762
    libs_softmmu="$vnc_tls_libs $libs_softmmu"
1763
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
1764
  else
1765
    if test "$vnc_tls" = "yes" ; then
1766
      feature_not_found "vnc-tls"
1767
    fi
1768
    if test "$vnc_ws" = "yes" ; then
1769
      feature_not_found "vnc-ws"
1770
    fi
1771
    vnc_tls=no
1772
    vnc_ws=no
1773
  fi
1774
fi
1775

    
1776
##########################################
1777
# VNC SASL detection
1778
if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
1779
  cat > $TMPC <<EOF
1780
#include <sasl/sasl.h>
1781
#include <stdio.h>
1782
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
1783
EOF
1784
  # Assuming Cyrus-SASL installed in /usr prefix
1785
  vnc_sasl_cflags=""
1786
  vnc_sasl_libs="-lsasl2"
1787
  if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
1788
    vnc_sasl=yes
1789
    libs_softmmu="$vnc_sasl_libs $libs_softmmu"
1790
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
1791
  else
1792
    if test "$vnc_sasl" = "yes" ; then
1793
      feature_not_found "vnc-sasl"
1794
    fi
1795
    vnc_sasl=no
1796
  fi
1797
fi
1798

    
1799
##########################################
1800
# VNC JPEG detection
1801
if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
1802
cat > $TMPC <<EOF
1803
#include <stdio.h>
1804
#include <jpeglib.h>
1805
int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
1806
EOF
1807
    vnc_jpeg_cflags=""
1808
    vnc_jpeg_libs="-ljpeg"
1809
  if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
1810
    vnc_jpeg=yes
1811
    libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
1812
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
1813
  else
1814
    if test "$vnc_jpeg" = "yes" ; then
1815
      feature_not_found "vnc-jpeg"
1816
    fi
1817
    vnc_jpeg=no
1818
  fi
1819
fi
1820

    
1821
##########################################
1822
# VNC PNG detection
1823
if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
1824
cat > $TMPC <<EOF
1825
//#include <stdio.h>
1826
#include <png.h>
1827
#include <stddef.h>
1828
int main(void) {
1829
    png_structp png_ptr;
1830
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
1831
    return png_ptr != 0;
1832
}
1833
EOF
1834
  if $pkg_config libpng --modversion >/dev/null 2>&1; then
1835
    vnc_png_cflags=`$pkg_config libpng --cflags 2> /dev/null`
1836
    vnc_png_libs=`$pkg_config libpng --libs 2> /dev/null`
1837
  else
1838
    vnc_png_cflags=""
1839
    vnc_png_libs="-lpng"
1840
  fi
1841
  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
1842
    vnc_png=yes
1843
    libs_softmmu="$vnc_png_libs $libs_softmmu"
1844
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
1845
  else
1846
    if test "$vnc_png" = "yes" ; then
1847
      feature_not_found "vnc-png"
1848
    fi
1849
    vnc_png=no
1850
  fi
1851
fi
1852

    
1853
##########################################
1854
# fnmatch() probe, used for ACL routines
1855
fnmatch="no"
1856
cat > $TMPC << EOF
1857
#include <fnmatch.h>
1858
int main(void)
1859
{
1860
    fnmatch("foo", "foo", 0);
1861
    return 0;
1862
}
1863
EOF
1864
if compile_prog "" "" ; then
1865
   fnmatch="yes"
1866
fi
1867

    
1868
##########################################
1869
# uuid_generate() probe, used for vdi block driver
1870
if test "$uuid" != "no" ; then
1871
  uuid_libs="-luuid"
1872
  cat > $TMPC << EOF
1873
#include <uuid/uuid.h>
1874
int main(void)
1875
{
1876
    uuid_t my_uuid;
1877
    uuid_generate(my_uuid);
1878
    return 0;
1879
}
1880
EOF
1881
  if compile_prog "" "$uuid_libs" ; then
1882
    uuid="yes"
1883
    libs_softmmu="$uuid_libs $libs_softmmu"
1884
    libs_tools="$uuid_libs $libs_tools"
1885
  else
1886
    if test "$uuid" = "yes" ; then
1887
      feature_not_found "uuid"
1888
    fi
1889
    uuid=no
1890
  fi
1891
fi
1892

    
1893
##########################################
1894
# xfsctl() probe, used for raw-posix
1895
if test "$xfs" != "no" ; then
1896
  cat > $TMPC << EOF
1897
#include <stddef.h>  /* NULL */
1898
#include <xfs/xfs.h>
1899
int main(void)
1900
{
1901
    xfsctl(NULL, 0, 0, NULL);
1902
    return 0;
1903
}
1904
EOF
1905
  if compile_prog "" "" ; then
1906
    xfs="yes"
1907
  else
1908
    if test "$xfs" = "yes" ; then
1909
      feature_not_found "xfs"
1910
    fi
1911
    xfs=no
1912
  fi
1913
fi
1914

    
1915
##########################################
1916
# vde libraries probe
1917
if test "$vde" != "no" ; then
1918
  vde_libs="-lvdeplug"
1919
  cat > $TMPC << EOF
1920
#include <libvdeplug.h>
1921
int main(void)
1922
{
1923
    struct vde_open_args a = {0, 0, 0};
1924
    char s[] = "";
1925
    vde_open(s, s, &a);
1926
    return 0;
1927
}
1928
EOF
1929
  if compile_prog "" "$vde_libs" ; then
1930
    vde=yes
1931
    libs_softmmu="$vde_libs $libs_softmmu"
1932
    libs_tools="$vde_libs $libs_tools"
1933
  else
1934
    if test "$vde" = "yes" ; then
1935
      feature_not_found "vde"
1936
    fi
1937
    vde=no
1938
  fi
1939
fi
1940

    
1941
##########################################
1942
# libcap-ng library probe
1943
if test "$cap_ng" != "no" ; then
1944
  cap_libs="-lcap-ng"
1945
  cat > $TMPC << EOF
1946
#include <cap-ng.h>
1947
int main(void)
1948
{
1949
    capng_capability_to_name(CAPNG_EFFECTIVE);
1950
    return 0;
1951
}
1952
EOF
1953
  if compile_prog "" "$cap_libs" ; then
1954
    cap_ng=yes
1955
    libs_tools="$cap_libs $libs_tools"
1956
  else
1957
    if test "$cap_ng" = "yes" ; then
1958
      feature_not_found "cap_ng"
1959
    fi
1960
    cap_ng=no
1961
  fi
1962
fi
1963

    
1964
##########################################
1965
# Sound support libraries probe
1966

    
1967
audio_drv_probe()
1968
{
1969
    drv=$1
1970
    hdr=$2
1971
    lib=$3
1972
    exp=$4
1973
    cfl=$5
1974
        cat > $TMPC << EOF
1975
#include <$hdr>
1976
int main(void) { $exp }
1977
EOF
1978
    if compile_prog "$cfl" "$lib" ; then
1979
        :
1980
    else
1981
        echo
1982
        echo "Error: $drv check failed"
1983
        echo "Make sure to have the $drv libs and headers installed."
1984
        echo
1985
        exit 1
1986
    fi
1987
}
1988

    
1989
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1990
for drv in $audio_drv_list; do
1991
    case $drv in
1992
    alsa)
1993
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
1994
        "return snd_pcm_close((snd_pcm_t *)0);"
1995
    libs_softmmu="-lasound $libs_softmmu"
1996
    ;;
1997

    
1998
    fmod)
1999
    if test -z $fmod_lib || test -z $fmod_inc; then
2000
        echo
2001
        echo "Error: You must specify path to FMOD library and headers"
2002
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
2003
        echo
2004
        exit 1
2005
    fi
2006
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
2007
    libs_softmmu="$fmod_lib $libs_softmmu"
2008
    ;;
2009

    
2010
    esd)
2011
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
2012
    libs_softmmu="-lesd $libs_softmmu"
2013
    audio_pt_int="yes"
2014
    ;;
2015

    
2016
    pa)
2017
    audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2018
        "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2019
    libs_softmmu="-lpulse $libs_softmmu"
2020
    audio_pt_int="yes"
2021
    ;;
2022

    
2023
    coreaudio)
2024
      libs_softmmu="-framework CoreAudio $libs_softmmu"
2025
    ;;
2026

    
2027
    dsound)
2028
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
2029
      audio_win_int="yes"
2030
    ;;
2031

    
2032
    oss)
2033
      libs_softmmu="$oss_lib $libs_softmmu"
2034
    ;;
2035

    
2036
    sdl|wav)
2037
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2038
    ;;
2039

    
2040
    winwave)
2041
      libs_softmmu="-lwinmm $libs_softmmu"
2042
      audio_win_int="yes"
2043
    ;;
2044

    
2045
    *)
2046
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
2047
        echo
2048
        echo "Error: Unknown driver '$drv' selected"
2049
        echo "Possible drivers are: $audio_possible_drivers"
2050
        echo
2051
        exit 1
2052
    }
2053
    ;;
2054
    esac
2055
done
2056

    
2057
##########################################
2058
# BrlAPI probe
2059

    
2060
if test "$brlapi" != "no" ; then
2061
  brlapi_libs="-lbrlapi"
2062
  cat > $TMPC << EOF
2063
#include <brlapi.h>
2064
#include <stddef.h>
2065
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2066
EOF
2067
  if compile_prog "" "$brlapi_libs" ; then
2068
    brlapi=yes
2069
    libs_softmmu="$brlapi_libs $libs_softmmu"
2070
  else
2071
    if test "$brlapi" = "yes" ; then
2072
      feature_not_found "brlapi"
2073
    fi
2074
    brlapi=no
2075
  fi
2076
fi
2077

    
2078
##########################################
2079
# curses probe
2080
if test "$mingw32" = "yes" ; then
2081
    curses_list="-lpdcurses"
2082
else
2083
    curses_list="-lncurses:-lcurses:$($pkg_config --libs ncurses 2>/dev/null)"
2084
fi
2085

    
2086
if test "$curses" != "no" ; then
2087
  curses_found=no
2088
  cat > $TMPC << EOF
2089
#include <curses.h>
2090
int main(void) {
2091
  const char *s = curses_version();
2092
  resize_term(0, 0);
2093
  return s != 0;
2094
}
2095
EOF
2096
  IFS=:
2097
  for curses_lib in $curses_list; do
2098
    unset IFS
2099
    if compile_prog "" "$curses_lib" ; then
2100
      curses_found=yes
2101
      libs_softmmu="$curses_lib $libs_softmmu"
2102
      break
2103
    fi
2104
  done
2105
  unset IFS
2106
  if test "$curses_found" = "yes" ; then
2107
    curses=yes
2108
  else
2109
    if test "$curses" = "yes" ; then
2110
      feature_not_found "curses"
2111
    fi
2112
    curses=no
2113
  fi
2114
fi
2115

    
2116
##########################################
2117
# curl probe
2118

    
2119
if $pkg_config libcurl --modversion >/dev/null 2>&1; then
2120
  curlconfig="$pkg_config libcurl"
2121
else
2122
  curlconfig=curl-config
2123
fi
2124

    
2125
if test "$curl" != "no" ; then
2126
  cat > $TMPC << EOF
2127
#include <curl/curl.h>
2128
int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2129
EOF
2130
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
2131
  curl_libs=`$curlconfig --libs 2>/dev/null`
2132
  if compile_prog "$curl_cflags" "$curl_libs" ; then
2133
    curl=yes
2134
    libs_tools="$curl_libs $libs_tools"
2135
    libs_softmmu="$curl_libs $libs_softmmu"
2136
  else
2137
    if test "$curl" = "yes" ; then
2138
      feature_not_found "curl"
2139
    fi
2140
    curl=no
2141
  fi
2142
fi # test "$curl"
2143

    
2144
##########################################
2145
# bluez support probe
2146
if test "$bluez" != "no" ; then
2147
  cat > $TMPC << EOF
2148
#include <bluetooth/bluetooth.h>
2149
int main(void) { return bt_error(0); }
2150
EOF
2151
  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2152
  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
2153
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2154
    bluez=yes
2155
    libs_softmmu="$bluez_libs $libs_softmmu"
2156
  else
2157
    if test "$bluez" = "yes" ; then
2158
      feature_not_found "bluez"
2159
    fi
2160
    bluez="no"
2161
  fi
2162
fi
2163

    
2164
##########################################
2165
# glib support probe
2166

    
2167
if test "$mingw32" = yes; then
2168
    # g_poll is required in order to integrate with the glib main loop.
2169
    glib_req_ver=2.20
2170
else
2171
    glib_req_ver=2.12
2172
fi
2173
if $pkg_config --atleast-version=$glib_req_ver gthread-2.0 > /dev/null 2>&1
2174
then
2175
    glib_cflags=`$pkg_config --cflags gthread-2.0 2>/dev/null`
2176
    glib_libs=`$pkg_config --libs gthread-2.0 2>/dev/null`
2177
    LIBS="$glib_libs $LIBS"
2178
    libs_qga="$glib_libs $libs_qga"
2179
else
2180
    echo "glib-$glib_req_ver required to compile QEMU"
2181
    exit 1
2182
fi
2183

    
2184
##########################################
2185
# pixman support probe
2186

    
2187
if test "$pixman" = ""; then
2188
  if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2189
    pixman="none"
2190
  elif $pkg_config pixman-1 > /dev/null 2>&1; then
2191
    pixman="system"
2192
  else
2193
    pixman="internal"
2194
  fi
2195
fi
2196
if test "$pixman" = "none"; then
2197
  if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2198
    echo "ERROR: pixman disabled but system emulation or tools build"
2199
    echo "       enabled.  You can turn off pixman only if you also"
2200
    echo "       disable all system emulation targets and the tools"
2201
    echo "       build with '--disable-tools --disable-system'."
2202
    exit 1
2203
  fi
2204
  pixman_cflags=
2205
  pixman_libs=
2206
elif test "$pixman" = "system"; then
2207
  pixman_cflags=`$pkg_config --cflags pixman-1 2>/dev/null`
2208
  pixman_libs=`$pkg_config --libs pixman-1 2>/dev/null`
2209
else
2210
  if test ! -d ${source_path}/pixman/pixman; then
2211
    echo "ERROR: pixman not present. Your options:"
2212
    echo "  (1) Preferred: Install the pixman devel package (any recent"
2213
    echo "      distro should have packages as Xorg needs pixman too)."
2214
    echo "  (2) Fetch the pixman submodule, using:"
2215
    echo "      git submodule update --init pixman"
2216
    exit 1
2217
  fi
2218
  mkdir -p pixman/pixman
2219
  pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2220
  pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2221
fi
2222

    
2223
##########################################
2224
# libcap probe
2225

    
2226
if test "$cap" != "no" ; then
2227
  cat > $TMPC <<EOF
2228
#include <stdio.h>
2229
#include <sys/capability.h>
2230
int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2231
EOF
2232
  if compile_prog "" "-lcap" ; then
2233
    cap=yes
2234
  else
2235
    cap=no
2236
  fi
2237
fi
2238

    
2239
##########################################
2240
# pthread probe
2241
PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
2242

    
2243
pthread=no
2244
cat > $TMPC << EOF
2245
#include <pthread.h>
2246
static void *f(void *p) { return NULL; }
2247
int main(void) {
2248
  pthread_t thread;
2249
  pthread_create(&thread, 0, f, 0);
2250
  return 0;
2251
}
2252
EOF
2253
if compile_prog "" "" ; then
2254
  pthread=yes
2255
else
2256
  for pthread_lib in $PTHREADLIBS_LIST; do
2257
    if compile_prog "" "$pthread_lib" ; then
2258
      pthread=yes
2259
      found=no
2260
      for lib_entry in $LIBS; do
2261
        if test "$lib_entry" = "$pthread_lib"; then
2262
          found=yes
2263
          break
2264
        fi
2265
      done
2266
      if test "$found" = "no"; then
2267
        LIBS="$pthread_lib $LIBS"
2268
      fi
2269
      break
2270
    fi
2271
  done
2272
fi
2273

    
2274
if test "$mingw32" != yes -a "$pthread" = no; then
2275
  echo
2276
  echo "Error: pthread check failed"
2277
  echo "Make sure to have the pthread libs and headers installed."
2278
  echo
2279
  exit 1
2280
fi
2281

    
2282
##########################################
2283
# rbd probe
2284
if test "$rbd" != "no" ; then
2285
  cat > $TMPC <<EOF
2286
#include <stdio.h>
2287
#include <rbd/librbd.h>
2288
int main(void) {
2289
    rados_t cluster;
2290
    rados_create(&cluster, NULL);
2291
    return 0;
2292
}
2293
EOF
2294
  rbd_libs="-lrbd -lrados"
2295
  if compile_prog "" "$rbd_libs" ; then
2296
    rbd=yes
2297
    libs_tools="$rbd_libs $libs_tools"
2298
    libs_softmmu="$rbd_libs $libs_softmmu"
2299
  else
2300
    if test "$rbd" = "yes" ; then
2301
      feature_not_found "rados block device"
2302
    fi
2303
    rbd=no
2304
  fi
2305
fi
2306

    
2307
##########################################
2308
# linux-aio probe
2309

    
2310
if test "$linux_aio" != "no" ; then
2311
  cat > $TMPC <<EOF
2312
#include <libaio.h>
2313
#include <sys/eventfd.h>
2314
#include <stddef.h>
2315
int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
2316
EOF
2317
  if compile_prog "" "-laio" ; then
2318
    linux_aio=yes
2319
    libs_softmmu="$libs_softmmu -laio"
2320
    libs_tools="$libs_tools -laio"
2321
  else
2322
    if test "$linux_aio" = "yes" ; then
2323
      feature_not_found "linux AIO"
2324
    fi
2325
    linux_aio=no
2326
  fi
2327
fi
2328

    
2329
##########################################
2330
# adjust virtio-blk-data-plane based on linux-aio
2331

    
2332
if test "$virtio_blk_data_plane" = "yes" -a \
2333
	"$linux_aio" != "yes" ; then
2334
  echo "Error: virtio-blk-data-plane requires Linux AIO, please try --enable-linux-aio"
2335
  exit 1
2336
elif test -z "$virtio_blk_data_plane" ; then
2337
  virtio_blk_data_plane=$linux_aio
2338
fi
2339

    
2340
##########################################
2341
# attr probe
2342

    
2343
if test "$attr" != "no" ; then
2344
  cat > $TMPC <<EOF
2345
#include <stdio.h>
2346
#include <sys/types.h>
2347
#ifdef CONFIG_LIBATTR
2348
#include <attr/xattr.h>
2349
#else
2350
#include <sys/xattr.h>
2351
#endif
2352
int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
2353
EOF
2354
  if compile_prog "" "" ; then
2355
    attr=yes
2356
  # Older distros have <attr/xattr.h>, and need -lattr:
2357
  elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
2358
    attr=yes
2359
    LIBS="-lattr $LIBS"
2360
    libattr=yes
2361
  else
2362
    if test "$attr" = "yes" ; then
2363
      feature_not_found "ATTR"
2364
    fi
2365
    attr=no
2366
  fi
2367
fi
2368

    
2369
##########################################
2370
# iovec probe
2371
cat > $TMPC <<EOF
2372
#include <sys/types.h>
2373
#include <sys/uio.h>
2374
#include <unistd.h>
2375
int main(void) { return sizeof(struct iovec); }
2376
EOF
2377
iovec=no
2378
if compile_prog "" "" ; then
2379
  iovec=yes
2380
fi
2381

    
2382
##########################################
2383
# preadv probe
2384
cat > $TMPC <<EOF
2385
#include <sys/types.h>
2386
#include <sys/uio.h>
2387
#include <unistd.h>
2388
int main(void) { return preadv(0, 0, 0, 0); }
2389
EOF
2390
preadv=no
2391
if compile_prog "" "" ; then
2392
  preadv=yes
2393
fi
2394

    
2395
##########################################
2396
# fdt probe
2397
if test "$fdt" != "no" ; then
2398
  fdt_libs="-lfdt"
2399
  cat > $TMPC << EOF
2400
int main(void) { return 0; }
2401
EOF
2402
  if compile_prog "" "$fdt_libs" ; then
2403
    fdt=yes
2404
  else
2405
    if test "$fdt" = "yes" ; then
2406
      feature_not_found "fdt"
2407
    fi
2408
    fdt_libs=
2409
    fdt=no
2410
  fi
2411
fi
2412

    
2413
##########################################
2414
# opengl probe, used by milkymist-tmu2
2415
if test "$opengl" != "no" ; then
2416
  opengl_libs="-lGL -lX11"
2417
  cat > $TMPC << EOF
2418
#include <X11/Xlib.h>
2419
#include <GL/gl.h>
2420
#include <GL/glx.h>
2421
int main(void) { return GL_VERSION != 0; }
2422
EOF
2423
  if compile_prog "" "-lGL" ; then
2424
    opengl=yes
2425
  else
2426
    if test "$opengl" = "yes" ; then
2427
      feature_not_found "opengl"
2428
    fi
2429
    opengl_libs=
2430
    opengl=no
2431
  fi
2432
fi
2433

    
2434
##########################################
2435
# glusterfs probe
2436
if test "$glusterfs" != "no" ; then
2437
  cat > $TMPC <<EOF
2438
#include <glusterfs/api/glfs.h>
2439
int main(void) {
2440
    (void) glfs_new("volume");
2441
    return 0;
2442
}
2443
EOF
2444
  glusterfs_libs="-lgfapi -lgfrpc -lgfxdr"
2445
  if compile_prog "" "$glusterfs_libs" ; then
2446
    glusterfs=yes
2447
    libs_tools="$glusterfs_libs $libs_tools"
2448
    libs_softmmu="$glusterfs_libs $libs_softmmu"
2449
  else
2450
    if test "$glusterfs" = "yes" ; then
2451
      feature_not_found "GlusterFS backend support"
2452
    fi
2453
    glusterfs=no
2454
  fi
2455
fi
2456

    
2457
#
2458
# Check for xxxat() functions when we are building linux-user
2459
# emulator.  This is done because older glibc versions don't
2460
# have syscall stubs for these implemented.
2461
#
2462
atfile=no
2463
cat > $TMPC << EOF
2464
#define _ATFILE_SOURCE
2465
#include <sys/types.h>
2466
#include <fcntl.h>
2467
#include <unistd.h>
2468

    
2469
int
2470
main(void)
2471
{
2472
	/* try to unlink nonexisting file */
2473
	return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
2474
}
2475
EOF
2476
if compile_prog "" "" ; then
2477
  atfile=yes
2478
fi
2479

    
2480
# Check for inotify functions when we are building linux-user
2481
# emulator.  This is done because older glibc versions don't
2482
# have syscall stubs for these implemented.  In that case we
2483
# don't provide them even if kernel supports them.
2484
#
2485
inotify=no
2486
cat > $TMPC << EOF
2487
#include <sys/inotify.h>
2488

    
2489
int
2490
main(void)
2491
{
2492
	/* try to start inotify */
2493
	return inotify_init();
2494
}
2495
EOF
2496
if compile_prog "" "" ; then
2497
  inotify=yes
2498
fi
2499

    
2500
inotify1=no
2501
cat > $TMPC << EOF
2502
#include <sys/inotify.h>
2503

    
2504
int
2505
main(void)
2506
{
2507
    /* try to start inotify */
2508
    return inotify_init1(0);
2509
}
2510
EOF
2511
if compile_prog "" "" ; then
2512
  inotify1=yes
2513
fi
2514

    
2515
# check if utimensat and futimens are supported
2516
utimens=no
2517
cat > $TMPC << EOF
2518
#define _ATFILE_SOURCE
2519
#include <stddef.h>
2520
#include <fcntl.h>
2521
#include <sys/stat.h>
2522

    
2523
int main(void)
2524
{
2525
    utimensat(AT_FDCWD, "foo", NULL, 0);
2526
    futimens(0, NULL);
2527
    return 0;
2528
}
2529
EOF
2530
if compile_prog "" "" ; then
2531
  utimens=yes
2532
fi
2533

    
2534
# check if pipe2 is there
2535
pipe2=no
2536
cat > $TMPC << EOF
2537
#include <unistd.h>
2538
#include <fcntl.h>
2539

    
2540
int main(void)
2541
{
2542
    int pipefd[2];
2543
    return pipe2(pipefd, O_CLOEXEC);
2544
}
2545
EOF
2546
if compile_prog "" "" ; then
2547
  pipe2=yes
2548
fi
2549

    
2550
# check if accept4 is there
2551
accept4=no
2552
cat > $TMPC << EOF
2553
#include <sys/socket.h>
2554
#include <stddef.h>
2555

    
2556
int main(void)
2557
{
2558
    accept4(0, NULL, NULL, SOCK_CLOEXEC);
2559
    return 0;
2560
}
2561
EOF
2562
if compile_prog "" "" ; then
2563
  accept4=yes
2564
fi
2565

    
2566
# check if tee/splice is there. vmsplice was added same time.
2567
splice=no
2568
cat > $TMPC << EOF
2569
#include <unistd.h>
2570
#include <fcntl.h>
2571
#include <limits.h>
2572

    
2573
int main(void)
2574
{
2575
    int len, fd = 0;
2576
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
2577
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
2578
    return 0;
2579
}
2580
EOF
2581
if compile_prog "" "" ; then
2582
  splice=yes
2583
fi
2584

    
2585
##########################################
2586
# signalfd probe
2587
signalfd="no"
2588
cat > $TMPC << EOF
2589
#include <unistd.h>
2590
#include <sys/syscall.h>
2591
#include <signal.h>
2592
int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
2593
EOF
2594

    
2595
if compile_prog "" "" ; then
2596
  signalfd=yes
2597
fi
2598

    
2599
# check if eventfd is supported
2600
eventfd=no
2601
cat > $TMPC << EOF
2602
#include <sys/eventfd.h>
2603

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

    
2613
# check for fallocate
2614
fallocate=no
2615
cat > $TMPC << EOF
2616
#include <fcntl.h>
2617

    
2618
int main(void)
2619
{
2620
    fallocate(0, 0, 0, 0);
2621
    return 0;
2622
}
2623
EOF
2624
if compile_prog "" "" ; then
2625
  fallocate=yes
2626
fi
2627

    
2628
# check for fallocate hole punching
2629
fallocate_punch_hole=no
2630
cat > $TMPC << EOF
2631
#include <fcntl.h>
2632
#include <linux/falloc.h>
2633

    
2634
int main(void)
2635
{
2636
    fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
2637
    return 0;
2638
}
2639
EOF
2640
if compile_prog "" "" ; then
2641
  fallocate_punch_hole=yes
2642
fi
2643

    
2644
# check for sync_file_range
2645
sync_file_range=no
2646
cat > $TMPC << EOF
2647
#include <fcntl.h>
2648

    
2649
int main(void)
2650
{
2651
    sync_file_range(0, 0, 0, 0);
2652
    return 0;
2653
}
2654
EOF
2655
if compile_prog "" "" ; then
2656
  sync_file_range=yes
2657
fi
2658

    
2659
# check for linux/fiemap.h and FS_IOC_FIEMAP
2660
fiemap=no
2661
cat > $TMPC << EOF
2662
#include <sys/ioctl.h>
2663
#include <linux/fs.h>
2664
#include <linux/fiemap.h>
2665

    
2666
int main(void)
2667
{
2668
    ioctl(0, FS_IOC_FIEMAP, 0);
2669
    return 0;
2670
}
2671
EOF
2672
if compile_prog "" "" ; then
2673
  fiemap=yes
2674
fi
2675

    
2676
# check for dup3
2677
dup3=no
2678
cat > $TMPC << EOF
2679
#include <unistd.h>
2680

    
2681
int main(void)
2682
{
2683
    dup3(0, 0, 0);
2684
    return 0;
2685
}
2686
EOF
2687
if compile_prog "" "" ; then
2688
  dup3=yes
2689
fi
2690

    
2691
# check for epoll support
2692
epoll=no
2693
cat > $TMPC << EOF
2694
#include <sys/epoll.h>
2695

    
2696
int main(void)
2697
{
2698
    epoll_create(0);
2699
    return 0;
2700
}
2701
EOF
2702
if compile_prog "" "" ; then
2703
  epoll=yes
2704
fi
2705

    
2706
# epoll_create1 and epoll_pwait are later additions
2707
# so we must check separately for their presence
2708
epoll_create1=no
2709
cat > $TMPC << EOF
2710
#include <sys/epoll.h>
2711

    
2712
int main(void)
2713
{
2714
    /* Note that we use epoll_create1 as a value, not as
2715
     * a function being called. This is necessary so that on
2716
     * old SPARC glibc versions where the function was present in
2717
     * the library but not declared in the header file we will
2718
     * fail the configure check. (Otherwise we will get a compiler
2719
     * warning but not an error, and will proceed to fail the
2720
     * qemu compile where we compile with -Werror.)
2721
     */
2722
    return (int)(uintptr_t)&epoll_create1;
2723
}
2724
EOF
2725
if compile_prog "" "" ; then
2726
  epoll_create1=yes
2727
fi
2728

    
2729
epoll_pwait=no
2730
cat > $TMPC << EOF
2731
#include <sys/epoll.h>
2732

    
2733
int main(void)
2734
{
2735
    epoll_pwait(0, 0, 0, 0, 0);
2736
    return 0;
2737
}
2738
EOF
2739
if compile_prog "" "" ; then
2740
  epoll_pwait=yes
2741
fi
2742

    
2743
# Check if tools are available to build documentation.
2744
if test "$docs" != "no" ; then
2745
  if has makeinfo && has pod2man; then
2746
    docs=yes
2747
  else
2748
    if test "$docs" = "yes" ; then
2749
      feature_not_found "docs"
2750
    fi
2751
    docs=no
2752
  fi
2753
fi
2754

    
2755
# Search for bswap_32 function
2756
byteswap_h=no
2757
cat > $TMPC << EOF
2758
#include <byteswap.h>
2759
int main(void) { return bswap_32(0); }
2760
EOF
2761
if compile_prog "" "" ; then
2762
  byteswap_h=yes
2763
fi
2764

    
2765
# Search for bswap32 function
2766
bswap_h=no
2767
cat > $TMPC << EOF
2768
#include <sys/endian.h>
2769
#include <sys/types.h>
2770
#include <machine/bswap.h>
2771
int main(void) { return bswap32(0); }
2772
EOF
2773
if compile_prog "" "" ; then
2774
  bswap_h=yes
2775
fi
2776

    
2777
##########################################
2778
# Do we have libiscsi
2779
# We check for iscsi_unmap_sync() to make sure we have a
2780
# recent enough version of libiscsi.
2781
if test "$libiscsi" != "no" ; then
2782
  cat > $TMPC << EOF
2783
#include <stdio.h>
2784
#include <iscsi/iscsi.h>
2785
int main(void) { iscsi_unmap_sync(NULL,0,0,0,NULL,0); return 0; }
2786
EOF
2787
  if compile_prog "" "-liscsi" ; then
2788
    libiscsi="yes"
2789
    LIBS="$LIBS -liscsi"
2790
  else
2791
    if test "$libiscsi" = "yes" ; then
2792
      feature_not_found "libiscsi"
2793
    fi
2794
    libiscsi="no"
2795
  fi
2796
fi
2797

    
2798

    
2799
##########################################
2800
# Do we need libm
2801
cat > $TMPC << EOF
2802
#include <math.h>
2803
int main(void) { return isnan(sin(0.0)); }
2804
EOF
2805
if compile_prog "" "" ; then
2806
  :
2807
elif compile_prog "" "-lm" ; then
2808
  LIBS="-lm $LIBS"
2809
  libs_qga="-lm $libs_qga"
2810
else
2811
  echo
2812
  echo "Error: libm check failed"
2813
  echo
2814
  exit 1
2815
fi
2816

    
2817
##########################################
2818
# Do we need librt
2819
# uClibc provides 2 versions of clock_gettime(), one with realtime
2820
# support and one without. This means that the clock_gettime() don't
2821
# need -lrt. We still need it for timer_create() so we check for this
2822
# function in addition.
2823
cat > $TMPC <<EOF
2824
#include <signal.h>
2825
#include <time.h>
2826
int main(void) {
2827
  timer_create(CLOCK_REALTIME, NULL, NULL);
2828
  return clock_gettime(CLOCK_REALTIME, NULL);
2829
}
2830
EOF
2831

    
2832
if compile_prog "" "" ; then
2833
  :
2834
# we need pthread for static linking. use previous pthread test result
2835
elif compile_prog "" "-lrt $pthread_lib" ; then
2836
  LIBS="-lrt $LIBS"
2837
  libs_qga="-lrt $libs_qga"
2838
fi
2839

    
2840
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
2841
        "$aix" != "yes" -a "$haiku" != "yes" ; then
2842
    libs_softmmu="-lutil $libs_softmmu"
2843
fi
2844

    
2845
##########################################
2846
# spice probe
2847
if test "$spice" != "no" ; then
2848
  cat > $TMPC << EOF
2849
#include <spice.h>
2850
int main(void) { spice_server_new(); return 0; }
2851
EOF
2852
  spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
2853
  spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
2854
  if $pkg_config --atleast-version=0.12.0 spice-server >/dev/null 2>&1 && \
2855
     $pkg_config --atleast-version=0.12.2 spice-protocol > /dev/null 2>&1 && \
2856
     compile_prog "$spice_cflags" "$spice_libs" ; then
2857
    spice="yes"
2858
    libs_softmmu="$libs_softmmu $spice_libs"
2859
    QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
2860
    spice_protocol_version=$($pkg_config --modversion spice-protocol)
2861
    spice_server_version=$($pkg_config --modversion spice-server)
2862
  else
2863
    if test "$spice" = "yes" ; then
2864
      feature_not_found "spice"
2865
    fi
2866
    spice="no"
2867
  fi
2868
fi
2869

    
2870
# check for libcacard for smartcard support
2871
smartcard_cflags=""
2872
# TODO - what's the minimal nss version we support?
2873
if test "$smartcard_nss" != "no"; then
2874
  cat > $TMPC << EOF
2875
#include <pk11pub.h>
2876
int main(void) { PK11_FreeSlot(0); return 0; }
2877
EOF
2878
    smartcard_includes="-I\$(SRC_PATH)/libcacard"
2879
    libcacard_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
2880
    libcacard_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
2881
    test_cflags="$libcacard_cflags"
2882
    # The header files in nss < 3.13.3 have a bug which causes them to
2883
    # emit a warning. If we're going to compile QEMU with -Werror, then
2884
    # test that the headers don't have this bug. Otherwise we would pass
2885
    # the configure test but fail to compile QEMU later.
2886
    if test "$werror" = "yes"; then
2887
        test_cflags="-Werror $test_cflags"
2888
    fi
2889
    if test -n "$libtool" &&
2890
            $pkg_config --atleast-version=3.12.8 nss >/dev/null 2>&1 && \
2891
      compile_prog "$test_cflags" "$libcacard_libs"; then
2892
        smartcard_nss="yes"
2893
        QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
2894
        QEMU_INCLUDES="$QEMU_INCLUDES $smartcard_includes"
2895
        libs_softmmu="$libcacard_libs $libs_softmmu"
2896
    else
2897
        if test "$smartcard_nss" = "yes"; then
2898
            feature_not_found "nss"
2899
        fi
2900
        smartcard_nss="no"
2901
    fi
2902
fi
2903

    
2904
# check for usbredirparser for usb network redirection support
2905
if test "$usb_redir" != "no" ; then
2906
    if $pkg_config --atleast-version=0.6 libusbredirparser-0.5 >/dev/null 2>&1 ; then
2907
        usb_redir="yes"
2908
        usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5 2>/dev/null)
2909
        usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5 2>/dev/null)
2910
        QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
2911
        libs_softmmu="$libs_softmmu $usb_redir_libs"
2912
    else
2913
        if test "$usb_redir" = "yes"; then
2914
            feature_not_found "usb-redir"
2915
        fi
2916
        usb_redir="no"
2917
    fi
2918
fi
2919

    
2920
##########################################
2921

    
2922
##########################################
2923
# check if we have fdatasync
2924

    
2925
fdatasync=no
2926
cat > $TMPC << EOF
2927
#include <unistd.h>
2928
int main(void) {
2929
#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
2930
return fdatasync(0);
2931
#else
2932
#error Not supported
2933
#endif
2934
}
2935
EOF
2936
if compile_prog "" "" ; then
2937
    fdatasync=yes
2938
fi
2939

    
2940
##########################################
2941
# check if we have madvise
2942

    
2943
madvise=no
2944
cat > $TMPC << EOF
2945
#include <sys/types.h>
2946
#include <sys/mman.h>
2947
#include <stddef.h>
2948
int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
2949
EOF
2950
if compile_prog "" "" ; then
2951
    madvise=yes
2952
fi
2953

    
2954
##########################################
2955
# check if we have posix_madvise
2956

    
2957
posix_madvise=no
2958
cat > $TMPC << EOF
2959
#include <sys/mman.h>
2960
#include <stddef.h>
2961
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
2962
EOF
2963
if compile_prog "" "" ; then
2964
    posix_madvise=yes
2965
fi
2966

    
2967
##########################################
2968
# check if we have usable SIGEV_THREAD_ID
2969

    
2970
sigev_thread_id=no
2971
cat > $TMPC << EOF
2972
#include <signal.h>
2973
int main(void) {
2974
  struct sigevent ev;
2975
  ev.sigev_notify = SIGEV_THREAD_ID;
2976
  ev._sigev_un._tid = 0;
2977
  asm volatile("" : : "g"(&ev));
2978
  return 0;
2979
}
2980
EOF
2981
if compile_prog "" "" ; then
2982
    sigev_thread_id=yes
2983
fi
2984

    
2985
##########################################
2986
# check if trace backend exists
2987

    
2988
$python "$source_path/scripts/tracetool.py" "--backend=$trace_backend" --check-backend  > /dev/null 2> /dev/null
2989
if test "$?" -ne 0 ; then
2990
  echo
2991
  echo "Error: invalid trace backend"
2992
  echo "Please choose a supported trace backend."
2993
  echo
2994
  exit 1
2995
fi
2996

    
2997
##########################################
2998
# For 'ust' backend, test if ust headers are present
2999
if test "$trace_backend" = "ust"; then
3000
  cat > $TMPC << EOF
3001
#include <ust/tracepoint.h>
3002
#include <ust/marker.h>
3003
int main(void) { return 0; }
3004
EOF
3005
  if compile_prog "" "" ; then
3006
    LIBS="-lust -lurcu-bp $LIBS"
3007
    libs_qga="-lust -lurcu-bp $libs_qga"
3008
  else
3009
    echo
3010
    echo "Error: Trace backend 'ust' missing libust header files"
3011
    echo
3012
    exit 1
3013
  fi
3014
fi
3015

    
3016
##########################################
3017
# For 'dtrace' backend, test if 'dtrace' command is present
3018
if test "$trace_backend" = "dtrace"; then
3019
  if ! has 'dtrace' ; then
3020
    echo
3021
    echo "Error: dtrace command is not found in PATH $PATH"
3022
    echo
3023
    exit 1
3024
  fi
3025
  trace_backend_stap="no"
3026
  if has 'stap' ; then
3027
    trace_backend_stap="yes"
3028
  fi
3029
fi
3030

    
3031
##########################################
3032
# __sync_fetch_and_and requires at least -march=i486. Many toolchains
3033
# use i686 as default anyway, but for those that don't, an explicit
3034
# specification is necessary
3035
if test "$vhost_net" = "yes" && test "$cpu" = "i386"; then
3036
  cat > $TMPC << EOF
3037
static int sfaa(int *ptr)
3038
{
3039
  return __sync_fetch_and_and(ptr, 0);
3040
}
3041

    
3042
int main(void)
3043
{
3044
  int val = 42;
3045
  sfaa(&val);
3046
  return val;
3047
}
3048
EOF
3049
  if ! compile_prog "" "" ; then
3050
    QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
3051
  fi
3052
fi
3053

    
3054
##########################################
3055
# check and set a backend for coroutine
3056

    
3057
# default is ucontext, but always fallback to gthread
3058
# windows autodetected by make
3059
if test "$coroutine" = "" -o "$coroutine" = "ucontext"; then
3060
  if test "$darwin" != "yes"; then
3061
    cat > $TMPC << EOF
3062
#include <ucontext.h>
3063
#ifdef __stub_makecontext
3064
#error Ignoring glibc stub makecontext which will always fail
3065
#endif
3066
int main(void) { makecontext(0, 0, 0); return 0; }
3067
EOF
3068
    if compile_prog "" "" ; then
3069
        coroutine_backend=ucontext
3070
    else
3071
	coroutine_backend=gthread
3072
    fi
3073
  fi
3074
elif test "$coroutine" = "gthread" ; then
3075
  coroutine_backend=gthread
3076
elif test "$coroutine" = "windows" ; then
3077
  coroutine_backend=windows
3078
elif test "$coroutine" = "sigaltstack" ; then
3079
  coroutine_backend=sigaltstack
3080
else
3081
  echo
3082
  echo "Error: unknown coroutine backend $coroutine"
3083
  echo
3084
  exit 1
3085
fi
3086

    
3087
##########################################
3088
# check if we have open_by_handle_at
3089

    
3090
open_by_handle_at=no
3091
cat > $TMPC << EOF
3092
#include <fcntl.h>
3093
#if !defined(AT_EMPTY_PATH)
3094
# error missing definition
3095
#else
3096
int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
3097
#endif
3098
EOF
3099
if compile_prog "" "" ; then
3100
    open_by_handle_at=yes
3101
fi
3102

    
3103
########################################
3104
# check if we have linux/magic.h
3105

    
3106
linux_magic_h=no
3107
cat > $TMPC << EOF
3108
#include <linux/magic.h>
3109
int main(void) {
3110
  return 0;
3111
}
3112
EOF
3113
if compile_prog "" "" ; then
3114
    linux_magic_h=yes
3115
fi
3116

    
3117
########################################
3118
# check whether we can disable the -Wunused-but-set-variable
3119
# option with a pragma (this is needed to silence a warning in
3120
# some versions of the valgrind VALGRIND_STACK_DEREGISTER macro.)
3121
# This test has to be compiled with -Werror as otherwise an
3122
# unknown pragma is only a warning.
3123
pragma_disable_unused_but_set=no
3124
cat > $TMPC << EOF
3125
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
3126
int main(void) {
3127
    return 0;
3128
}
3129
EOF
3130
if compile_prog "-Werror" "" ; then
3131
    pragma_diagnostic_available=yes
3132
fi
3133

    
3134
########################################
3135
# check if we have valgrind/valgrind.h and valgrind/memcheck.h
3136

    
3137
valgrind_h=no
3138
cat > $TMPC << EOF
3139
#include <valgrind/valgrind.h>
3140
#include <valgrind/memcheck.h>
3141
int main(void) {
3142
  return 0;
3143
}
3144
EOF
3145
if compile_prog "" "" ; then
3146
    valgrind_h=yes
3147
fi
3148

    
3149
########################################
3150
# check if environ is declared
3151

    
3152
has_environ=no
3153
cat > $TMPC << EOF
3154
#include <unistd.h>
3155
int main(void) {
3156
    environ = 0;
3157
    return 0;
3158
}
3159
EOF
3160
if compile_prog "" "" ; then
3161
    has_environ=yes
3162
fi
3163

    
3164
########################################
3165
# check if cpuid.h is usable.
3166

    
3167
cpuid_h=no
3168
cat > $TMPC << EOF
3169
#include <cpuid.h>
3170
int main(void) {
3171
  return 0;
3172
}
3173
EOF
3174
if compile_prog "" "" ; then
3175
    cpuid_h=yes
3176
fi
3177

    
3178
########################################
3179
# check if __[u]int128_t is usable.
3180

    
3181
int128=no
3182
cat > $TMPC << EOF
3183
__int128_t a;
3184
__uint128_t b;
3185
int main (void) {
3186
  a = a + b;
3187
  b = a * b;
3188
  return 0;
3189
}
3190
EOF
3191
if compile_prog "" "" ; then
3192
    int128=yes
3193
fi
3194

    
3195
##########################################
3196
# End of CC checks
3197
# After here, no more $cc or $ld runs
3198

    
3199
if test "$gcov" = "yes" ; then
3200
  CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
3201
  LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
3202
elif test "$debug" = "no" ; then
3203
  CFLAGS="-O2 -D_FORTIFY_SOURCE=2 $CFLAGS"
3204
fi
3205

    
3206

    
3207
# Disable zero malloc errors for official releases unless explicitly told to
3208
# enable/disable
3209
if test -z "$zero_malloc" ; then
3210
    if test "$z_version" = "50" ; then
3211
	zero_malloc="no"
3212
    else
3213
	zero_malloc="yes"
3214
    fi
3215
fi
3216

    
3217
# Now we've finished running tests it's OK to add -Werror to the compiler flags
3218
if test "$werror" = "yes"; then
3219
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
3220
fi
3221

    
3222
if test "$solaris" = "no" ; then
3223
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
3224
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
3225
    fi
3226
fi
3227

    
3228
# test if pod2man has --utf8 option
3229
if pod2man --help | grep -q utf8; then
3230
    POD2MAN="pod2man --utf8"
3231
else
3232
    POD2MAN="pod2man"
3233
fi
3234

    
3235
# Use ASLR, no-SEH and DEP if available
3236
if test "$mingw32" = "yes" ; then
3237
    for flag in --dynamicbase --no-seh --nxcompat; do
3238
        if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
3239
            LDFLAGS="-Wl,$flag $LDFLAGS"
3240
        fi
3241
    done
3242
fi
3243

    
3244
qemu_confdir=$sysconfdir$confsuffix
3245
qemu_datadir=$datadir$confsuffix
3246
qemu_localedir="$datadir/locale"
3247

    
3248
tools=""
3249
if test "$want_tools" = "yes" ; then
3250
  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
3251
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
3252
    tools="qemu-nbd\$(EXESUF) $tools"
3253
  fi
3254
fi
3255
if test "$softmmu" = yes ; then
3256
  if test "$virtfs" != no ; then
3257
    if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
3258
      virtfs=yes
3259
      tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
3260
    else
3261
      if test "$virtfs" = yes; then
3262
        echo "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
3263
        exit 1
3264
      fi
3265
      virtfs=no
3266
    fi
3267
  fi
3268
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
3269
    if [ "$guest_agent" = "yes" ]; then
3270
      tools="qemu-ga\$(EXESUF) $tools"
3271
    fi
3272
  fi
3273
fi
3274

    
3275
# Mac OS X ships with a broken assembler
3276
roms=
3277
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
3278
        "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
3279
        "$softmmu" = yes ; then
3280
  roms="optionrom"
3281
fi
3282
if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
3283
  roms="$roms spapr-rtas"
3284
fi
3285

    
3286
# add pixman flags after all config tests are done
3287
QEMU_CFLAGS="$QEMU_CFLAGS $pixman_cflags"
3288
libs_softmmu="$libs_softmmu $pixman_libs"
3289

    
3290
echo "Install prefix    $prefix"
3291
echo "BIOS directory    `eval echo $qemu_datadir`"
3292
echo "binary directory  `eval echo $bindir`"
3293
echo "library directory `eval echo $libdir`"
3294
echo "libexec directory `eval echo $libexecdir`"
3295
echo "include directory `eval echo $includedir`"
3296
echo "config directory  `eval echo $sysconfdir`"
3297
echo "local state directory   `eval echo $local_statedir`"
3298
if test "$mingw32" = "no" ; then
3299
echo "Manual directory  `eval echo $mandir`"
3300
echo "ELF interp prefix $interp_prefix"
3301
fi
3302
echo "Source path       $source_path"
3303
echo "C compiler        $cc"
3304
echo "Host C compiler   $host_cc"
3305
echo "Objective-C compiler $objcc"
3306
echo "CFLAGS            $CFLAGS"
3307
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
3308
echo "LDFLAGS           $LDFLAGS"
3309
echo "make              $make"
3310
echo "install           $install"
3311
echo "python            $python"
3312
if test "$slirp" = "yes" ; then
3313
    echo "smbd              $smbd"
3314
fi
3315
echo "host CPU          $cpu"
3316
echo "host big endian   $bigendian"
3317
echo "target list       $target_list"
3318
echo "tcg debug enabled $debug_tcg"
3319
echo "gprof enabled     $gprof"
3320
echo "sparse enabled    $sparse"
3321
echo "strip binaries    $strip_opt"
3322
echo "profiler          $profiler"
3323
echo "static build      $static"
3324
echo "-Werror enabled   $werror"
3325
if test "$darwin" = "yes" ; then
3326
    echo "Cocoa support     $cocoa"
3327
fi
3328
echo "pixman            $pixman"
3329
echo "SDL support       $sdl"
3330
echo "GTK support       $gtk"
3331
echo "curses support    $curses"
3332
echo "curl support      $curl"
3333
echo "mingw32 support   $mingw32"
3334
echo "Audio drivers     $audio_drv_list"
3335
echo "Extra audio cards $audio_card_list"
3336
echo "Block whitelist   $block_drv_whitelist"
3337
echo "Mixer emulation   $mixemu"
3338
echo "VirtFS support    $virtfs"
3339
echo "VNC support       $vnc"
3340
if test "$vnc" = "yes" ; then
3341
    echo "VNC TLS support   $vnc_tls"
3342
    echo "VNC SASL support  $vnc_sasl"
3343
    echo "VNC JPEG support  $vnc_jpeg"
3344
    echo "VNC PNG support   $vnc_png"
3345
    echo "VNC WS support    $vnc_ws"
3346
fi
3347
if test -n "$sparc_cpu"; then
3348
    echo "Target Sparc Arch $sparc_cpu"
3349
fi
3350
echo "xen support       $xen"
3351
echo "brlapi support    $brlapi"
3352
echo "bluez  support    $bluez"
3353
echo "Documentation     $docs"
3354
[ ! -z "$uname_release" ] && \
3355
echo "uname -r          $uname_release"
3356
echo "NPTL support      $nptl"
3357
echo "GUEST_BASE        $guest_base"
3358
echo "PIE               $pie"
3359
echo "vde support       $vde"
3360
echo "Linux AIO support $linux_aio"
3361
echo "ATTR/XATTR support $attr"
3362
echo "Install blobs     $blobs"
3363
echo "KVM support       $kvm"
3364
echo "TCG interpreter   $tcg_interpreter"
3365
echo "fdt support       $fdt"
3366
echo "preadv support    $preadv"
3367
echo "fdatasync         $fdatasync"
3368
echo "madvise           $madvise"
3369
echo "posix_madvise     $posix_madvise"
3370
echo "sigev_thread_id   $sigev_thread_id"
3371
echo "uuid support      $uuid"
3372
echo "libcap-ng support $cap_ng"
3373
echo "vhost-net support $vhost_net"
3374
echo "Trace backend     $trace_backend"
3375
echo "Trace output file $trace_file-<pid>"
3376
echo "spice support     $spice ($spice_protocol_version/$spice_server_version)"
3377
echo "rbd support       $rbd"
3378
echo "xfsctl support    $xfs"
3379
echo "nss used          $smartcard_nss"
3380
echo "usb net redir     $usb_redir"
3381
echo "OpenGL support    $opengl"
3382
echo "libiscsi support  $libiscsi"
3383
echo "build guest agent $guest_agent"
3384
echo "seccomp support   $seccomp"
3385
echo "coroutine backend $coroutine_backend"
3386
echo "GlusterFS support $glusterfs"
3387
echo "virtio-blk-data-plane $virtio_blk_data_plane"
3388
echo "gcov              $gcov_tool"
3389
echo "gcov enabled      $gcov"
3390

    
3391
if test "$sdl_too_old" = "yes"; then
3392
echo "-> Your SDL version is too old - please upgrade to have SDL support"
3393
fi
3394

    
3395
config_host_mak="config-host.mak"
3396
config_host_ld="config-host.ld"
3397

    
3398
echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
3399

    
3400
echo "# Automatically generated by configure - do not modify" > $config_host_mak
3401
printf "# Configured with:" >> $config_host_mak
3402
printf " '%s'" "$0" "$@" >> $config_host_mak
3403
echo >> $config_host_mak
3404

    
3405
echo all: >> $config_host_mak
3406
echo "prefix=$prefix" >> $config_host_mak
3407
echo "bindir=$bindir" >> $config_host_mak
3408
echo "libdir=$libdir" >> $config_host_mak
3409
echo "libexecdir=$libexecdir" >> $config_host_mak
3410
echo "includedir=$includedir" >> $config_host_mak
3411
echo "mandir=$mandir" >> $config_host_mak
3412
echo "sysconfdir=$sysconfdir" >> $config_host_mak
3413
echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
3414
echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
3415
echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
3416
echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
3417
echo "qemu_helperdir=$libexecdir" >> $config_host_mak
3418
echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
3419
echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
3420
echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
3421

    
3422
echo "ARCH=$ARCH" >> $config_host_mak
3423
if test "$debug_tcg" = "yes" ; then
3424
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
3425
fi
3426
if test "$debug" = "yes" ; then
3427
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
3428
fi
3429
if test "$strip_opt" = "yes" ; then
3430
  echo "STRIP=${strip}" >> $config_host_mak
3431
fi
3432
if test "$bigendian" = "yes" ; then
3433
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
3434
fi
3435
if test "$mingw32" = "yes" ; then
3436
  echo "CONFIG_WIN32=y" >> $config_host_mak
3437
  rc_version=`cat $source_path/VERSION`
3438
  version_major=${rc_version%%.*}
3439
  rc_version=${rc_version#*.}
3440
  version_minor=${rc_version%%.*}
3441
  rc_version=${rc_version#*.}
3442
  version_subminor=${rc_version%%.*}
3443
  version_micro=0
3444
  echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
3445
  echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
3446
else
3447
  echo "CONFIG_POSIX=y" >> $config_host_mak
3448
fi
3449

    
3450
if test "$linux" = "yes" ; then
3451
  echo "CONFIG_LINUX=y" >> $config_host_mak
3452
fi
3453

    
3454
if test "$darwin" = "yes" ; then
3455
  echo "CONFIG_DARWIN=y" >> $config_host_mak
3456
fi
3457

    
3458
if test "$aix" = "yes" ; then
3459
  echo "CONFIG_AIX=y" >> $config_host_mak
3460
fi
3461

    
3462
if test "$solaris" = "yes" ; then
3463
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
3464
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
3465
  if test "$needs_libsunmath" = "yes" ; then
3466
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
3467
  fi
3468
fi
3469
if test "$haiku" = "yes" ; then
3470
  echo "CONFIG_HAIKU=y" >> $config_host_mak
3471
fi
3472
if test "$static" = "yes" ; then
3473
  echo "CONFIG_STATIC=y" >> $config_host_mak
3474
fi
3475
if test "$profiler" = "yes" ; then
3476
  echo "CONFIG_PROFILER=y" >> $config_host_mak
3477
fi
3478
if test "$slirp" = "yes" ; then
3479
  echo "CONFIG_SLIRP=y" >> $config_host_mak
3480
  echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
3481
fi
3482
if test "$vde" = "yes" ; then
3483
  echo "CONFIG_VDE=y" >> $config_host_mak
3484
fi
3485
if test "$cap_ng" = "yes" ; then
3486
  echo "CONFIG_LIBCAP=y" >> $config_host_mak
3487
fi
3488
for card in $audio_card_list; do
3489
    def=CONFIG_`echo $card | LC_ALL=C tr '[a-z]' '[A-Z]'`
3490
    echo "$def=y" >> $config_host_mak
3491
done
3492
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
3493
for drv in $audio_drv_list; do
3494
    def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
3495
    echo "$def=y" >> $config_host_mak
3496
    if test "$drv" = "fmod"; then
3497
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
3498
    fi
3499
done
3500
if test "$audio_pt_int" = "yes" ; then
3501
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
3502
fi
3503
if test "$audio_win_int" = "yes" ; then
3504
  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
3505
fi
3506
echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
3507
if test "$mixemu" = "yes" ; then
3508
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
3509
fi
3510
if test "$vnc" = "yes" ; then
3511
  echo "CONFIG_VNC=y" >> $config_host_mak
3512
fi
3513
if test "$vnc_tls" = "yes" ; then
3514
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
3515
fi
3516
if test "$vnc_sasl" = "yes" ; then
3517
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
3518
fi
3519
if test "$vnc_jpeg" = "yes" ; then
3520
  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
3521
fi
3522
if test "$vnc_png" = "yes" ; then
3523
  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
3524
fi
3525
if test "$vnc_ws" = "yes" ; then
3526
  echo "CONFIG_VNC_WS=y" >> $config_host_mak
3527
  echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak
3528
fi
3529
if test "$fnmatch" = "yes" ; then
3530
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
3531
fi
3532
if test "$uuid" = "yes" ; then
3533
  echo "CONFIG_UUID=y" >> $config_host_mak
3534
fi
3535
if test "$xfs" = "yes" ; then
3536
  echo "CONFIG_XFS=y" >> $config_host_mak
3537
fi
3538
qemu_version=`head $source_path/VERSION`
3539
echo "VERSION=$qemu_version" >>$config_host_mak
3540
echo "PKGVERSION=$pkgversion" >>$config_host_mak
3541
echo "SRC_PATH=$source_path" >> $config_host_mak
3542
echo "TARGET_DIRS=$target_list" >> $config_host_mak
3543
if [ "$docs" = "yes" ] ; then
3544
  echo "BUILD_DOCS=yes" >> $config_host_mak
3545
fi
3546
if test "$sdl" = "yes" ; then
3547
  echo "CONFIG_SDL=y" >> $config_host_mak
3548
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
3549
fi
3550
if test "$cocoa" = "yes" ; then
3551
  echo "CONFIG_COCOA=y" >> $config_host_mak
3552
fi
3553
if test "$curses" = "yes" ; then
3554
  echo "CONFIG_CURSES=y" >> $config_host_mak
3555
fi
3556
if test "$atfile" = "yes" ; then
3557
  echo "CONFIG_ATFILE=y" >> $config_host_mak
3558
fi
3559
if test "$utimens" = "yes" ; then
3560
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
3561
fi
3562
if test "$pipe2" = "yes" ; then
3563
  echo "CONFIG_PIPE2=y" >> $config_host_mak
3564
fi
3565
if test "$accept4" = "yes" ; then
3566
  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
3567
fi
3568
if test "$splice" = "yes" ; then
3569
  echo "CONFIG_SPLICE=y" >> $config_host_mak
3570
fi
3571
if test "$eventfd" = "yes" ; then
3572
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
3573
fi
3574
if test "$fallocate" = "yes" ; then
3575
  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
3576
fi
3577
if test "$fallocate_punch_hole" = "yes" ; then
3578
  echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
3579
fi
3580
if test "$sync_file_range" = "yes" ; then
3581
  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
3582
fi
3583
if test "$fiemap" = "yes" ; then
3584
  echo "CONFIG_FIEMAP=y" >> $config_host_mak
3585
fi
3586
if test "$dup3" = "yes" ; then
3587
  echo "CONFIG_DUP3=y" >> $config_host_mak
3588
fi
3589
if test "$epoll" = "yes" ; then
3590
  echo "CONFIG_EPOLL=y" >> $config_host_mak
3591
fi
3592
if test "$epoll_create1" = "yes" ; then
3593
  echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
3594
fi
3595
if test "$epoll_pwait" = "yes" ; then
3596
  echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
3597
fi
3598
if test "$inotify" = "yes" ; then
3599
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
3600
fi
3601
if test "$inotify1" = "yes" ; then
3602
  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
3603
fi
3604
if test "$byteswap_h" = "yes" ; then
3605
  echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
3606
fi
3607
if test "$bswap_h" = "yes" ; then
3608
  echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
3609
fi
3610
if test "$curl" = "yes" ; then
3611
  echo "CONFIG_CURL=y" >> $config_host_mak
3612
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
3613
fi
3614
if test "$brlapi" = "yes" ; then
3615
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
3616
fi
3617
if test "$bluez" = "yes" ; then
3618
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
3619
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
3620
fi
3621
echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
3622
if test "$gtk" = "yes" ; then
3623
  echo "CONFIG_GTK=y" >> $config_host_mak
3624
  echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
3625
  echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
3626
fi
3627
if test "$xen" = "yes" ; then
3628
  echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
3629
  echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
3630
fi
3631
if test "$linux_aio" = "yes" ; then
3632
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
3633
fi
3634
if test "$attr" = "yes" ; then
3635
  echo "CONFIG_ATTR=y" >> $config_host_mak
3636
fi
3637
if test "$libattr" = "yes" ; then
3638
  echo "CONFIG_LIBATTR=y" >> $config_host_mak
3639
fi
3640
if test "$virtfs" = "yes" ; then
3641
  echo "CONFIG_VIRTFS=y" >> $config_host_mak
3642
fi
3643
if test "$blobs" = "yes" ; then
3644
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
3645
fi
3646
if test "$iovec" = "yes" ; then
3647
  echo "CONFIG_IOVEC=y" >> $config_host_mak
3648
fi
3649
if test "$preadv" = "yes" ; then
3650
  echo "CONFIG_PREADV=y" >> $config_host_mak
3651
fi
3652
if test "$fdt" = "yes" ; then
3653
  echo "CONFIG_FDT=y" >> $config_host_mak
3654
fi
3655
if test "$signalfd" = "yes" ; then
3656
  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
3657
fi
3658
if test "$tcg_interpreter" = "yes" ; then
3659
  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
3660
fi
3661
if test "$fdatasync" = "yes" ; then
3662
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
3663
fi
3664
if test "$madvise" = "yes" ; then
3665
  echo "CONFIG_MADVISE=y" >> $config_host_mak
3666
fi
3667
if test "$posix_madvise" = "yes" ; then
3668
  echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
3669
fi
3670
if test "$sigev_thread_id" = "yes" ; then
3671
  echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
3672
fi
3673

    
3674
if test "$spice" = "yes" ; then
3675
  echo "CONFIG_SPICE=y" >> $config_host_mak
3676
fi
3677

    
3678
if test "$smartcard_nss" = "yes" ; then
3679
  echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
3680
  echo "libcacard_libs=$libcacard_libs" >> $config_host_mak
3681
  echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak
3682
fi
3683

    
3684
if test "$usb_redir" = "yes" ; then
3685
  echo "CONFIG_USB_REDIR=y" >> $config_host_mak
3686
fi
3687

    
3688
if test "$opengl" = "yes" ; then
3689
  echo "CONFIG_OPENGL=y" >> $config_host_mak
3690
fi
3691

    
3692
if test "$libiscsi" = "yes" ; then
3693
  echo "CONFIG_LIBISCSI=y" >> $config_host_mak
3694
fi
3695

    
3696
if test "$seccomp" = "yes"; then
3697
  echo "CONFIG_SECCOMP=y" >> $config_host_mak
3698
fi
3699

    
3700
# XXX: suppress that
3701
if [ "$bsd" = "yes" ] ; then
3702
  echo "CONFIG_BSD=y" >> $config_host_mak
3703
fi
3704

    
3705
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
3706

    
3707
if test "$zero_malloc" = "yes" ; then
3708
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
3709
fi
3710
if test "$rbd" = "yes" ; then
3711
  echo "CONFIG_RBD=y" >> $config_host_mak
3712
fi
3713

    
3714
if test "$coroutine_backend" = "ucontext" ; then
3715
  echo "CONFIG_UCONTEXT_COROUTINE=y" >> $config_host_mak
3716
elif test "$coroutine_backend" = "sigaltstack" ; then
3717
  echo "CONFIG_SIGALTSTACK_COROUTINE=y" >> $config_host_mak
3718
fi
3719

    
3720
if test "$open_by_handle_at" = "yes" ; then
3721
  echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
3722
fi
3723

    
3724
if test "$linux_magic_h" = "yes" ; then
3725
  echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
3726
fi
3727

    
3728
if test "$pragma_diagnostic_available" = "yes" ; then
3729
  echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
3730
fi
3731

    
3732
if test "$valgrind_h" = "yes" ; then
3733
  echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
3734
fi
3735

    
3736
if test "$has_environ" = "yes" ; then
3737
  echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
3738
fi
3739

    
3740
if test "$cpuid_h" = "yes" ; then
3741
  echo "CONFIG_CPUID_H=y" >> $config_host_mak
3742
fi
3743

    
3744
if test "$int128" = "yes" ; then
3745
  echo "CONFIG_INT128=y" >> $config_host_mak
3746
fi
3747

    
3748
if test "$glusterfs" = "yes" ; then
3749
  echo "CONFIG_GLUSTERFS=y" >> $config_host_mak
3750
fi
3751

    
3752
if test "$virtio_blk_data_plane" = "yes" ; then
3753
  echo "CONFIG_VIRTIO_BLK_DATA_PLANE=y" >> $config_host_mak
3754
fi
3755

    
3756
# USB host support
3757
case "$usb" in
3758
linux)
3759
  echo "HOST_USB=linux legacy" >> $config_host_mak
3760
;;
3761
bsd)
3762
  echo "HOST_USB=bsd" >> $config_host_mak
3763
;;
3764
*)
3765
  echo "HOST_USB=stub" >> $config_host_mak
3766
;;
3767
esac
3768

    
3769
# use default implementation for tracing backend-specific routines
3770
trace_default=yes
3771
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
3772
if test "$trace_backend" = "nop"; then
3773
  echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
3774
fi
3775
if test "$trace_backend" = "simple"; then
3776
  echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
3777
  trace_default=no
3778
  # Set the appropriate trace file.
3779
  trace_file="\"$trace_file-\" FMT_pid"
3780
fi
3781
if test "$trace_backend" = "stderr"; then
3782
  echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
3783
  trace_default=no
3784
fi
3785
if test "$trace_backend" = "ust"; then
3786
  echo "CONFIG_TRACE_UST=y" >> $config_host_mak
3787
fi
3788
if test "$trace_backend" = "dtrace"; then
3789
  echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
3790
  if test "$trace_backend_stap" = "yes" ; then
3791
    echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
3792
  fi
3793
fi
3794
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
3795
if test "$trace_default" = "yes"; then
3796
  echo "CONFIG_TRACE_DEFAULT=y" >> $config_host_mak
3797
fi
3798

    
3799
echo "TOOLS=$tools" >> $config_host_mak
3800
echo "ROMS=$roms" >> $config_host_mak
3801
echo "MAKE=$make" >> $config_host_mak
3802
echo "INSTALL=$install" >> $config_host_mak
3803
echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
3804
echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
3805
if test -n "$libtool"; then
3806
  echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
3807
  echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
3808
else
3809
  echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
3810
  echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
3811
fi
3812
echo "PYTHON=$python" >> $config_host_mak
3813
echo "CC=$cc" >> $config_host_mak
3814
echo "CC_I386=$cc_i386" >> $config_host_mak
3815
echo "HOST_CC=$host_cc" >> $config_host_mak
3816
echo "OBJCC=$objcc" >> $config_host_mak
3817
echo "AR=$ar" >> $config_host_mak
3818
echo "AS=$as" >> $config_host_mak
3819
echo "CPP=$cpp" >> $config_host_mak
3820
echo "OBJCOPY=$objcopy" >> $config_host_mak
3821
echo "LD=$ld" >> $config_host_mak
3822
echo "WINDRES=$windres" >> $config_host_mak
3823
echo "LIBTOOL=$libtool" >> $config_host_mak
3824
echo "CFLAGS=$CFLAGS" >> $config_host_mak
3825
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
3826
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
3827
if test "$sparse" = "yes" ; then
3828
  echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
3829
  echo "HOST_CC      := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
3830
  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
3831
fi
3832
if test "$cross_prefix" != ""; then
3833
  echo "AUTOCONF_HOST := --host=${cross_prefix%-}"     >> $config_host_mak
3834
else
3835
  echo "AUTOCONF_HOST := "                             >> $config_host_mak
3836
fi
3837
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
3838
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
3839
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
3840
echo "LIBS+=$LIBS" >> $config_host_mak
3841
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
3842
echo "EXESUF=$EXESUF" >> $config_host_mak
3843
echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
3844
echo "POD2MAN=$POD2MAN" >> $config_host_mak
3845
echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
3846
if test "$gcov" = "yes" ; then
3847
  echo "CONFIG_GCOV=y" >> $config_host_mak
3848
  echo "GCOV=$gcov_tool" >> $config_host_mak
3849
fi
3850

    
3851
# generate list of library paths for linker script
3852

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

    
3855
if test -f ${config_host_ld}~ ; then
3856
  if cmp -s $config_host_ld ${config_host_ld}~ ; then
3857
    mv ${config_host_ld}~ $config_host_ld
3858
  else
3859
    rm ${config_host_ld}~
3860
  fi
3861
fi
3862

    
3863
# use included Linux headers
3864
if test "$linux" = "yes" ; then
3865
  mkdir -p linux-headers
3866
  case "$cpu" in
3867
  i386|x86_64)
3868
    linux_arch=x86
3869
    ;;
3870
  ppcemb|ppc|ppc64)
3871
    linux_arch=powerpc
3872
    ;;
3873
  s390x)
3874
    linux_arch=s390
3875
    ;;
3876
  *)
3877
    # For most CPUs the kernel architecture name and QEMU CPU name match.
3878
    linux_arch="$cpu"
3879
    ;;
3880
  esac
3881
    # For non-KVM architectures we will not have asm headers
3882
    if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
3883
      symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
3884
    fi
3885
fi
3886

    
3887
for target in $target_list; do
3888
target_dir="$target"
3889
config_target_mak=$target_dir/config-target.mak
3890
target_arch2=`echo $target | cut -d '-' -f 1`
3891
target_bigendian="no"
3892

    
3893
case "$target_arch2" in
3894
  armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
3895
  target_bigendian=yes
3896
  ;;
3897
esac
3898
target_softmmu="no"
3899
target_user_only="no"
3900
target_linux_user="no"
3901
target_bsd_user="no"
3902
case "$target" in
3903
  ${target_arch2}-softmmu)
3904
    target_softmmu="yes"
3905
    ;;
3906
  ${target_arch2}-linux-user)
3907
    if test "$linux" != "yes" ; then
3908
      echo "ERROR: Target '$target' is only available on a Linux host"
3909
      exit 1
3910
    fi
3911
    target_user_only="yes"
3912
    target_linux_user="yes"
3913
    ;;
3914
  ${target_arch2}-bsd-user)
3915
    if test "$bsd" != "yes" ; then
3916
      echo "ERROR: Target '$target' is only available on a BSD host"
3917
      exit 1
3918
    fi
3919
    target_user_only="yes"
3920
    target_bsd_user="yes"
3921
    ;;
3922
  *)
3923
    echo "ERROR: Target '$target' not recognised"
3924
    exit 1
3925
    ;;
3926
esac
3927

    
3928
mkdir -p $target_dir
3929
echo "# Automatically generated by configure - do not modify" > $config_target_mak
3930

    
3931
bflt="no"
3932
target_nptl="no"
3933
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
3934
gdb_xml_files=""
3935
target_short_alignment=2
3936
target_int_alignment=4
3937
target_long_alignment=4
3938
target_llong_alignment=8
3939
target_libs_softmmu=
3940

    
3941
TARGET_ARCH="$target_arch2"
3942
TARGET_BASE_ARCH=""
3943
TARGET_ABI_DIR=""
3944

    
3945
case "$target_arch2" in
3946
  i386)
3947
  ;;
3948
  x86_64)
3949
    TARGET_BASE_ARCH=i386
3950
    target_long_alignment=8
3951
  ;;
3952
  alpha)
3953
    target_long_alignment=8
3954
    target_nptl="yes"
3955
  ;;
3956
  arm|armeb)
3957
    TARGET_ARCH=arm
3958
    bflt="yes"
3959
    target_nptl="yes"
3960
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
3961
    target_llong_alignment=4
3962
    target_libs_softmmu="$fdt_libs"
3963
  ;;
3964
  cris)
3965
    target_nptl="yes"
3966
  ;;
3967
  lm32)
3968
    target_libs_softmmu="$opengl_libs"
3969
  ;;
3970
  m68k)
3971
    bflt="yes"
3972
    gdb_xml_files="cf-core.xml cf-fp.xml"
3973
    target_int_alignment=2
3974
    target_long_alignment=2
3975
    target_llong_alignment=2
3976
  ;;
3977
  microblaze|microblazeel)
3978
    TARGET_ARCH=microblaze
3979
    bflt="yes"
3980
    target_nptl="yes"
3981
    target_libs_softmmu="$fdt_libs"
3982
  ;;
3983
  mips|mipsel)
3984
    TARGET_ARCH=mips
3985
    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
3986
    target_nptl="yes"
3987
  ;;
3988
  mipsn32|mipsn32el)
3989
    TARGET_ARCH=mipsn32
3990
    TARGET_BASE_ARCH=mips
3991
    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
3992
  ;;
3993
  mips64|mips64el)
3994
    TARGET_ARCH=mips64
3995
    TARGET_BASE_ARCH=mips
3996
    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
3997
    target_long_alignment=8
3998
  ;;
3999
  or32)
4000
    TARGET_ARCH=openrisc
4001
    TARGET_BASE_ARCH=openrisc
4002
  ;;
4003
  ppc)
4004
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
4005
    target_nptl="yes"
4006
    target_libs_softmmu="$fdt_libs"
4007
  ;;
4008
  ppcemb)
4009
    TARGET_BASE_ARCH=ppc
4010
    TARGET_ABI_DIR=ppc
4011
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
4012
    target_nptl="yes"
4013
    target_libs_softmmu="$fdt_libs"
4014
  ;;
4015
  ppc64)
4016
    TARGET_BASE_ARCH=ppc
4017
    TARGET_ABI_DIR=ppc
4018
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
4019
    target_long_alignment=8
4020
    target_libs_softmmu="$fdt_libs"
4021
  ;;
4022
  ppc64abi32)
4023
    TARGET_ARCH=ppc64
4024
    TARGET_BASE_ARCH=ppc
4025
    TARGET_ABI_DIR=ppc
4026
    echo "TARGET_ABI32=y" >> $config_target_mak
4027
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
4028
    target_libs_softmmu="$fdt_libs"
4029
  ;;
4030
  sh4|sh4eb)
4031
    TARGET_ARCH=sh4
4032
    bflt="yes"
4033
    target_nptl="yes"
4034
  ;;
4035
  sparc)
4036
  ;;
4037
  sparc64)
4038
    TARGET_BASE_ARCH=sparc
4039
    target_long_alignment=8
4040
  ;;
4041
  sparc32plus)
4042
    TARGET_ARCH=sparc64
4043
    TARGET_BASE_ARCH=sparc
4044
    TARGET_ABI_DIR=sparc
4045
    echo "TARGET_ABI32=y" >> $config_target_mak
4046
  ;;
4047
  s390x)
4048
    target_nptl="yes"
4049
    target_long_alignment=8
4050
  ;;
4051
  unicore32)
4052
  ;;
4053
  xtensa|xtensaeb)
4054
    TARGET_ARCH=xtensa
4055
  ;;
4056
  *)
4057
    echo "Unsupported target CPU"
4058
    exit 1
4059
  ;;
4060
esac
4061
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
4062
if [ "$TARGET_BASE_ARCH" = "" ]; then
4063
  TARGET_BASE_ARCH=$TARGET_ARCH
4064
fi
4065

    
4066
symlink "$source_path/Makefile.target" "$target_dir/Makefile"
4067

    
4068
upper() {
4069
    echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
4070
}
4071

    
4072
case "$cpu" in
4073
  i386|x86_64|ppc)
4074
    # The TCG interpreter currently does not support ld/st optimization.
4075
    if test "$tcg_interpreter" = "no" ; then
4076
        echo "CONFIG_QEMU_LDST_OPTIMIZATION=y" >> $config_target_mak
4077
    fi
4078
  ;;
4079
esac
4080

    
4081
echo "TARGET_SHORT_ALIGNMENT=$target_short_alignment" >> $config_target_mak
4082
echo "TARGET_INT_ALIGNMENT=$target_int_alignment" >> $config_target_mak
4083
echo "TARGET_LONG_ALIGNMENT=$target_long_alignment" >> $config_target_mak
4084
echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak
4085
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
4086
target_arch_name="`upper $TARGET_ARCH`"
4087
echo "TARGET_$target_arch_name=y" >> $config_target_mak
4088
echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
4089
echo "TARGET_TYPE=TARGET_TYPE_`upper $target_arch2`" >> $config_target_mak
4090
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
4091
if [ "$TARGET_ABI_DIR" = "" ]; then
4092
  TARGET_ABI_DIR=$TARGET_ARCH
4093
fi
4094
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
4095
case "$target_arch2" in
4096
  i386|x86_64)
4097
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
4098
      echo "CONFIG_XEN=y" >> $config_target_mak
4099
      if test "$xen_pci_passthrough" = yes; then
4100
        echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
4101
      fi
4102
    else
4103
      echo "CONFIG_NO_XEN=y" >> $config_target_mak
4104
    fi
4105
    ;;
4106
  *)
4107
    echo "CONFIG_NO_XEN=y" >> $config_target_mak
4108
esac
4109
case "$target_arch2" in
4110
  i386|x86_64|ppcemb|ppc|ppc64|s390x)
4111
    # Make sure the target and host cpus are compatible
4112
    if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
4113
      \( "$target_arch2" = "$cpu" -o \
4114
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \
4115
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
4116
      \( "$target_arch2" = "ppc"    -a "$cpu" = "ppc64" \) -o \
4117
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
4118
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
4119
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
4120
      echo "CONFIG_KVM=y" >> $config_target_mak
4121
      if test "$vhost_net" = "yes" ; then
4122
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
4123
      fi
4124
    fi
4125
esac
4126
case "$target_arch2" in
4127
  i386|x86_64)
4128
    echo "CONFIG_HAVE_GET_MEMORY_MAPPING=y" >> $config_target_mak
4129
esac
4130
if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then
4131
  echo "CONFIG_PSERIES=y" >> $config_target_mak
4132
fi
4133
if test "$target_bigendian" = "yes" ; then
4134
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
4135
fi
4136
if test "$target_softmmu" = "yes" ; then
4137
  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
4138
  echo "LIBS+=$libs_softmmu $target_libs_softmmu" >> $config_target_mak
4139
  case "$target_arch2" in
4140
    i386|x86_64)
4141
      echo "CONFIG_HAVE_CORE_DUMP=y" >> $config_target_mak
4142
  esac
4143
fi
4144
if test "$target_user_only" = "yes" ; then
4145
  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
4146
  echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
4147
fi
4148
if test "$target_linux_user" = "yes" ; then
4149
  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
4150
fi
4151
list=""
4152
if test ! -z "$gdb_xml_files" ; then
4153
  for x in $gdb_xml_files; do
4154
    list="$list $source_path/gdb-xml/$x"
4155
  done
4156
  echo "TARGET_XML_FILES=$list" >> $config_target_mak
4157
fi
4158

    
4159
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
4160
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
4161
fi
4162
if test "$target_user_only" = "yes" \
4163
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
4164
  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
4165
fi
4166
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
4167
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
4168
fi
4169
if test "$target_bsd_user" = "yes" ; then
4170
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
4171
fi
4172

    
4173
# the static way of configuring available audio cards requires this workaround
4174
if test "$target_user_only" != "yes" && grep -q CONFIG_PCSPK $source_path/default-configs/$target.mak; then
4175
  echo "CONFIG_PCSPK=y" >> $config_target_mak
4176
fi
4177

    
4178
# generate QEMU_CFLAGS/LDFLAGS for targets
4179

    
4180
cflags=""
4181
includes=""
4182
ldflags=""
4183

    
4184
if test "$tcg_interpreter" = "yes"; then
4185
  includes="-I\$(SRC_PATH)/tcg/tci $includes"
4186
elif test "$ARCH" = "sparc64" ; then
4187
  includes="-I\$(SRC_PATH)/tcg/sparc $includes"
4188
elif test "$ARCH" = "s390x" ; then
4189
  includes="-I\$(SRC_PATH)/tcg/s390 $includes"
4190
elif test "$ARCH" = "x86_64" ; then
4191
  includes="-I\$(SRC_PATH)/tcg/i386 $includes"
4192
else
4193
  includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
4194
fi
4195
includes="-I\$(SRC_PATH)/tcg $includes"
4196

    
4197
if test "$linux" = "yes" ; then
4198
  includes="-I\$(SRC_PATH)/linux-headers $includes"
4199
fi
4200

    
4201
for i in $ARCH $TARGET_BASE_ARCH ; do
4202
  case "$i" in
4203
  alpha)
4204
    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
4205
    echo "CONFIG_ALPHA_DIS=y"  >> config-all-disas.mak
4206
  ;;
4207
  arm)
4208
    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
4209
    echo "CONFIG_ARM_DIS=y"  >> config-all-disas.mak
4210
  ;;
4211
  cris)
4212
    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
4213
    echo "CONFIG_CRIS_DIS=y"  >> config-all-disas.mak
4214
  ;;
4215
  hppa)
4216
    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
4217
    echo "CONFIG_HPPA_DIS=y"  >> config-all-disas.mak
4218
  ;;
4219
  i386|x86_64)
4220
    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
4221
    echo "CONFIG_I386_DIS=y"  >> config-all-disas.mak
4222
  ;;
4223
  ia64*)
4224
    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
4225
    echo "CONFIG_IA64_DIS=y"  >> config-all-disas.mak
4226
  ;;
4227
  lm32)
4228
    echo "CONFIG_LM32_DIS=y"  >> $config_target_mak
4229
    echo "CONFIG_LM32_DIS=y"  >> config-all-disas.mak
4230
  ;;
4231
  m68k)
4232
    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
4233
    echo "CONFIG_M68K_DIS=y"  >> config-all-disas.mak
4234
  ;;
4235
  microblaze*)
4236
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
4237
    echo "CONFIG_MICROBLAZE_DIS=y"  >> config-all-disas.mak
4238
  ;;
4239
  mips*)
4240
    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
4241
    echo "CONFIG_MIPS_DIS=y"  >> config-all-disas.mak
4242
  ;;
4243
  or32)
4244
    echo "CONFIG_OPENRISC_DIS=y"  >> $config_target_mak
4245
    echo "CONFIG_OPENRISC_DIS=y"  >> config-all-disas.mak
4246
  ;;
4247
  ppc*)
4248
    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
4249
    echo "CONFIG_PPC_DIS=y"  >> config-all-disas.mak
4250
  ;;
4251
  s390*)
4252
    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
4253
    echo "CONFIG_S390_DIS=y"  >> config-all-disas.mak
4254
  ;;
4255
  sh4)
4256
    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
4257
    echo "CONFIG_SH4_DIS=y"  >> config-all-disas.mak
4258
  ;;
4259
  sparc*)
4260
    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
4261
    echo "CONFIG_SPARC_DIS=y"  >> config-all-disas.mak
4262
  ;;
4263
  xtensa*)
4264
    echo "CONFIG_XTENSA_DIS=y"  >> $config_target_mak
4265
    echo "CONFIG_XTENSA_DIS=y"  >> config-all-disas.mak
4266
  ;;
4267
  esac
4268
done
4269
if test "$tcg_interpreter" = "yes" ; then
4270
  echo "CONFIG_TCI_DIS=y"  >> $config_target_mak
4271
  echo "CONFIG_TCI_DIS=y"  >> config-all-disas.mak
4272
fi
4273

    
4274
case "$ARCH" in
4275
alpha)
4276
  # Ensure there's only a single GP
4277
  cflags="-msmall-data $cflags"
4278
;;
4279
esac
4280

    
4281
if test "$target_softmmu" = "yes" ; then
4282
  case "$TARGET_BASE_ARCH" in
4283
  arm)
4284
    cflags="-DHAS_AUDIO $cflags"
4285
  ;;
4286
  lm32)
4287
    cflags="-DHAS_AUDIO $cflags"
4288
  ;;
4289
  i386|mips|ppc)
4290
    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
4291
  ;;
4292
  esac
4293
fi
4294

    
4295
if test "$gprof" = "yes" ; then
4296
  echo "TARGET_GPROF=yes" >> $config_target_mak
4297
  if test "$target_linux_user" = "yes" ; then
4298
    cflags="-p $cflags"
4299
    ldflags="-p $ldflags"
4300
  fi
4301
  if test "$target_softmmu" = "yes" ; then
4302
    ldflags="-p $ldflags"
4303
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
4304
  fi
4305
fi
4306

    
4307
if test "$ARCH" = "tci"; then
4308
  linker_script=""
4309
else
4310
  linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/ldscripts/\$(ARCH).ld"
4311
fi
4312

    
4313
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
4314
  case "$ARCH" in
4315
  alpha | s390x)
4316
    # The default placement of the application is fine.
4317
    ;;
4318
  *)
4319
    ldflags="$linker_script $ldflags"
4320
    ;;
4321
  esac
4322
fi
4323

    
4324
echo "LDFLAGS+=$ldflags" >> $config_target_mak
4325
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
4326
echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
4327

    
4328
done # for target in $targets
4329

    
4330
if [ "$pixman" = "internal" ]; then
4331
  echo "config-host.h: subdir-pixman" >> $config_host_mak
4332
fi
4333

    
4334
# build tree in object directory in case the source is not in the current directory
4335
DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32"
4336
DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas"
4337
DIRS="$DIRS roms/seabios roms/vgabios"
4338
DIRS="$DIRS qapi-generated"
4339
FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
4340
FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
4341
FILES="$FILES tests/tcg/lm32/Makefile po/Makefile"
4342
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
4343
FILES="$FILES pc-bios/spapr-rtas/Makefile"
4344
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
4345
for bios_file in \
4346
    $source_path/pc-bios/*.bin \
4347
    $source_path/pc-bios/*.aml \
4348
    $source_path/pc-bios/*.rom \
4349
    $source_path/pc-bios/*.dtb \
4350
    $source_path/pc-bios/openbios-* \
4351
    $source_path/pc-bios/palcode-*
4352
do
4353
    FILES="$FILES pc-bios/`basename $bios_file`"
4354
done
4355
mkdir -p $DIRS
4356
for f in $FILES ; do
4357
    if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then
4358
        symlink "$source_path/$f" "$f"
4359
    fi
4360
done
4361

    
4362
# temporary config to build submodules
4363
for rom in seabios vgabios ; do
4364
    config_mak=roms/$rom/config.mak
4365
    echo "# Automatically generated by configure - do not modify" > $config_mak
4366
    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
4367
    echo "AS=$as" >> $config_mak
4368
    echo "CC=$cc" >> $config_mak
4369
    echo "BCC=bcc" >> $config_mak
4370
    echo "CPP=$cpp" >> $config_mak
4371
    echo "OBJCOPY=objcopy" >> $config_mak
4372
    echo "IASL=iasl" >> $config_mak
4373
    echo "LD=$ld" >> $config_mak
4374
done
4375

    
4376
if test "$docs" = "yes" ; then
4377
  mkdir -p QMP
4378
fi