Statistics
| Branch: | Revision:

root / configure @ 36707144

History | View | Annotate | Download (85.7 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
compile_object() {
24
  echo $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log
25
  $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log 2>&1
26
}
27

    
28
compile_prog() {
29
  local_cflags="$1"
30
  local_ldflags="$2"
31
  echo $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log
32
  $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log 2>&1
33
}
34

    
35
# symbolically link $1 to $2.  Portable version of "ln -sf".
36
symlink() {
37
  rm -f $2
38
  ln -s $1 $2
39
}
40

    
41
# check whether a command is available to this shell (may be either an
42
# executable or a builtin)
43
has() {
44
    type "$1" >/dev/null 2>&1
45
}
46

    
47
# search for an executable in PATH
48
path_of() {
49
    local_command="$1"
50
    local_ifs="$IFS"
51
    local_dir=""
52

    
53
    # pathname has a dir component?
54
    if [ "${local_command#*/}" != "$local_command" ]; then
55
        if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
56
            echo "$local_command"
57
            return 0
58
        fi
59
    fi
60
    if [ -z "$local_command" ]; then
61
        return 1
62
    fi
63

    
64
    IFS=:
65
    for local_dir in $PATH; do
66
        if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
67
            echo "$local_dir/$local_command"
68
            IFS="${local_ifs:-$(printf ' \t\n')}"
69
            return 0
70
        fi
71
    done
72
    # not found
73
    IFS="${local_ifs:-$(printf ' \t\n')}"
74
    return 1
75
}
76

    
77
# default parameters
78
source_path=`dirname "$0"`
79
cpu=""
80
interp_prefix="/usr/gnemul/qemu-%M"
81
static="no"
82
sparc_cpu=""
83
cross_prefix=""
84
audio_drv_list=""
85
audio_card_list="ac97 es1370 sb16 hda"
86
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda"
87
block_drv_whitelist=""
88
host_cc="gcc"
89
helper_cflags=""
90
libs_softmmu=""
91
libs_tools=""
92
audio_pt_int=""
93
audio_win_int=""
94
cc_i386=i386-pc-linux-gnu-gcc
95

    
96
target_list=""
97

    
98
# Default value for a variable defining feature "foo".
99
#  * foo="no"  feature will only be used if --enable-foo arg is given
100
#  * foo=""    feature will be searched for, and if found, will be used
101
#              unless --disable-foo is given
102
#  * foo="yes" this value will only be set by --enable-foo flag.
103
#              feature will searched for,
104
#              if not found, configure exits with error
105
#
106
# Always add --enable-foo and --disable-foo command line args.
107
# Distributions want to ensure that several features are compiled in, and it
108
# is impossible without a --enable-foo that exits if a feature is not found.
109

    
110
bluez=""
111
brlapi=""
112
curl=""
113
curses=""
114
docs=""
115
fdt=""
116
kvm=""
117
kvm_para=""
118
nptl=""
119
sdl=""
120
vnc="yes"
121
sparse="no"
122
uuid=""
123
vde=""
124
vnc_tls=""
125
vnc_sasl=""
126
vnc_jpeg=""
127
vnc_png=""
128
vnc_thread="no"
129
xen=""
130
linux_aio=""
131
attr=""
132
vhost_net=""
133
xfs=""
134

    
135
gprof="no"
136
debug_tcg="no"
137
debug_mon="no"
138
debug="no"
139
strip_opt="yes"
140
bigendian="no"
141
mingw32="no"
142
EXESUF=""
143
prefix="/usr/local"
144
mandir="\${prefix}/share/man"
145
datadir="\${prefix}/share/qemu"
146
docdir="\${prefix}/share/doc/qemu"
147
bindir="\${prefix}/bin"
148
sysconfdir="\${prefix}/etc"
149
confsuffix="/qemu"
150
slirp="yes"
151
fmod_lib=""
152
fmod_inc=""
153
oss_lib=""
154
bsd="no"
155
linux="no"
156
solaris="no"
157
profiler="no"
158
cocoa="no"
159
softmmu="yes"
160
linux_user="no"
161
darwin_user="no"
162
bsd_user="no"
163
guest_base=""
164
uname_release=""
165
io_thread="no"
166
mixemu="no"
167
kerneldir=""
168
aix="no"
169
blobs="yes"
170
pkgversion=""
171
check_utests="no"
172
user_pie="no"
173
zero_malloc=""
174
trace_backend="nop"
175
trace_file="trace"
176
spice=""
177
rbd=""
178
smartcard=""
179

    
180
# parse CC options first
181
for opt do
182
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
183
  case "$opt" in
184
  --cross-prefix=*) cross_prefix="$optarg"
185
  ;;
186
  --cc=*) CC="$optarg"
187
  ;;
188
  --source-path=*) source_path="$optarg"
189
  ;;
190
  --cpu=*) cpu="$optarg"
191
  ;;
192
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
193
  ;;
194
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
195
  ;;
196
  --sparc_cpu=*)
197
    sparc_cpu="$optarg"
198
    case $sparc_cpu in
199
    v7|v8|v8plus|v8plusa)
200
      cpu="sparc"
201
    ;;
202
    v9)
203
      cpu="sparc64"
204
    ;;
205
    *)
206
      echo "undefined SPARC architecture. Exiting";
207
      exit 1
208
    ;;
209
    esac
210
  ;;
211
  esac
212
done
213
# OS specific
214
# Using uname is really, really broken.  Once we have the right set of checks
215
# we can eliminate it's usage altogether
216

    
217
cc="${cross_prefix}${CC-gcc}"
218
ar="${cross_prefix}${AR-ar}"
219
objcopy="${cross_prefix}${OBJCOPY-objcopy}"
220
ld="${cross_prefix}${LD-ld}"
221
strip="${cross_prefix}${STRIP-strip}"
222
windres="${cross_prefix}${WINDRES-windres}"
223
pkg_config="${cross_prefix}${PKG_CONFIG-pkg-config}"
224
sdl_config="${cross_prefix}${SDL_CONFIG-sdl-config}"
225

    
226
# default flags for all hosts
227
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
228
CFLAGS="-g $CFLAGS"
229
QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
230
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
231
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
232
QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
233
QEMU_INCLUDES="-I. -I\$(SRC_PATH)"
234
LDFLAGS="-g $LDFLAGS"
235

    
236
# make source path absolute
237
source_path=`cd "$source_path"; pwd`
238

    
239
check_define() {
240
cat > $TMPC <<EOF
241
#if !defined($1)
242
#error Not defined
243
#endif
244
int main(void) { return 0; }
245
EOF
246
  compile_object
247
}
248

    
249
if test ! -z "$cpu" ; then
250
  # command line argument
251
  :
252
elif check_define __i386__ ; then
253
  cpu="i386"
254
elif check_define __x86_64__ ; then
255
  cpu="x86_64"
256
elif check_define __sparc__ ; then
257
  # We can't check for 64 bit (when gcc is biarch) or V8PLUSA
258
  # They must be specified using --sparc_cpu
259
  if check_define __arch64__ ; then
260
    cpu="sparc64"
261
  else
262
    cpu="sparc"
263
  fi
264
elif check_define _ARCH_PPC ; then
265
  if check_define _ARCH_PPC64 ; then
266
    cpu="ppc64"
267
  else
268
    cpu="ppc"
269
  fi
270
elif check_define __mips__ ; then
271
  cpu="mips"
272
elif check_define __ia64__ ; then
273
  cpu="ia64"
274
elif check_define __s390__ ; then
275
  if check_define __s390x__ ; then
276
    cpu="s390x"
277
  else
278
    cpu="s390"
279
  fi
280
else
281
  cpu=`uname -m`
282
fi
283

    
284
case "$cpu" in
285
  alpha|cris|ia64|lm32|m68k|microblaze|ppc|ppc64|sparc64)
286
    cpu="$cpu"
287
  ;;
288
  i386|i486|i586|i686|i86pc|BePC)
289
    cpu="i386"
290
  ;;
291
  x86_64|amd64)
292
    cpu="x86_64"
293
  ;;
294
  armv*b)
295
    cpu="armv4b"
296
  ;;
297
  armv*l)
298
    cpu="armv4l"
299
  ;;
300
  parisc|parisc64)
301
    cpu="hppa"
302
  ;;
303
  mips*)
304
    cpu="mips"
305
  ;;
306
  s390)
307
    cpu="s390"
308
  ;;
309
  s390x)
310
    cpu="s390x"
311
  ;;
312
  sparc|sun4[cdmuv])
313
    cpu="sparc"
314
  ;;
315
  *)
316
    echo "Unsupported CPU = $cpu"
317
    exit 1
318
  ;;
319
esac
320

    
321
# OS specific
322
if check_define __linux__ ; then
323
  targetos="Linux"
324
elif check_define _WIN32 ; then
325
  targetos='MINGW32'
326
elif check_define __OpenBSD__ ; then
327
  targetos='OpenBSD'
328
elif check_define __sun__ ; then
329
  targetos='SunOS'
330
elif check_define __HAIKU__ ; then
331
  targetos='Haiku'
332
else
333
  targetos=`uname -s`
334
fi
335

    
336
case $targetos in
337
CYGWIN*)
338
  mingw32="yes"
339
  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
340
  audio_possible_drivers="winwave sdl"
341
  audio_drv_list="winwave"
342
;;
343
MINGW32*)
344
  mingw32="yes"
345
  audio_possible_drivers="winwave dsound sdl fmod"
346
  audio_drv_list="winwave"
347
;;
348
GNU/kFreeBSD)
349
  bsd="yes"
350
  audio_drv_list="oss"
351
  audio_possible_drivers="oss sdl esd pa"
352
;;
353
FreeBSD)
354
  bsd="yes"
355
  make="${MAKE-gmake}"
356
  audio_drv_list="oss"
357
  audio_possible_drivers="oss sdl esd pa"
358
  # needed for kinfo_getvmmap(3) in libutil.h
359
  LIBS="-lutil $LIBS"
360
;;
361
DragonFly)
362
  bsd="yes"
363
  make="${MAKE-gmake}"
364
  audio_drv_list="oss"
365
  audio_possible_drivers="oss sdl esd pa"
366
;;
367
NetBSD)
368
  bsd="yes"
369
  make="${MAKE-gmake}"
370
  audio_drv_list="oss"
371
  audio_possible_drivers="oss sdl esd"
372
  oss_lib="-lossaudio"
373
;;
374
OpenBSD)
375
  bsd="yes"
376
  make="${MAKE-gmake}"
377
  audio_drv_list="oss"
378
  audio_possible_drivers="oss sdl esd"
379
  oss_lib="-lossaudio"
380
;;
381
Darwin)
382
  bsd="yes"
383
  darwin="yes"
384
  # on Leopard most of the system is 32-bit, so we have to ask the kernel it if we can
385
  # run 64-bit userspace code
386
  if [ "$cpu" = "i386" ] ; then
387
    is_x86_64=`sysctl -n hw.optional.x86_64`
388
    [ "$is_x86_64" = "1" ] && cpu=x86_64
389
  fi
390
  if [ "$cpu" = "x86_64" ] ; then
391
    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
392
    LDFLAGS="-arch x86_64 $LDFLAGS"
393
  else
394
    QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
395
  fi
396
  darwin_user="yes"
397
  cocoa="yes"
398
  audio_drv_list="coreaudio"
399
  audio_possible_drivers="coreaudio sdl fmod"
400
  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
401
  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
402
;;
403
SunOS)
404
  solaris="yes"
405
  make="${MAKE-gmake}"
406
  install="${INSTALL-ginstall}"
407
  ld="gld"
408
  needs_libsunmath="no"
409
  solarisrev=`uname -r | cut -f2 -d.`
410
  # have to select again, because `uname -m` returns i86pc
411
  # even on an x86_64 box.
412
  solariscpu=`isainfo -k`
413
  if test "${solariscpu}" = "amd64" ; then
414
    cpu="x86_64"
415
  fi
416
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
417
    if test "$solarisrev" -le 9 ; then
418
      if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
419
        needs_libsunmath="yes"
420
        QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
421
        LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
422
        LIBS="-lsunmath $LIBS"
423
      else
424
        echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
425
        echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
426
        echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
427
        echo "Studio 11 can be downloaded from www.sun.com."
428
        exit 1
429
      fi
430
    fi
431
  fi
432
  if test -f /usr/include/sys/soundcard.h ; then
433
    audio_drv_list="oss"
434
  fi
435
  audio_possible_drivers="oss sdl"
436
# needed for CMSG_ macros in sys/socket.h
437
  QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
438
# needed for TIOCWIN* defines in termios.h
439
  QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
440
  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
441
  LIBS="-lsocket -lnsl -lresolv $LIBS"
442
;;
443
AIX)
444
  aix="yes"
445
  make="${MAKE-gmake}"
446
;;
447
Haiku)
448
  haiku="yes"
449
  QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
450
  LIBS="-lposix_error_mapper -lnetwork $LIBS"
451
;;
452
*)
453
  audio_drv_list="oss"
454
  audio_possible_drivers="oss alsa sdl esd pa"
455
  linux="yes"
456
  linux_user="yes"
457
  usb="linux"
458
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
459
    audio_possible_drivers="$audio_possible_drivers fmod"
460
  fi
461
;;
462
esac
463

    
464
if [ "$bsd" = "yes" ] ; then
465
  if [ "$darwin" != "yes" ] ; then
466
    usb="bsd"
467
  fi
468
  bsd_user="yes"
469
fi
470

    
471
: ${make=${MAKE-make}}
472
: ${install=${INSTALL-install}}
473

    
474
if test "$mingw32" = "yes" ; then
475
  EXESUF=".exe"
476
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
477
  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
478
  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
479
  LIBS="-lwinmm -lws2_32 -liberty -liphlpapi $LIBS"
480
  prefix="c:/Program Files/Qemu"
481
  mandir="\${prefix}"
482
  datadir="\${prefix}"
483
  docdir="\${prefix}"
484
  bindir="\${prefix}"
485
  sysconfdir="\${prefix}"
486
  confsuffix=""
487
fi
488

    
489
werror=""
490

    
491
for opt do
492
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
493
  case "$opt" in
494
  --help|-h) show_help=yes
495
  ;;
496
  --prefix=*) prefix="$optarg"
497
  ;;
498
  --interp-prefix=*) interp_prefix="$optarg"
499
  ;;
500
  --source-path=*)
501
  ;;
502
  --cross-prefix=*)
503
  ;;
504
  --cc=*)
505
  ;;
506
  --host-cc=*) host_cc="$optarg"
507
  ;;
508
  --make=*) make="$optarg"
509
  ;;
510
  --install=*) install="$optarg"
511
  ;;
512
  --extra-cflags=*)
513
  ;;
514
  --extra-ldflags=*)
515
  ;;
516
  --cpu=*)
517
  ;;
518
  --target-list=*) target_list="$optarg"
519
  ;;
520
  --enable-trace-backend=*) trace_backend="$optarg"
521
  ;;
522
  --with-trace-file=*) trace_file="$optarg"
523
  ;;
524
  --enable-gprof) gprof="yes"
525
  ;;
526
  --static)
527
    static="yes"
528
    LDFLAGS="-static $LDFLAGS"
529
  ;;
530
  --mandir=*) mandir="$optarg"
531
  ;;
532
  --bindir=*) bindir="$optarg"
533
  ;;
534
  --datadir=*) datadir="$optarg"
535
  ;;
536
  --docdir=*) docdir="$optarg"
537
  ;;
538
  --sysconfdir=*) sysconfdir="$optarg"
539
  ;;
540
  --disable-sdl) sdl="no"
541
  ;;
542
  --enable-sdl) sdl="yes"
543
  ;;
544
  --disable-vnc) vnc="no"
545
  ;;
546
  --enable-vnc) vnc="yes"
547
  ;;
548
  --fmod-lib=*) fmod_lib="$optarg"
549
  ;;
550
  --fmod-inc=*) fmod_inc="$optarg"
551
  ;;
552
  --oss-lib=*) oss_lib="$optarg"
553
  ;;
554
  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
555
  ;;
556
  --audio-drv-list=*) audio_drv_list="$optarg"
557
  ;;
558
  --block-drv-whitelist=*) block_drv_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
559
  ;;
560
  --enable-debug-tcg) debug_tcg="yes"
561
  ;;
562
  --disable-debug-tcg) debug_tcg="no"
563
  ;;
564
  --enable-debug-mon) debug_mon="yes"
565
  ;;
566
  --disable-debug-mon) debug_mon="no"
567
  ;;
568
  --enable-debug)
569
      # Enable debugging options that aren't excessively noisy
570
      debug_tcg="yes"
571
      debug_mon="yes"
572
      debug="yes"
573
      strip_opt="no"
574
  ;;
575
  --enable-sparse) sparse="yes"
576
  ;;
577
  --disable-sparse) sparse="no"
578
  ;;
579
  --disable-strip) strip_opt="no"
580
  ;;
581
  --disable-vnc-tls) vnc_tls="no"
582
  ;;
583
  --enable-vnc-tls) vnc_tls="yes"
584
  ;;
585
  --disable-vnc-sasl) vnc_sasl="no"
586
  ;;
587
  --enable-vnc-sasl) vnc_sasl="yes"
588
  ;;
589
  --disable-vnc-jpeg) vnc_jpeg="no"
590
  ;;
591
  --enable-vnc-jpeg) vnc_jpeg="yes"
592
  ;;
593
  --disable-vnc-png) vnc_png="no"
594
  ;;
595
  --enable-vnc-png) vnc_png="yes"
596
  ;;
597
  --disable-vnc-thread) vnc_thread="no"
598
  ;;
599
  --enable-vnc-thread) vnc_thread="yes"
600
  ;;
601
  --disable-slirp) slirp="no"
602
  ;;
603
  --disable-uuid) uuid="no"
604
  ;;
605
  --enable-uuid) uuid="yes"
606
  ;;
607
  --disable-vde) vde="no"
608
  ;;
609
  --enable-vde) vde="yes"
610
  ;;
611
  --disable-xen) xen="no"
612
  ;;
613
  --enable-xen) xen="yes"
614
  ;;
615
  --disable-brlapi) brlapi="no"
616
  ;;
617
  --enable-brlapi) brlapi="yes"
618
  ;;
619
  --disable-bluez) bluez="no"
620
  ;;
621
  --enable-bluez) bluez="yes"
622
  ;;
623
  --disable-kvm) kvm="no"
624
  ;;
625
  --enable-kvm) kvm="yes"
626
  ;;
627
  --disable-spice) spice="no"
628
  ;;
629
  --enable-spice) spice="yes"
630
  ;;
631
  --enable-profiler) profiler="yes"
632
  ;;
633
  --enable-cocoa)
634
      cocoa="yes" ;
635
      sdl="no" ;
636
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
637
  ;;
638
  --disable-system) softmmu="no"
639
  ;;
640
  --enable-system) softmmu="yes"
641
  ;;
642
  --disable-user)
643
      linux_user="no" ;
644
      bsd_user="no" ;
645
      darwin_user="no"
646
  ;;
647
  --enable-user) ;;
648
  --disable-linux-user) linux_user="no"
649
  ;;
650
  --enable-linux-user) linux_user="yes"
651
  ;;
652
  --disable-darwin-user) darwin_user="no"
653
  ;;
654
  --enable-darwin-user) darwin_user="yes"
655
  ;;
656
  --disable-bsd-user) bsd_user="no"
657
  ;;
658
  --enable-bsd-user) bsd_user="yes"
659
  ;;
660
  --enable-guest-base) guest_base="yes"
661
  ;;
662
  --disable-guest-base) guest_base="no"
663
  ;;
664
  --enable-user-pie) user_pie="yes"
665
  ;;
666
  --disable-user-pie) user_pie="no"
667
  ;;
668
  --enable-uname-release=*) uname_release="$optarg"
669
  ;;
670
  --sparc_cpu=*)
671
  ;;
672
  --enable-werror) werror="yes"
673
  ;;
674
  --disable-werror) werror="no"
675
  ;;
676
  --disable-curses) curses="no"
677
  ;;
678
  --enable-curses) curses="yes"
679
  ;;
680
  --disable-curl) curl="no"
681
  ;;
682
  --enable-curl) curl="yes"
683
  ;;
684
  --disable-fdt) fdt="no"
685
  ;;
686
  --enable-fdt) fdt="yes"
687
  ;;
688
  --disable-check-utests) check_utests="no"
689
  ;;
690
  --enable-check-utests) check_utests="yes"
691
  ;;
692
  --disable-nptl) nptl="no"
693
  ;;
694
  --enable-nptl) nptl="yes"
695
  ;;
696
  --enable-mixemu) mixemu="yes"
697
  ;;
698
  --disable-linux-aio) linux_aio="no"
699
  ;;
700
  --enable-linux-aio) linux_aio="yes"
701
  ;;
702
  --disable-attr) attr="no"
703
  ;;
704
  --enable-attr) attr="yes"
705
  ;;
706
  --enable-io-thread) io_thread="yes"
707
  ;;
708
  --disable-blobs) blobs="no"
709
  ;;
710
  --kerneldir=*) kerneldir="$optarg"
711
  ;;
712
  --with-pkgversion=*) pkgversion=" ($optarg)"
713
  ;;
714
  --disable-docs) docs="no"
715
  ;;
716
  --enable-docs) docs="yes"
717
  ;;
718
  --disable-vhost-net) vhost_net="no"
719
  ;;
720
  --enable-vhost-net) vhost_net="yes"
721
  ;;
722
  --*dir)
723
  ;;
724
  --disable-rbd) rbd="no"
725
  ;;
726
  --enable-rbd) rbd="yes"
727
  ;;
728
  --disable-smartcard) smartcard="no"
729
  ;;
730
  --enable-smartcard) smartcard="yes"
731
  ;;
732
  *) echo "ERROR: unknown option $opt"; show_help="yes"
733
  ;;
734
  esac
735
done
736

    
737
#
738
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
739
# QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
740
#
741
host_guest_base="no"
742
case "$cpu" in
743
    sparc) case $sparc_cpu in
744
           v7|v8)
745
             QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
746
           ;;
747
           v8plus|v8plusa)
748
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
749
           ;;
750
           *) # sparc_cpu not defined in the command line
751
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
752
           esac
753
           LDFLAGS="-m32 $LDFLAGS"
754
           QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
755
           if test "$solaris" = "no" ; then
756
             QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
757
             helper_cflags="-ffixed-i0"
758
           fi
759
           ;;
760
    sparc64)
761
           QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
762
           LDFLAGS="-m64 $LDFLAGS"
763
           QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
764
           if test "$solaris" != "no" ; then
765
             QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
766
           fi
767
           ;;
768
    s390)
769
           QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
770
           LDFLAGS="-m31 $LDFLAGS"
771
           host_guest_base="yes"
772
           ;;
773
    s390x)
774
           QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
775
           LDFLAGS="-m64 $LDFLAGS"
776
           host_guest_base="yes"
777
           ;;
778
    i386)
779
           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
780
           LDFLAGS="-m32 $LDFLAGS"
781
           cc_i386='$(CC) -m32'
782
           helper_cflags="-fomit-frame-pointer"
783
           host_guest_base="yes"
784
           ;;
785
    x86_64)
786
           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
787
           LDFLAGS="-m64 $LDFLAGS"
788
           cc_i386='$(CC) -m32'
789
           host_guest_base="yes"
790
           ;;
791
    arm*)
792
           host_guest_base="yes"
793
           ;;
794
    ppc*)
795
           host_guest_base="yes"
796
           ;;
797
    mips*)
798
           host_guest_base="yes"
799
           ;;
800
    ia64*)
801
           host_guest_base="yes"
802
           ;;
803
    hppa*)
804
           host_guest_base="yes"
805
           ;;
806
esac
807

    
808
[ -z "$guest_base" ] && guest_base="$host_guest_base"
809

    
810
if test x"$show_help" = x"yes" ; then
811
cat << EOF
812

    
813
Usage: configure [options]
814
Options: [defaults in brackets after descriptions]
815

    
816
EOF
817
echo "Standard options:"
818
echo "  --help                   print this message"
819
echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
820
echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
821
echo "                           use %M for cpu name [$interp_prefix]"
822
echo "  --target-list=LIST       set target list [$target_list]"
823
echo ""
824
echo "Advanced options (experts only):"
825
echo "  --source-path=PATH       path of source code [$source_path]"
826
echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
827
echo "  --cc=CC                  use C compiler CC [$cc]"
828
echo "  --host-cc=CC             use C compiler CC [$host_cc] for code run at"
829
echo "                           build time"
830
echo "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
831
echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
832
echo "  --make=MAKE              use specified make [$make]"
833
echo "  --install=INSTALL        use specified install [$install]"
834
echo "  --static                 enable static build [$static]"
835
echo "  --mandir=PATH            install man pages in PATH"
836
echo "  --datadir=PATH           install firmware in PATH"
837
echo "  --docdir=PATH            install documentation in PATH"
838
echo "  --bindir=PATH            install binaries in PATH"
839
echo "  --sysconfdir=PATH        install config in PATH/qemu"
840
echo "  --enable-debug-tcg       enable TCG debugging"
841
echo "  --disable-debug-tcg      disable TCG debugging (default)"
842
echo "  --enable-debug           enable common debug build options"
843
echo "  --enable-sparse          enable sparse checker"
844
echo "  --disable-sparse         disable sparse checker (default)"
845
echo "  --disable-strip          disable stripping binaries"
846
echo "  --disable-werror         disable compilation abort on warning"
847
echo "  --disable-sdl            disable SDL"
848
echo "  --enable-sdl             enable SDL"
849
echo "  --disable-vnc            disable VNC"
850
echo "  --enable-vnc             enable VNC"
851
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
852
echo "  --audio-drv-list=LIST    set audio drivers list:"
853
echo "                           Available drivers: $audio_possible_drivers"
854
echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
855
echo "                           Available cards: $audio_possible_cards"
856
echo "  --block-drv-whitelist=L  set block driver whitelist"
857
echo "                           (affects only QEMU, not qemu-img)"
858
echo "  --enable-mixemu          enable mixer emulation"
859
echo "  --disable-xen            disable xen backend driver support"
860
echo "  --enable-xen             enable xen backend driver support"
861
echo "  --disable-brlapi         disable BrlAPI"
862
echo "  --enable-brlapi          enable BrlAPI"
863
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
864
echo "  --enable-vnc-tls         enable TLS encryption for VNC server"
865
echo "  --disable-vnc-sasl       disable SASL encryption for VNC server"
866
echo "  --enable-vnc-sasl        enable SASL encryption for VNC server"
867
echo "  --disable-vnc-jpeg       disable JPEG lossy compression for VNC server"
868
echo "  --enable-vnc-jpeg        enable JPEG lossy compression for VNC server"
869
echo "  --disable-vnc-png        disable PNG compression for VNC server (default)"
870
echo "  --enable-vnc-png         enable PNG compression for VNC server"
871
echo "  --disable-vnc-thread     disable threaded VNC server"
872
echo "  --enable-vnc-thread      enable threaded VNC server"
873
echo "  --disable-curses         disable curses output"
874
echo "  --enable-curses          enable curses output"
875
echo "  --disable-curl           disable curl connectivity"
876
echo "  --enable-curl            enable curl connectivity"
877
echo "  --disable-fdt            disable fdt device tree"
878
echo "  --enable-fdt             enable fdt device tree"
879
echo "  --disable-check-utests   disable check unit-tests"
880
echo "  --enable-check-utests    enable check unit-tests"
881
echo "  --disable-bluez          disable bluez stack connectivity"
882
echo "  --enable-bluez           enable bluez stack connectivity"
883
echo "  --disable-kvm            disable KVM acceleration support"
884
echo "  --enable-kvm             enable KVM acceleration support"
885
echo "  --disable-nptl           disable usermode NPTL support"
886
echo "  --enable-nptl            enable usermode NPTL support"
887
echo "  --enable-system          enable all system emulation targets"
888
echo "  --disable-system         disable all system emulation targets"
889
echo "  --enable-user            enable supported user emulation targets"
890
echo "  --disable-user           disable all user emulation targets"
891
echo "  --enable-linux-user      enable all linux usermode emulation targets"
892
echo "  --disable-linux-user     disable all linux usermode emulation targets"
893
echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
894
echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
895
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
896
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
897
echo "  --enable-guest-base      enable GUEST_BASE support for usermode"
898
echo "                           emulation targets"
899
echo "  --disable-guest-base     disable GUEST_BASE support"
900
echo "  --enable-user-pie        build usermode emulation targets as PIE"
901
echo "  --disable-user-pie       do not build usermode emulation targets as PIE"
902
echo "  --fmod-lib               path to FMOD library"
903
echo "  --fmod-inc               path to FMOD includes"
904
echo "  --oss-lib                path to OSS library"
905
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
906
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
907
echo "  --disable-uuid           disable uuid support"
908
echo "  --enable-uuid            enable uuid support"
909
echo "  --disable-vde            disable support for vde network"
910
echo "  --enable-vde             enable support for vde network"
911
echo "  --disable-linux-aio      disable Linux AIO support"
912
echo "  --enable-linux-aio       enable Linux AIO support"
913
echo "  --disable-attr           disables attr and xattr support"
914
echo "  --enable-attr            enable attr and xattr support"
915
echo "  --enable-io-thread       enable IO thread"
916
echo "  --disable-blobs          disable installing provided firmware blobs"
917
echo "  --kerneldir=PATH         look for kernel includes in PATH"
918
echo "  --enable-docs            enable documentation build"
919
echo "  --disable-docs           disable documentation build"
920
echo "  --disable-vhost-net      disable vhost-net acceleration support"
921
echo "  --enable-vhost-net       enable vhost-net acceleration support"
922
echo "  --enable-trace-backend=B Set trace backend"
923
echo "                           Available backends:" $("$source_path"/scripts/tracetool --list-backends)
924
echo "  --with-trace-file=NAME   Full PATH,NAME of file to store traces"
925
echo "                           Default:trace-<pid>"
926
echo "  --disable-spice          disable spice"
927
echo "  --enable-spice           enable spice"
928
echo "  --enable-rbd             enable building the rados block device (rbd)"
929
echo "  --disable-smartcard      disable smartcard support"
930
echo "  --enable-smartcard       enable smartcard support"
931
echo ""
932
echo "NOTE: The object files are built at the place where configure is launched"
933
exit 1
934
fi
935

    
936
# check that the C compiler works.
937
cat > $TMPC <<EOF
938
int main(void) {}
939
EOF
940

    
941
if compile_object ; then
942
  : C compiler works ok
943
else
944
    echo "ERROR: \"$cc\" either does not exist or does not work"
945
    exit 1
946
fi
947

    
948
gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
949
gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
950
gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
951
gcc_flags="-fstack-protector-all $gcc_flags"
952
cat > $TMPC << EOF
953
int main(void) { return 0; }
954
EOF
955
for flag in $gcc_flags; do
956
    if compile_prog "-Werror $QEMU_CFLAGS" "-Werror $flag" ; then
957
	QEMU_CFLAGS="$QEMU_CFLAGS $flag"
958
    fi
959
done
960

    
961
#
962
# Solaris specific configure tool chain decisions
963
#
964
if test "$solaris" = "yes" ; then
965
  if has $install; then
966
    :
967
  else
968
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
969
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
970
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
971
    exit 1
972
  fi
973
  if test "`path_of $install`" = "/usr/sbin/install" ; then
974
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
975
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
976
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
977
    exit 1
978
  fi
979
  if has ar; then
980
    :
981
  else
982
    echo "Error: No path includes ar"
983
    if test -f /usr/ccs/bin/ar ; then
984
      echo "Add /usr/ccs/bin to your path and rerun configure"
985
    fi
986
    exit 1
987
  fi
988
fi
989

    
990

    
991
if test -z "$target_list" ; then
992
# these targets are portable
993
    if [ "$softmmu" = "yes" ] ; then
994
        target_list="\
995
i386-softmmu \
996
x86_64-softmmu \
997
arm-softmmu \
998
cris-softmmu \
999
lm32-softmmu \
1000
m68k-softmmu \
1001
microblaze-softmmu \
1002
microblazeel-softmmu \
1003
mips-softmmu \
1004
mipsel-softmmu \
1005
mips64-softmmu \
1006
mips64el-softmmu \
1007
ppc-softmmu \
1008
ppcemb-softmmu \
1009
ppc64-softmmu \
1010
sh4-softmmu \
1011
sh4eb-softmmu \
1012
sparc-softmmu \
1013
sparc64-softmmu \
1014
"
1015
    fi
1016
# the following are Linux specific
1017
    if [ "$linux_user" = "yes" ] ; then
1018
        target_list="${target_list}\
1019
i386-linux-user \
1020
x86_64-linux-user \
1021
alpha-linux-user \
1022
arm-linux-user \
1023
armeb-linux-user \
1024
cris-linux-user \
1025
m68k-linux-user \
1026
microblaze-linux-user \
1027
microblazeel-linux-user \
1028
mips-linux-user \
1029
mipsel-linux-user \
1030
ppc-linux-user \
1031
ppc64-linux-user \
1032
ppc64abi32-linux-user \
1033
sh4-linux-user \
1034
sh4eb-linux-user \
1035
sparc-linux-user \
1036
sparc64-linux-user \
1037
sparc32plus-linux-user \
1038
"
1039
    fi
1040
# the following are Darwin specific
1041
    if [ "$darwin_user" = "yes" ] ; then
1042
        target_list="$target_list i386-darwin-user ppc-darwin-user "
1043
    fi
1044
# the following are BSD specific
1045
    if [ "$bsd_user" = "yes" ] ; then
1046
        target_list="${target_list}\
1047
i386-bsd-user \
1048
x86_64-bsd-user \
1049
sparc-bsd-user \
1050
sparc64-bsd-user \
1051
"
1052
    fi
1053
else
1054
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
1055
fi
1056
if test -z "$target_list" ; then
1057
    echo "No targets enabled"
1058
    exit 1
1059
fi
1060
# see if system emulation was really requested
1061
case " $target_list " in
1062
  *"-softmmu "*) softmmu=yes
1063
  ;;
1064
  *) softmmu=no
1065
  ;;
1066
esac
1067

    
1068
feature_not_found() {
1069
  feature=$1
1070

    
1071
  echo "ERROR"
1072
  echo "ERROR: User requested feature $feature"
1073
  echo "ERROR: configure was not able to find it"
1074
  echo "ERROR"
1075
  exit 1;
1076
}
1077

    
1078
if test -z "$cross_prefix" ; then
1079

    
1080
# ---
1081
# big/little endian test
1082
cat > $TMPC << EOF
1083
#include <inttypes.h>
1084
int main(int argc, char ** argv){
1085
        volatile uint32_t i=0x01234567;
1086
        return (*((uint8_t*)(&i))) == 0x67;
1087
}
1088
EOF
1089

    
1090
if compile_prog "" "" ; then
1091
$TMPE && bigendian="yes"
1092
else
1093
echo big/little test failed
1094
fi
1095

    
1096
else
1097

    
1098
# if cross compiling, cannot launch a program, so make a static guess
1099
case "$cpu" in
1100
  armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
1101
    bigendian=yes
1102
  ;;
1103
esac
1104

    
1105
fi
1106

    
1107
# host long bits test, actually a pointer size test
1108
cat > $TMPC << EOF
1109
int sizeof_pointer_is_8[sizeof(void *) == 8 ? 1 : -1];
1110
EOF
1111
if compile_object; then
1112
hostlongbits=64
1113
else
1114
hostlongbits=32
1115
fi
1116

    
1117

    
1118
##########################################
1119
# NPTL probe
1120

    
1121
if test "$nptl" != "no" ; then
1122
  cat > $TMPC <<EOF
1123
#include <sched.h>
1124
#include <linux/futex.h>
1125
void foo()
1126
{
1127
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1128
#error bork
1129
#endif
1130
}
1131
EOF
1132

    
1133
  if compile_object ; then
1134
    nptl=yes
1135
  else
1136
    if test "$nptl" = "yes" ; then
1137
      feature_not_found "nptl"
1138
    fi
1139
    nptl=no
1140
  fi
1141
fi
1142

    
1143
##########################################
1144
# zlib check
1145

    
1146
cat > $TMPC << EOF
1147
#include <zlib.h>
1148
int main(void) { zlibVersion(); return 0; }
1149
EOF
1150
if compile_prog "" "-lz" ; then
1151
    :
1152
else
1153
    echo
1154
    echo "Error: zlib check failed"
1155
    echo "Make sure to have the zlib libs and headers installed."
1156
    echo
1157
    exit 1
1158
fi
1159

    
1160
##########################################
1161
# xen probe
1162

    
1163
if test "$xen" != "no" ; then
1164
  xen_libs="-lxenstore -lxenctrl -lxenguest"
1165
  cat > $TMPC <<EOF
1166
#include <xenctrl.h>
1167
#include <xs.h>
1168
int main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
1169
EOF
1170
  if compile_prog "" "$xen_libs" ; then
1171
    xen=yes
1172
    libs_softmmu="$xen_libs $libs_softmmu"
1173
  else
1174
    if test "$xen" = "yes" ; then
1175
      feature_not_found "xen"
1176
    fi
1177
    xen=no
1178
  fi
1179
fi
1180

    
1181
##########################################
1182
# pkg-config probe
1183

    
1184
if ! has $pkg_config; then
1185
  echo warning: proceeding without "$pkg_config" >&2
1186
  pkg_config=/bin/false
1187
fi
1188

    
1189
##########################################
1190
# Sparse probe
1191
if test "$sparse" != "no" ; then
1192
  if has cgcc; then
1193
    sparse=yes
1194
  else
1195
    if test "$sparse" = "yes" ; then
1196
      feature_not_found "sparse"
1197
    fi
1198
    sparse=no
1199
  fi
1200
fi
1201

    
1202
##########################################
1203
# SDL probe
1204

    
1205
# Look for sdl configuration program (pkg-config or sdl-config).  Try
1206
# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
1207
if test "`basename $sdl_config`" != sdl-config && ! has ${sdl_config}; then
1208
  sdl_config=sdl-config
1209
fi
1210

    
1211
if $pkg_config sdl --modversion >/dev/null 2>&1; then
1212
  sdlconfig="$pkg_config sdl"
1213
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
1214
elif has ${sdl_config}; then
1215
  sdlconfig="$sdl_config"
1216
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1217
else
1218
  if test "$sdl" = "yes" ; then
1219
    feature_not_found "sdl"
1220
  fi
1221
  sdl=no
1222
fi
1223
if test -n "$cross_prefix" && test "`basename $sdlconfig`" = sdl-config; then
1224
  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
1225
fi
1226

    
1227
sdl_too_old=no
1228
if test "$sdl" != "no" ; then
1229
  cat > $TMPC << EOF
1230
#include <SDL.h>
1231
#undef main /* We don't want SDL to override our main() */
1232
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
1233
EOF
1234
  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
1235
  if test "$static" = "yes" ; then
1236
    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
1237
  else
1238
    sdl_libs=`$sdlconfig --libs 2> /dev/null`
1239
  fi
1240
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1241
    if test "$_sdlversion" -lt 121 ; then
1242
      sdl_too_old=yes
1243
    else
1244
      if test "$cocoa" = "no" ; then
1245
        sdl=yes
1246
      fi
1247
    fi
1248

    
1249
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
1250
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
1251
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1252
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
1253
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
1254
      fi
1255
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1256
	:
1257
      else
1258
        sdl=no
1259
      fi
1260
    fi # static link
1261
  else # sdl not found
1262
    if test "$sdl" = "yes" ; then
1263
      feature_not_found "sdl"
1264
    fi
1265
    sdl=no
1266
  fi # sdl compile test
1267
fi
1268

    
1269
if test "$sdl" = "yes" ; then
1270
  cat > $TMPC <<EOF
1271
#include <SDL.h>
1272
#if defined(SDL_VIDEO_DRIVER_X11)
1273
#include <X11/XKBlib.h>
1274
#else
1275
#error No x11 support
1276
#endif
1277
int main(void) { return 0; }
1278
EOF
1279
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1280
    sdl_libs="$sdl_libs -lX11"
1281
  fi
1282
  if test "$mingw32" = "yes" ; then
1283
    sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
1284
  fi
1285
  libs_softmmu="$sdl_libs $libs_softmmu"
1286
fi
1287

    
1288
##########################################
1289
# VNC TLS detection
1290
if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
1291
  cat > $TMPC <<EOF
1292
#include <gnutls/gnutls.h>
1293
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
1294
EOF
1295
  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
1296
  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
1297
  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
1298
    vnc_tls=yes
1299
    libs_softmmu="$vnc_tls_libs $libs_softmmu"
1300
  else
1301
    if test "$vnc_tls" = "yes" ; then
1302
      feature_not_found "vnc-tls"
1303
    fi
1304
    vnc_tls=no
1305
  fi
1306
fi
1307

    
1308
##########################################
1309
# VNC SASL detection
1310
if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
1311
  cat > $TMPC <<EOF
1312
#include <sasl/sasl.h>
1313
#include <stdio.h>
1314
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
1315
EOF
1316
  # Assuming Cyrus-SASL installed in /usr prefix
1317
  vnc_sasl_cflags=""
1318
  vnc_sasl_libs="-lsasl2"
1319
  if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
1320
    vnc_sasl=yes
1321
    libs_softmmu="$vnc_sasl_libs $libs_softmmu"
1322
  else
1323
    if test "$vnc_sasl" = "yes" ; then
1324
      feature_not_found "vnc-sasl"
1325
    fi
1326
    vnc_sasl=no
1327
  fi
1328
fi
1329

    
1330
##########################################
1331
# VNC JPEG detection
1332
if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
1333
cat > $TMPC <<EOF
1334
#include <stdio.h>
1335
#include <jpeglib.h>
1336
int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
1337
EOF
1338
    vnc_jpeg_cflags=""
1339
    vnc_jpeg_libs="-ljpeg"
1340
  if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
1341
    vnc_jpeg=yes
1342
    libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
1343
  else
1344
    if test "$vnc_jpeg" = "yes" ; then
1345
      feature_not_found "vnc-jpeg"
1346
    fi
1347
    vnc_jpeg=no
1348
  fi
1349
fi
1350

    
1351
##########################################
1352
# VNC PNG detection
1353
if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
1354
cat > $TMPC <<EOF
1355
//#include <stdio.h>
1356
#include <png.h>
1357
#include <stddef.h>
1358
int main(void) {
1359
    png_structp png_ptr;
1360
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
1361
    return 0;
1362
}
1363
EOF
1364
    vnc_png_cflags=""
1365
    vnc_png_libs="-lpng"
1366
  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
1367
    vnc_png=yes
1368
    libs_softmmu="$vnc_png_libs $libs_softmmu"
1369
  else
1370
    if test "$vnc_png" = "yes" ; then
1371
      feature_not_found "vnc-png"
1372
    fi
1373
    vnc_png=no
1374
  fi
1375
fi
1376

    
1377
##########################################
1378
# fnmatch() probe, used for ACL routines
1379
fnmatch="no"
1380
cat > $TMPC << EOF
1381
#include <fnmatch.h>
1382
int main(void)
1383
{
1384
    fnmatch("foo", "foo", 0);
1385
    return 0;
1386
}
1387
EOF
1388
if compile_prog "" "" ; then
1389
   fnmatch="yes"
1390
fi
1391

    
1392
##########################################
1393
# uuid_generate() probe, used for vdi block driver
1394
if test "$uuid" != "no" ; then
1395
  uuid_libs="-luuid"
1396
  cat > $TMPC << EOF
1397
#include <uuid/uuid.h>
1398
int main(void)
1399
{
1400
    uuid_t my_uuid;
1401
    uuid_generate(my_uuid);
1402
    return 0;
1403
}
1404
EOF
1405
  if compile_prog "" "$uuid_libs" ; then
1406
    uuid="yes"
1407
    libs_softmmu="$uuid_libs $libs_softmmu"
1408
    libs_tools="$uuid_libs $libs_tools"
1409
  else
1410
    if test "$uuid" = "yes" ; then
1411
      feature_not_found "uuid"
1412
    fi
1413
    uuid=no
1414
  fi
1415
fi
1416

    
1417
##########################################
1418
# xfsctl() probe, used for raw-posix
1419
if test "$xfs" != "no" ; then
1420
  cat > $TMPC << EOF
1421
#include <xfs/xfs.h>
1422
int main(void)
1423
{
1424
    xfsctl(NULL, 0, 0, NULL);
1425
    return 0;
1426
}
1427
EOF
1428
  if compile_prog "" "" ; then
1429
    xfs="yes"
1430
  else
1431
    if test "$xfs" = "yes" ; then
1432
      feature_not_found "xfs"
1433
    fi
1434
    xfs=no
1435
  fi
1436
fi
1437

    
1438
##########################################
1439
# vde libraries probe
1440
if test "$vde" != "no" ; then
1441
  vde_libs="-lvdeplug"
1442
  cat > $TMPC << EOF
1443
#include <libvdeplug.h>
1444
int main(void)
1445
{
1446
    struct vde_open_args a = {0, 0, 0};
1447
    vde_open("", "", &a);
1448
    return 0;
1449
}
1450
EOF
1451
  if compile_prog "" "$vde_libs" ; then
1452
    vde=yes
1453
    libs_softmmu="$vde_libs $libs_softmmu"
1454
    libs_tools="$vde_libs $libs_tools"
1455
  else
1456
    if test "$vde" = "yes" ; then
1457
      feature_not_found "vde"
1458
    fi
1459
    vde=no
1460
  fi
1461
fi
1462

    
1463
##########################################
1464
# Sound support libraries probe
1465

    
1466
audio_drv_probe()
1467
{
1468
    drv=$1
1469
    hdr=$2
1470
    lib=$3
1471
    exp=$4
1472
    cfl=$5
1473
        cat > $TMPC << EOF
1474
#include <$hdr>
1475
int main(void) { $exp }
1476
EOF
1477
    if compile_prog "$cfl" "$lib" ; then
1478
        :
1479
    else
1480
        echo
1481
        echo "Error: $drv check failed"
1482
        echo "Make sure to have the $drv libs and headers installed."
1483
        echo
1484
        exit 1
1485
    fi
1486
}
1487

    
1488
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1489
for drv in $audio_drv_list; do
1490
    case $drv in
1491
    alsa)
1492
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
1493
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
1494
    libs_softmmu="-lasound $libs_softmmu"
1495
    ;;
1496

    
1497
    fmod)
1498
    if test -z $fmod_lib || test -z $fmod_inc; then
1499
        echo
1500
        echo "Error: You must specify path to FMOD library and headers"
1501
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
1502
        echo
1503
        exit 1
1504
    fi
1505
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
1506
    libs_softmmu="$fmod_lib $libs_softmmu"
1507
    ;;
1508

    
1509
    esd)
1510
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1511
    libs_softmmu="-lesd $libs_softmmu"
1512
    audio_pt_int="yes"
1513
    ;;
1514

    
1515
    pa)
1516
    audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \
1517
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1518
    libs_softmmu="-lpulse -lpulse-simple $libs_softmmu"
1519
    audio_pt_int="yes"
1520
    ;;
1521

    
1522
    coreaudio)
1523
      libs_softmmu="-framework CoreAudio $libs_softmmu"
1524
    ;;
1525

    
1526
    dsound)
1527
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1528
      audio_win_int="yes"
1529
    ;;
1530

    
1531
    oss)
1532
      libs_softmmu="$oss_lib $libs_softmmu"
1533
    ;;
1534

    
1535
    sdl|wav)
1536
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
1537
    ;;
1538

    
1539
    winwave)
1540
      libs_softmmu="-lwinmm $libs_softmmu"
1541
      audio_win_int="yes"
1542
    ;;
1543

    
1544
    *)
1545
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
1546
        echo
1547
        echo "Error: Unknown driver '$drv' selected"
1548
        echo "Possible drivers are: $audio_possible_drivers"
1549
        echo
1550
        exit 1
1551
    }
1552
    ;;
1553
    esac
1554
done
1555

    
1556
##########################################
1557
# BrlAPI probe
1558

    
1559
if test "$brlapi" != "no" ; then
1560
  brlapi_libs="-lbrlapi"
1561
  cat > $TMPC << EOF
1562
#include <brlapi.h>
1563
#include <stddef.h>
1564
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
1565
EOF
1566
  if compile_prog "" "$brlapi_libs" ; then
1567
    brlapi=yes
1568
    libs_softmmu="$brlapi_libs $libs_softmmu"
1569
  else
1570
    if test "$brlapi" = "yes" ; then
1571
      feature_not_found "brlapi"
1572
    fi
1573
    brlapi=no
1574
  fi
1575
fi
1576

    
1577
##########################################
1578
# curses probe
1579
if test "$mingw32" = "yes" ; then
1580
    curses_list="-lpdcurses"
1581
else
1582
    curses_list="-lncurses -lcurses"
1583
fi
1584

    
1585
if test "$curses" != "no" ; then
1586
  curses_found=no
1587
  cat > $TMPC << EOF
1588
#include <curses.h>
1589
#ifdef __OpenBSD__
1590
#define resize_term resizeterm
1591
#endif
1592
int main(void) { resize_term(0, 0); return curses_version(); }
1593
EOF
1594
  for curses_lib in $curses_list; do
1595
    if compile_prog "" "$curses_lib" ; then
1596
      curses_found=yes
1597
      libs_softmmu="$curses_lib $libs_softmmu"
1598
      break
1599
    fi
1600
  done
1601
  if test "$curses_found" = "yes" ; then
1602
    curses=yes
1603
  else
1604
    if test "$curses" = "yes" ; then
1605
      feature_not_found "curses"
1606
    fi
1607
    curses=no
1608
  fi
1609
fi
1610

    
1611
##########################################
1612
# curl probe
1613

    
1614
if $pkg_config libcurl --modversion >/dev/null 2>&1; then
1615
  curlconfig="$pkg_config libcurl"
1616
else
1617
  curlconfig=curl-config
1618
fi
1619

    
1620
if test "$curl" != "no" ; then
1621
  cat > $TMPC << EOF
1622
#include <curl/curl.h>
1623
int main(void) { return curl_easy_init(); }
1624
EOF
1625
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
1626
  curl_libs=`$curlconfig --libs 2>/dev/null`
1627
  if compile_prog "$curl_cflags" "$curl_libs" ; then
1628
    curl=yes
1629
    libs_tools="$curl_libs $libs_tools"
1630
    libs_softmmu="$curl_libs $libs_softmmu"
1631
  else
1632
    if test "$curl" = "yes" ; then
1633
      feature_not_found "curl"
1634
    fi
1635
    curl=no
1636
  fi
1637
fi # test "$curl"
1638

    
1639
##########################################
1640
# check framework probe
1641

    
1642
if test "$check_utests" != "no" ; then
1643
  cat > $TMPC << EOF
1644
#include <check.h>
1645
int main(void) { suite_create("qemu test"); return 0; }
1646
EOF
1647
  check_libs=`$pkg_config --libs check`
1648
  if compile_prog "" $check_libs ; then
1649
    check_utests=yes
1650
    libs_tools="$check_libs $libs_tools"
1651
  else
1652
    if test "$check_utests" = "yes" ; then
1653
      feature_not_found "check"
1654
    fi
1655
    check_utests=no
1656
  fi
1657
fi # test "$check_utests"
1658

    
1659
##########################################
1660
# bluez support probe
1661
if test "$bluez" != "no" ; then
1662
  cat > $TMPC << EOF
1663
#include <bluetooth/bluetooth.h>
1664
int main(void) { return bt_error(0); }
1665
EOF
1666
  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
1667
  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
1668
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1669
    bluez=yes
1670
    libs_softmmu="$bluez_libs $libs_softmmu"
1671
  else
1672
    if test "$bluez" = "yes" ; then
1673
      feature_not_found "bluez"
1674
    fi
1675
    bluez="no"
1676
  fi
1677
fi
1678

    
1679
##########################################
1680
# kvm probe
1681
if test "$kvm" != "no" ; then
1682
    cat > $TMPC <<EOF
1683
#include <linux/kvm.h>
1684
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
1685
#error Invalid KVM version
1686
#endif
1687
EOF
1688
    must_have_caps="KVM_CAP_USER_MEMORY \
1689
                    KVM_CAP_DESTROY_MEMORY_REGION_WORKS \
1690
                    KVM_CAP_COALESCED_MMIO \
1691
                    KVM_CAP_SYNC_MMU \
1692
                   "
1693
    if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) ; then
1694
      must_have_caps="$caps \
1695
                      KVM_CAP_SET_TSS_ADDR \
1696
                      KVM_CAP_EXT_CPUID \
1697
                      KVM_CAP_CLOCKSOURCE \
1698
                      KVM_CAP_NOP_IO_DELAY \
1699
                      KVM_CAP_PV_MMU \
1700
                      KVM_CAP_MP_STATE \
1701
                      KVM_CAP_USER_NMI \
1702
                     "
1703
    fi
1704
    for c in $must_have_caps ; do
1705
      cat >> $TMPC <<EOF
1706
#if !defined($c)
1707
#error Missing KVM capability $c
1708
#endif
1709
EOF
1710
    done
1711
    cat >> $TMPC <<EOF
1712
int main(void) { return 0; }
1713
EOF
1714
  if test "$kerneldir" != "" ; then
1715
      kvm_cflags=-I"$kerneldir"/include
1716
      if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
1717
         -a -d "$kerneldir/arch/x86/include" ; then
1718
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
1719
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
1720
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
1721
	elif test "$cpu" = "s390x" -a -d "$kerneldir/arch/s390/include" ; then
1722
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/s390/include"
1723
        elif test -d "$kerneldir/arch/$cpu/include" ; then
1724
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
1725
      fi
1726
  else
1727
    kvm_cflags=`$pkg_config --cflags kvm-kmod 2>/dev/null`
1728
  fi
1729
  if compile_prog "$kvm_cflags" "" ; then
1730
    kvm=yes
1731
    cat > $TMPC <<EOF
1732
#include <linux/kvm_para.h>
1733
int main(void) { return 0; }
1734
EOF
1735
    if compile_prog "$kvm_cflags" "" ; then
1736
      kvm_para=yes
1737
    fi
1738
  else
1739
    if test "$kvm" = "yes" ; then
1740
      if has awk && has grep; then
1741
        kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \
1742
	| grep "error: " \
1743
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
1744
        if test "$kvmerr" != "" ; then
1745
          echo -e "${kvmerr}\n\
1746
NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
1747
recent kvm-kmod from http://sourceforge.net/projects/kvm."
1748
        fi
1749
      fi
1750
      feature_not_found "kvm"
1751
    fi
1752
    kvm=no
1753
  fi
1754
fi
1755

    
1756
##########################################
1757
# test for vhost net
1758

    
1759
if test "$vhost_net" != "no"; then
1760
    if test "$kvm" != "no"; then
1761
            cat > $TMPC <<EOF
1762
    #include <linux/vhost.h>
1763
    int main(void) { return 0; }
1764
EOF
1765
            if compile_prog "$kvm_cflags" "" ; then
1766
                vhost_net=yes
1767
            else
1768
                if test "$vhost_net" = "yes" ; then
1769
                    feature_not_found "vhost-net"
1770
                fi
1771
                vhost_net=no
1772
            fi
1773
    else
1774
            if test "$vhost_net" = "yes" ; then
1775
                echo "NOTE: vhost-net feature requires KVM (--enable-kvm)."
1776
                feature_not_found "vhost-net"
1777
            fi
1778
            vhost_net=no
1779
    fi
1780
fi
1781

    
1782
##########################################
1783
# pthread probe
1784
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1785

    
1786
pthread=no
1787
cat > $TMPC << EOF
1788
#include <pthread.h>
1789
int main(void) { pthread_create(0,0,0,0); return 0; }
1790
EOF
1791
if compile_prog "" "" ; then
1792
  pthread=yes
1793
else
1794
  for pthread_lib in $PTHREADLIBS_LIST; do
1795
    if compile_prog "" "$pthread_lib" ; then
1796
      pthread=yes
1797
      LIBS="$pthread_lib $LIBS"
1798
      break
1799
    fi
1800
  done
1801
fi
1802

    
1803
if test "$mingw32" != yes -a "$pthread" = no; then
1804
  echo
1805
  echo "Error: pthread check failed"
1806
  echo "Make sure to have the pthread libs and headers installed."
1807
  echo
1808
  exit 1
1809
fi
1810

    
1811
##########################################
1812
# rbd probe
1813
if test "$rbd" != "no" ; then
1814
  cat > $TMPC <<EOF
1815
#include <stdio.h>
1816
#include <rados/librados.h>
1817
int main(void) { rados_initialize(0, NULL); return 0; }
1818
EOF
1819
  rbd_libs="-lrados"
1820
  if compile_prog "" "$rbd_libs" ; then
1821
    librados_too_old=no
1822
    cat > $TMPC <<EOF
1823
#include <stdio.h>
1824
#include <rados/librados.h>
1825
#ifndef CEPH_OSD_TMAP_SET
1826
#error missing CEPH_OSD_TMAP_SET
1827
#endif
1828
int main(void) {
1829
    int (*func)(const rados_pool_t pool, uint64_t *snapid) = rados_selfmanaged_snap_create;
1830
    rados_initialize(0, NULL);
1831
    return 0;
1832
}
1833
EOF
1834
    if compile_prog "" "$rbd_libs" ; then
1835
      rbd=yes
1836
      libs_tools="$rbd_libs $libs_tools"
1837
      libs_softmmu="$rbd_libs $libs_softmmu"
1838
    else
1839
      rbd=no
1840
      librados_too_old=yes
1841
    fi
1842
  else
1843
    if test "$rbd" = "yes" ; then
1844
      feature_not_found "rados block device"
1845
    fi
1846
    rbd=no
1847
  fi
1848
  if test "$librados_too_old" = "yes" ; then
1849
    echo "-> Your librados version is too old - upgrade needed to have rbd support"
1850
  fi
1851
fi
1852

    
1853
##########################################
1854
# linux-aio probe
1855

    
1856
if test "$linux_aio" != "no" ; then
1857
  cat > $TMPC <<EOF
1858
#include <libaio.h>
1859
#include <sys/eventfd.h>
1860
#include <stddef.h>
1861
int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
1862
EOF
1863
  if compile_prog "" "-laio" ; then
1864
    linux_aio=yes
1865
    libs_softmmu="$libs_softmmu -laio"
1866
    libs_tools="$libs_tools -laio"
1867
  else
1868
    if test "$linux_aio" = "yes" ; then
1869
      feature_not_found "linux AIO"
1870
    fi
1871
    linux_aio=no
1872
  fi
1873
fi
1874

    
1875
##########################################
1876
# attr probe
1877

    
1878
if test "$attr" != "no" ; then
1879
  cat > $TMPC <<EOF
1880
#include <stdio.h>
1881
#include <sys/types.h>
1882
#include <attr/xattr.h>
1883
int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
1884
EOF
1885
  if compile_prog "" "-lattr" ; then
1886
    attr=yes
1887
    LIBS="-lattr $LIBS"
1888
  else
1889
    if test "$attr" = "yes" ; then
1890
      feature_not_found "ATTR"
1891
    fi
1892
    attr=no
1893
  fi
1894
fi
1895

    
1896
##########################################
1897
# iovec probe
1898
cat > $TMPC <<EOF
1899
#include <sys/types.h>
1900
#include <sys/uio.h>
1901
#include <unistd.h>
1902
int main(void) { struct iovec iov; return 0; }
1903
EOF
1904
iovec=no
1905
if compile_prog "" "" ; then
1906
  iovec=yes
1907
fi
1908

    
1909
##########################################
1910
# preadv probe
1911
cat > $TMPC <<EOF
1912
#include <sys/types.h>
1913
#include <sys/uio.h>
1914
#include <unistd.h>
1915
int main(void) { preadv; }
1916
EOF
1917
preadv=no
1918
if compile_prog "" "" ; then
1919
  preadv=yes
1920
fi
1921

    
1922
##########################################
1923
# fdt probe
1924
if test "$fdt" != "no" ; then
1925
  fdt_libs="-lfdt"
1926
  cat > $TMPC << EOF
1927
int main(void) { return 0; }
1928
EOF
1929
  if compile_prog "" "$fdt_libs" ; then
1930
    fdt=yes
1931
    libs_softmmu="$fdt_libs $libs_softmmu"
1932
  else
1933
    if test "$fdt" = "yes" ; then
1934
      feature_not_found "fdt"
1935
    fi
1936
    fdt=no
1937
  fi
1938
fi
1939

    
1940
#
1941
# Check for xxxat() functions when we are building linux-user
1942
# emulator.  This is done because older glibc versions don't
1943
# have syscall stubs for these implemented.
1944
#
1945
atfile=no
1946
cat > $TMPC << EOF
1947
#define _ATFILE_SOURCE
1948
#include <sys/types.h>
1949
#include <fcntl.h>
1950
#include <unistd.h>
1951

    
1952
int
1953
main(void)
1954
{
1955
	/* try to unlink nonexisting file */
1956
	return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
1957
}
1958
EOF
1959
if compile_prog "" "" ; then
1960
  atfile=yes
1961
fi
1962

    
1963
# Check for inotify functions when we are building linux-user
1964
# emulator.  This is done because older glibc versions don't
1965
# have syscall stubs for these implemented.  In that case we
1966
# don't provide them even if kernel supports them.
1967
#
1968
inotify=no
1969
cat > $TMPC << EOF
1970
#include <sys/inotify.h>
1971

    
1972
int
1973
main(void)
1974
{
1975
	/* try to start inotify */
1976
	return inotify_init();
1977
}
1978
EOF
1979
if compile_prog "" "" ; then
1980
  inotify=yes
1981
fi
1982

    
1983
inotify1=no
1984
cat > $TMPC << EOF
1985
#include <sys/inotify.h>
1986

    
1987
int
1988
main(void)
1989
{
1990
    /* try to start inotify */
1991
    return inotify_init1(0);
1992
}
1993
EOF
1994
if compile_prog "" "" ; then
1995
  inotify1=yes
1996
fi
1997

    
1998
# check if utimensat and futimens are supported
1999
utimens=no
2000
cat > $TMPC << EOF
2001
#define _ATFILE_SOURCE
2002
#include <stddef.h>
2003
#include <fcntl.h>
2004

    
2005
int main(void)
2006
{
2007
    utimensat(AT_FDCWD, "foo", NULL, 0);
2008
    futimens(0, NULL);
2009
    return 0;
2010
}
2011
EOF
2012
if compile_prog "" "" ; then
2013
  utimens=yes
2014
fi
2015

    
2016
# check if pipe2 is there
2017
pipe2=no
2018
cat > $TMPC << EOF
2019
#include <unistd.h>
2020
#include <fcntl.h>
2021

    
2022
int main(void)
2023
{
2024
    int pipefd[2];
2025
    pipe2(pipefd, O_CLOEXEC);
2026
    return 0;
2027
}
2028
EOF
2029
if compile_prog "" "" ; then
2030
  pipe2=yes
2031
fi
2032

    
2033
# check if accept4 is there
2034
accept4=no
2035
cat > $TMPC << EOF
2036
#include <sys/socket.h>
2037
#include <stddef.h>
2038

    
2039
int main(void)
2040
{
2041
    accept4(0, NULL, NULL, SOCK_CLOEXEC);
2042
    return 0;
2043
}
2044
EOF
2045
if compile_prog "" "" ; then
2046
  accept4=yes
2047
fi
2048

    
2049
# check if tee/splice is there. vmsplice was added same time.
2050
splice=no
2051
cat > $TMPC << EOF
2052
#include <unistd.h>
2053
#include <fcntl.h>
2054
#include <limits.h>
2055

    
2056
int main(void)
2057
{
2058
    int len, fd;
2059
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
2060
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
2061
    return 0;
2062
}
2063
EOF
2064
if compile_prog "" "" ; then
2065
  splice=yes
2066
fi
2067

    
2068
##########################################
2069
# signalfd probe
2070
signalfd="no"
2071
cat > $TMPC << EOF
2072
#define _GNU_SOURCE
2073
#include <unistd.h>
2074
#include <sys/syscall.h>
2075
#include <signal.h>
2076
int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
2077
EOF
2078

    
2079
if compile_prog "" "" ; then
2080
  signalfd=yes
2081
elif test "$kvm" = "yes" -a "$io_thread" != "yes"; then
2082
  echo
2083
  echo "ERROR: Host kernel lacks signalfd() support,"
2084
  echo "but KVM depends on it when the IO thread is disabled."
2085
  echo
2086
  exit 1
2087
fi
2088

    
2089
# check if eventfd is supported
2090
eventfd=no
2091
cat > $TMPC << EOF
2092
#include <sys/eventfd.h>
2093

    
2094
int main(void)
2095
{
2096
    int efd = eventfd(0, 0);
2097
    return 0;
2098
}
2099
EOF
2100
if compile_prog "" "" ; then
2101
  eventfd=yes
2102
fi
2103

    
2104
# check for fallocate
2105
fallocate=no
2106
cat > $TMPC << EOF
2107
#include <fcntl.h>
2108

    
2109
int main(void)
2110
{
2111
    fallocate(0, 0, 0, 0);
2112
    return 0;
2113
}
2114
EOF
2115
if compile_prog "$ARCH_CFLAGS" "" ; then
2116
  fallocate=yes
2117
fi
2118

    
2119
# check for sync_file_range
2120
sync_file_range=no
2121
cat > $TMPC << EOF
2122
#include <fcntl.h>
2123

    
2124
int main(void)
2125
{
2126
    sync_file_range(0, 0, 0, 0);
2127
    return 0;
2128
}
2129
EOF
2130
if compile_prog "$ARCH_CFLAGS" "" ; then
2131
  sync_file_range=yes
2132
fi
2133

    
2134
# check for linux/fiemap.h and FS_IOC_FIEMAP
2135
fiemap=no
2136
cat > $TMPC << EOF
2137
#include <sys/ioctl.h>
2138
#include <linux/fs.h>
2139
#include <linux/fiemap.h>
2140

    
2141
int main(void)
2142
{
2143
    ioctl(0, FS_IOC_FIEMAP, 0);
2144
    return 0;
2145
}
2146
EOF
2147
if compile_prog "$ARCH_CFLAGS" "" ; then
2148
  fiemap=yes
2149
fi
2150

    
2151
# check for dup3
2152
dup3=no
2153
cat > $TMPC << EOF
2154
#include <unistd.h>
2155

    
2156
int main(void)
2157
{
2158
    dup3(0, 0, 0);
2159
    return 0;
2160
}
2161
EOF
2162
if compile_prog "" "" ; then
2163
  dup3=yes
2164
fi
2165

    
2166
# check for epoll support
2167
epoll=no
2168
cat > $TMPC << EOF
2169
#include <sys/epoll.h>
2170

    
2171
int main(void)
2172
{
2173
    epoll_create(0);
2174
    return 0;
2175
}
2176
EOF
2177
if compile_prog "$ARCH_CFLAGS" "" ; then
2178
  epoll=yes
2179
fi
2180

    
2181
# epoll_create1 and epoll_pwait are later additions
2182
# so we must check separately for their presence
2183
epoll_create1=no
2184
cat > $TMPC << EOF
2185
#include <sys/epoll.h>
2186

    
2187
int main(void)
2188
{
2189
    epoll_create1(0);
2190
    return 0;
2191
}
2192
EOF
2193
if compile_prog "$ARCH_CFLAGS" "" ; then
2194
  epoll_create1=yes
2195
fi
2196

    
2197
epoll_pwait=no
2198
cat > $TMPC << EOF
2199
#include <sys/epoll.h>
2200

    
2201
int main(void)
2202
{
2203
    epoll_pwait(0, 0, 0, 0, 0);
2204
    return 0;
2205
}
2206
EOF
2207
if compile_prog "$ARCH_CFLAGS" "" ; then
2208
  epoll_pwait=yes
2209
fi
2210

    
2211
# Check if tools are available to build documentation.
2212
if test "$docs" != "no" ; then
2213
  if has makeinfo && has pod2man; then
2214
    docs=yes
2215
  else
2216
    if test "$docs" = "yes" ; then
2217
      feature_not_found "docs"
2218
    fi
2219
    docs=no
2220
  fi
2221
fi
2222

    
2223
# Search for bswap_32 function
2224
byteswap_h=no
2225
cat > $TMPC << EOF
2226
#include <byteswap.h>
2227
int main(void) { return bswap_32(0); }
2228
EOF
2229
if compile_prog "" "" ; then
2230
  byteswap_h=yes
2231
fi
2232

    
2233
# Search for bswap_32 function
2234
bswap_h=no
2235
cat > $TMPC << EOF
2236
#include <sys/endian.h>
2237
#include <sys/types.h>
2238
#include <machine/bswap.h>
2239
int main(void) { return bswap32(0); }
2240
EOF
2241
if compile_prog "" "" ; then
2242
  bswap_h=yes
2243
fi
2244

    
2245
##########################################
2246
# Do we need librt
2247
cat > $TMPC <<EOF
2248
#include <signal.h>
2249
#include <time.h>
2250
int main(void) { clockid_t id; return clock_gettime(id, NULL); }
2251
EOF
2252

    
2253
if compile_prog "" "" ; then
2254
  :
2255
elif compile_prog "" "-lrt" ; then
2256
  LIBS="-lrt $LIBS"
2257
fi
2258

    
2259
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
2260
        "$aix" != "yes" -a "$haiku" != "yes" ; then
2261
    libs_softmmu="-lutil $libs_softmmu"
2262
fi
2263

    
2264
##########################################
2265
# check if the compiler defines offsetof
2266

    
2267
need_offsetof=yes
2268
cat > $TMPC << EOF
2269
#include <stddef.h>
2270
int main(void) { struct s { int f; }; return offsetof(struct s, f); }
2271
EOF
2272
if compile_prog "" "" ; then
2273
    need_offsetof=no
2274
fi
2275

    
2276
##########################################
2277
# check if the compiler understands attribute warn_unused_result
2278
#
2279
# This could be smarter, but gcc -Werror does not error out even when warning
2280
# about attribute warn_unused_result
2281

    
2282
gcc_attribute_warn_unused_result=no
2283
cat > $TMPC << EOF
2284
#if defined(__GNUC__) && (__GNUC__ < 4) && defined(__GNUC_MINOR__) && (__GNUC__ < 4)
2285
#error gcc 3.3 or older
2286
#endif
2287
int main(void) { return 0;}
2288
EOF
2289
if compile_prog "" ""; then
2290
    gcc_attribute_warn_unused_result=yes
2291
fi
2292

    
2293
# spice probe
2294
if test "$spice" != "no" ; then
2295
  cat > $TMPC << EOF
2296
#include <spice.h>
2297
int main(void) { spice_server_new(); return 0; }
2298
EOF
2299
  spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
2300
  spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
2301
  if $pkg_config --atleast-version=0.5.3 spice-server >/dev/null 2>&1 && \
2302
     compile_prog "$spice_cflags" "$spice_libs" ; then
2303
    spice="yes"
2304
    libs_softmmu="$libs_softmmu $spice_libs"
2305
    QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
2306
  else
2307
    if test "$spice" = "yes" ; then
2308
      feature_not_found "spice"
2309
    fi
2310
    spice="no"
2311
  fi
2312
fi
2313

    
2314
##########################################
2315

    
2316
##########################################
2317
# check if we have fdatasync
2318

    
2319
fdatasync=no
2320
cat > $TMPC << EOF
2321
#include <unistd.h>
2322
int main(void) { return fdatasync(0); }
2323
EOF
2324
if compile_prog "" "" ; then
2325
    fdatasync=yes
2326
fi
2327

    
2328
##########################################
2329
# check if we have madvise
2330

    
2331
madvise=no
2332
cat > $TMPC << EOF
2333
#include <sys/types.h>
2334
#include <sys/mman.h>
2335
#include <stddef.h>
2336
int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
2337
EOF
2338
if compile_prog "" "" ; then
2339
    madvise=yes
2340
fi
2341

    
2342
##########################################
2343
# check if we have posix_madvise
2344

    
2345
posix_madvise=no
2346
cat > $TMPC << EOF
2347
#include <sys/mman.h>
2348
#include <stddef.h>
2349
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
2350
EOF
2351
if compile_prog "" "" ; then
2352
    posix_madvise=yes
2353
fi
2354

    
2355
##########################################
2356
# check if trace backend exists
2357

    
2358
sh "$source_path/scripts/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null
2359
if test "$?" -ne 0 ; then
2360
  echo
2361
  echo "Error: invalid trace backend"
2362
  echo "Please choose a supported trace backend."
2363
  echo
2364
  exit 1
2365
fi
2366

    
2367
##########################################
2368
# For 'ust' backend, test if ust headers are present
2369
if test "$trace_backend" = "ust"; then
2370
  cat > $TMPC << EOF
2371
#include <ust/tracepoint.h>
2372
#include <ust/marker.h>
2373
int main(void) { return 0; }
2374
EOF
2375
  if compile_prog "" "" ; then
2376
    LIBS="-lust $LIBS"
2377
  else
2378
    echo
2379
    echo "Error: Trace backend 'ust' missing libust header files"
2380
    echo
2381
    exit 1
2382
  fi
2383
fi
2384

    
2385
##########################################
2386
# For 'dtrace' backend, test if 'dtrace' command is present
2387
if test "$trace_backend" = "dtrace"; then
2388
  if ! has 'dtrace' ; then
2389
    echo
2390
    echo "Error: dtrace command is not found in PATH $PATH"
2391
    echo
2392
    exit 1
2393
  fi
2394
  trace_backend_stap="no"
2395
  if has 'stap' ; then
2396
    trace_backend_stap="yes"
2397
  fi
2398
fi
2399

    
2400
##########################################
2401
# End of CC checks
2402
# After here, no more $cc or $ld runs
2403

    
2404
if test "$debug" = "no" ; then
2405
  CFLAGS="-O2 $CFLAGS"
2406
fi
2407

    
2408
# Consult white-list to determine whether to enable werror
2409
# by default.  Only enable by default for git builds
2410
z_version=`cut -f3 -d. $source_path/VERSION`
2411

    
2412
if test -z "$werror" ; then
2413
    if test "$z_version" = "50" -a \
2414
        "$linux" = "yes" ; then
2415
        werror="yes"
2416
    else
2417
        werror="no"
2418
    fi
2419
fi
2420

    
2421
# Disable zero malloc errors for official releases unless explicitly told to
2422
# enable/disable
2423
if test -z "$zero_malloc" ; then
2424
    if test "$z_version" = "50" ; then
2425
	zero_malloc="no"
2426
    else
2427
	zero_malloc="yes"
2428
    fi
2429
fi
2430

    
2431
if test "$werror" = "yes" ; then
2432
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
2433
fi
2434

    
2435
if test "$solaris" = "no" ; then
2436
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
2437
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
2438
    fi
2439
fi
2440

    
2441
# Use ASLR, no-SEH and DEP if available
2442
if test "$mingw32" = "yes" ; then
2443
    for flag in --dynamicbase --no-seh --nxcompat; do
2444
        if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
2445
            LDFLAGS="-Wl,$flag $LDFLAGS"
2446
        fi
2447
    done
2448
fi
2449

    
2450
confdir=$sysconfdir$confsuffix
2451

    
2452
tools=
2453
if test "$softmmu" = yes ; then
2454
  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
2455
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
2456
      tools="qemu-nbd\$(EXESUF) $tools"
2457
    if [ "$check_utests" = "yes" ]; then
2458
      tools="check-qint check-qstring check-qdict check-qlist $tools"
2459
      tools="check-qfloat check-qjson $tools"
2460
    fi
2461
  fi
2462
fi
2463

    
2464
# Mac OS X ships with a broken assembler
2465
roms=
2466
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
2467
        "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
2468
        "$softmmu" = yes ; then
2469
  roms="optionrom"
2470
fi
2471
if test "$cpu" = "ppc64" ; then
2472
  roms="$roms spapr-rtas"
2473
fi
2474

    
2475
echo "Install prefix    $prefix"
2476
echo "BIOS directory    `eval echo $datadir`"
2477
echo "binary directory  `eval echo $bindir`"
2478
echo "config directory  `eval echo $sysconfdir`"
2479
if test "$mingw32" = "no" ; then
2480
echo "Manual directory  `eval echo $mandir`"
2481
echo "ELF interp prefix $interp_prefix"
2482
fi
2483
echo "Source path       $source_path"
2484
echo "C compiler        $cc"
2485
echo "Host C compiler   $host_cc"
2486
echo "CFLAGS            $CFLAGS"
2487
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
2488
echo "LDFLAGS           $LDFLAGS"
2489
echo "make              $make"
2490
echo "install           $install"
2491
echo "host CPU          $cpu"
2492
echo "host big endian   $bigendian"
2493
echo "target list       $target_list"
2494
echo "tcg debug enabled $debug_tcg"
2495
echo "Mon debug enabled $debug_mon"
2496
echo "gprof enabled     $gprof"
2497
echo "sparse enabled    $sparse"
2498
echo "strip binaries    $strip_opt"
2499
echo "profiler          $profiler"
2500
echo "static build      $static"
2501
echo "-Werror enabled   $werror"
2502
if test "$darwin" = "yes" ; then
2503
    echo "Cocoa support     $cocoa"
2504
fi
2505
echo "SDL support       $sdl"
2506
echo "curses support    $curses"
2507
echo "curl support      $curl"
2508
echo "check support     $check_utests"
2509
echo "mingw32 support   $mingw32"
2510
echo "Audio drivers     $audio_drv_list"
2511
echo "Extra audio cards $audio_card_list"
2512
echo "Block whitelist   $block_drv_whitelist"
2513
echo "Mixer emulation   $mixemu"
2514
echo "VNC support       $vnc"
2515
if test "$vnc" = "yes" ; then
2516
    echo "VNC TLS support   $vnc_tls"
2517
    echo "VNC SASL support  $vnc_sasl"
2518
    echo "VNC JPEG support  $vnc_jpeg"
2519
    echo "VNC PNG support   $vnc_png"
2520
    echo "VNC thread        $vnc_thread"
2521
fi
2522
if test -n "$sparc_cpu"; then
2523
    echo "Target Sparc Arch $sparc_cpu"
2524
fi
2525
echo "xen support       $xen"
2526
echo "brlapi support    $brlapi"
2527
echo "bluez  support    $bluez"
2528
echo "Documentation     $docs"
2529
[ ! -z "$uname_release" ] && \
2530
echo "uname -r          $uname_release"
2531
echo "NPTL support      $nptl"
2532
echo "GUEST_BASE        $guest_base"
2533
echo "PIE user targets  $user_pie"
2534
echo "vde support       $vde"
2535
echo "IO thread         $io_thread"
2536
echo "Linux AIO support $linux_aio"
2537
echo "ATTR/XATTR support $attr"
2538
echo "Install blobs     $blobs"
2539
echo "KVM support       $kvm"
2540
echo "fdt support       $fdt"
2541
echo "preadv support    $preadv"
2542
echo "fdatasync         $fdatasync"
2543
echo "madvise           $madvise"
2544
echo "posix_madvise     $posix_madvise"
2545
echo "uuid support      $uuid"
2546
echo "vhost-net support $vhost_net"
2547
echo "Trace backend     $trace_backend"
2548
echo "Trace output file $trace_file-<pid>"
2549
echo "spice support     $spice"
2550
echo "rbd support       $rbd"
2551
echo "xfsctl support    $xfs"
2552

    
2553
if test $sdl_too_old = "yes"; then
2554
echo "-> Your SDL version is too old - please upgrade to have SDL support"
2555
fi
2556

    
2557
config_host_mak="config-host.mak"
2558
config_host_ld="config-host.ld"
2559

    
2560
echo "# Automatically generated by configure - do not modify" > $config_host_mak
2561
printf "# Configured with:" >> $config_host_mak
2562
printf " '%s'" "$0" "$@" >> $config_host_mak
2563
echo >> $config_host_mak
2564

    
2565
echo all: >> $config_host_mak
2566
echo "prefix=$prefix" >> $config_host_mak
2567
echo "bindir=$bindir" >> $config_host_mak
2568
echo "mandir=$mandir" >> $config_host_mak
2569
echo "datadir=$datadir" >> $config_host_mak
2570
echo "sysconfdir=$sysconfdir" >> $config_host_mak
2571
echo "docdir=$docdir" >> $config_host_mak
2572
echo "confdir=$confdir" >> $config_host_mak
2573

    
2574
case "$cpu" in
2575
  i386|x86_64|alpha|cris|hppa|ia64|lm32|m68k|microblaze|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
2576
    ARCH=$cpu
2577
  ;;
2578
  armv4b|armv4l)
2579
    ARCH=arm
2580
  ;;
2581
esac
2582
echo "ARCH=$ARCH" >> $config_host_mak
2583
if test "$debug_tcg" = "yes" ; then
2584
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
2585
fi
2586
if test "$debug_mon" = "yes" ; then
2587
  echo "CONFIG_DEBUG_MONITOR=y" >> $config_host_mak
2588
fi
2589
if test "$debug" = "yes" ; then
2590
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
2591
fi
2592
if test "$strip_opt" = "yes" ; then
2593
  echo "STRIP=${strip}" >> $config_host_mak
2594
fi
2595
if test "$bigendian" = "yes" ; then
2596
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
2597
fi
2598
echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
2599
if test "$mingw32" = "yes" ; then
2600
  echo "CONFIG_WIN32=y" >> $config_host_mak
2601
  rc_version=`cat $source_path/VERSION`
2602
  version_major=${rc_version%%.*}
2603
  rc_version=${rc_version#*.}
2604
  version_minor=${rc_version%%.*}
2605
  rc_version=${rc_version#*.}
2606
  version_subminor=${rc_version%%.*}
2607
  version_micro=0
2608
  echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
2609
  echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
2610
else
2611
  echo "CONFIG_POSIX=y" >> $config_host_mak
2612
fi
2613

    
2614
if test "$linux" = "yes" ; then
2615
  echo "CONFIG_LINUX=y" >> $config_host_mak
2616
fi
2617

    
2618
if test "$darwin" = "yes" ; then
2619
  echo "CONFIG_DARWIN=y" >> $config_host_mak
2620
fi
2621

    
2622
if test "$aix" = "yes" ; then
2623
  echo "CONFIG_AIX=y" >> $config_host_mak
2624
fi
2625

    
2626
if test "$solaris" = "yes" ; then
2627
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
2628
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
2629
  if test "$needs_libsunmath" = "yes" ; then
2630
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
2631
  fi
2632
fi
2633
if test "$haiku" = "yes" ; then
2634
  echo "CONFIG_HAIKU=y" >> $config_host_mak
2635
fi
2636
if test "$static" = "yes" ; then
2637
  echo "CONFIG_STATIC=y" >> $config_host_mak
2638
fi
2639
if test $profiler = "yes" ; then
2640
  echo "CONFIG_PROFILER=y" >> $config_host_mak
2641
fi
2642
if test "$slirp" = "yes" ; then
2643
  echo "CONFIG_SLIRP=y" >> $config_host_mak
2644
  QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES"
2645
fi
2646
if test "$vde" = "yes" ; then
2647
  echo "CONFIG_VDE=y" >> $config_host_mak
2648
fi
2649
for card in $audio_card_list; do
2650
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
2651
    echo "$def=y" >> $config_host_mak
2652
done
2653
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
2654
for drv in $audio_drv_list; do
2655
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
2656
    echo "$def=y" >> $config_host_mak
2657
    if test "$drv" = "fmod"; then
2658
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
2659
    fi
2660
done
2661
if test "$audio_pt_int" = "yes" ; then
2662
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
2663
fi
2664
if test "$audio_win_int" = "yes" ; then
2665
  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
2666
fi
2667
echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
2668
if test "$mixemu" = "yes" ; then
2669
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
2670
fi
2671
if test "$vnc" = "yes" ; then
2672
  echo "CONFIG_VNC=y" >> $config_host_mak
2673
fi
2674
if test "$vnc_tls" = "yes" ; then
2675
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
2676
  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
2677
fi
2678
if test "$vnc_sasl" = "yes" ; then
2679
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
2680
  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
2681
fi
2682
if test "$vnc_jpeg" = "yes" ; then
2683
  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
2684
  echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak
2685
fi
2686
if test "$vnc_png" = "yes" ; then
2687
  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
2688
  echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak
2689
fi
2690
if test "$vnc_thread" = "yes" ; then
2691
  echo "CONFIG_VNC_THREAD=y" >> $config_host_mak
2692
fi
2693
if test "$fnmatch" = "yes" ; then
2694
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
2695
fi
2696
if test "$uuid" = "yes" ; then
2697
  echo "CONFIG_UUID=y" >> $config_host_mak
2698
fi
2699
if test "$xfs" = "yes" ; then
2700
  echo "CONFIG_XFS=y" >> $config_host_mak
2701
fi
2702
qemu_version=`head $source_path/VERSION`
2703
echo "VERSION=$qemu_version" >>$config_host_mak
2704
echo "PKGVERSION=$pkgversion" >>$config_host_mak
2705
echo "SRC_PATH=$source_path" >> $config_host_mak
2706
echo "TARGET_DIRS=$target_list" >> $config_host_mak
2707
if [ "$docs" = "yes" ] ; then
2708
  echo "BUILD_DOCS=yes" >> $config_host_mak
2709
fi
2710
if test "$sdl" = "yes" ; then
2711
  echo "CONFIG_SDL=y" >> $config_host_mak
2712
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
2713
fi
2714
if test "$cocoa" = "yes" ; then
2715
  echo "CONFIG_COCOA=y" >> $config_host_mak
2716
fi
2717
if test "$curses" = "yes" ; then
2718
  echo "CONFIG_CURSES=y" >> $config_host_mak
2719
fi
2720
if test "$atfile" = "yes" ; then
2721
  echo "CONFIG_ATFILE=y" >> $config_host_mak
2722
fi
2723
if test "$utimens" = "yes" ; then
2724
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
2725
fi
2726
if test "$pipe2" = "yes" ; then
2727
  echo "CONFIG_PIPE2=y" >> $config_host_mak
2728
fi
2729
if test "$accept4" = "yes" ; then
2730
  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
2731
fi
2732
if test "$splice" = "yes" ; then
2733
  echo "CONFIG_SPLICE=y" >> $config_host_mak
2734
fi
2735
if test "$eventfd" = "yes" ; then
2736
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
2737
fi
2738
if test "$fallocate" = "yes" ; then
2739
  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
2740
fi
2741
if test "$sync_file_range" = "yes" ; then
2742
  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
2743
fi
2744
if test "$fiemap" = "yes" ; then
2745
  echo "CONFIG_FIEMAP=y" >> $config_host_mak
2746
fi
2747
if test "$dup3" = "yes" ; then
2748
  echo "CONFIG_DUP3=y" >> $config_host_mak
2749
fi
2750
if test "$epoll" = "yes" ; then
2751
  echo "CONFIG_EPOLL=y" >> $config_host_mak
2752
fi
2753
if test "$epoll_create1" = "yes" ; then
2754
  echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
2755
fi
2756
if test "$epoll_pwait" = "yes" ; then
2757
  echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
2758
fi
2759
if test "$inotify" = "yes" ; then
2760
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
2761
fi
2762
if test "$inotify1" = "yes" ; then
2763
  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
2764
fi
2765
if test "$byteswap_h" = "yes" ; then
2766
  echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
2767
fi
2768
if test "$bswap_h" = "yes" ; then
2769
  echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
2770
fi
2771
if test "$curl" = "yes" ; then
2772
  echo "CONFIG_CURL=y" >> $config_host_mak
2773
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
2774
fi
2775
if test "$brlapi" = "yes" ; then
2776
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
2777
fi
2778
if test "$bluez" = "yes" ; then
2779
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
2780
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
2781
fi
2782
if test "$xen" = "yes" ; then
2783
  echo "CONFIG_XEN=y" >> $config_host_mak
2784
fi
2785
if test "$io_thread" = "yes" ; then
2786
  echo "CONFIG_IOTHREAD=y" >> $config_host_mak
2787
fi
2788
if test "$linux_aio" = "yes" ; then
2789
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
2790
fi
2791
if test "$attr" = "yes" ; then
2792
  echo "CONFIG_ATTR=y" >> $config_host_mak
2793
fi
2794
if test "$linux" = "yes" ; then
2795
  if test "$attr" = "yes" ; then
2796
    echo "CONFIG_VIRTFS=y" >> $config_host_mak
2797
  fi
2798
fi
2799
if test "$blobs" = "yes" ; then
2800
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
2801
fi
2802
if test "$iovec" = "yes" ; then
2803
  echo "CONFIG_IOVEC=y" >> $config_host_mak
2804
fi
2805
if test "$preadv" = "yes" ; then
2806
  echo "CONFIG_PREADV=y" >> $config_host_mak
2807
fi
2808
if test "$fdt" = "yes" ; then
2809
  echo "CONFIG_FDT=y" >> $config_host_mak
2810
fi
2811
if test "$signalfd" = "yes" ; then
2812
  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
2813
fi
2814
if test "$need_offsetof" = "yes" ; then
2815
  echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
2816
fi
2817
if test "$gcc_attribute_warn_unused_result" = "yes" ; then
2818
  echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak
2819
fi
2820
if test "$fdatasync" = "yes" ; then
2821
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
2822
fi
2823
if test "$madvise" = "yes" ; then
2824
  echo "CONFIG_MADVISE=y" >> $config_host_mak
2825
fi
2826
if test "$posix_madvise" = "yes" ; then
2827
  echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
2828
fi
2829

    
2830
if test "$spice" = "yes" ; then
2831
  echo "CONFIG_SPICE=y" >> $config_host_mak
2832
fi
2833

    
2834
if test "$smartcard" = "yes" ; then
2835
  echo "CONFIG_SMARTCARD=y" >> $config_host_mak
2836
fi
2837

    
2838
# XXX: suppress that
2839
if [ "$bsd" = "yes" ] ; then
2840
  echo "CONFIG_BSD=y" >> $config_host_mak
2841
fi
2842

    
2843
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
2844

    
2845
if test "$zero_malloc" = "yes" ; then
2846
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
2847
fi
2848
if test "$rbd" = "yes" ; then
2849
  echo "CONFIG_RBD=y" >> $config_host_mak
2850
fi
2851

    
2852
# USB host support
2853
case "$usb" in
2854
linux)
2855
  echo "HOST_USB=linux" >> $config_host_mak
2856
;;
2857
bsd)
2858
  echo "HOST_USB=bsd" >> $config_host_mak
2859
;;
2860
*)
2861
  echo "HOST_USB=stub" >> $config_host_mak
2862
;;
2863
esac
2864

    
2865
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
2866
if test "$trace_backend" = "simple"; then
2867
  echo "CONFIG_SIMPLE_TRACE=y" >> $config_host_mak
2868
fi
2869
# Set the appropriate trace file.
2870
if test "$trace_backend" = "simple"; then
2871
  trace_file="\"$trace_file-%u\""
2872
fi
2873
if test "$trace_backend" = "dtrace" -a "$trace_backend_stap" = "yes" ; then
2874
  echo "CONFIG_SYSTEMTAP_TRACE=y" >> $config_host_mak
2875
fi
2876
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
2877

    
2878
echo "TOOLS=$tools" >> $config_host_mak
2879
echo "ROMS=$roms" >> $config_host_mak
2880
echo "MAKE=$make" >> $config_host_mak
2881
echo "INSTALL=$install" >> $config_host_mak
2882
echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak
2883
echo "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak
2884
echo "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak
2885
echo "CC=$cc" >> $config_host_mak
2886
echo "CC_I386=$cc_i386" >> $config_host_mak
2887
echo "HOST_CC=$host_cc" >> $config_host_mak
2888
echo "AR=$ar" >> $config_host_mak
2889
echo "OBJCOPY=$objcopy" >> $config_host_mak
2890
echo "LD=$ld" >> $config_host_mak
2891
echo "WINDRES=$windres" >> $config_host_mak
2892
echo "CFLAGS=$CFLAGS" >> $config_host_mak
2893
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
2894
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
2895
if test "$sparse" = "yes" ; then
2896
  echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
2897
  echo "HOST_CC      := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
2898
  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
2899
fi
2900
echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
2901
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
2902
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
2903
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
2904
echo "LIBS+=$LIBS" >> $config_host_mak
2905
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
2906
echo "EXESUF=$EXESUF" >> $config_host_mak
2907

    
2908
# generate list of library paths for linker script
2909

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

    
2912
if test -f ${config_host_ld}~ ; then
2913
  if cmp -s $config_host_ld ${config_host_ld}~ ; then
2914
    mv ${config_host_ld}~ $config_host_ld
2915
  else
2916
    rm ${config_host_ld}~
2917
  fi
2918
fi
2919

    
2920
for d in libdis libdis-user; do
2921
    mkdir -p $d
2922
    symlink $source_path/Makefile.dis $d/Makefile
2923
    echo > $d/config.mak
2924
done
2925
if test "$static" = "no" -a "$user_pie" = "yes" ; then
2926
  echo "QEMU_CFLAGS+=-fpie" > libdis-user/config.mak
2927
fi
2928

    
2929
for target in $target_list; do
2930
target_dir="$target"
2931
config_target_mak=$target_dir/config-target.mak
2932
target_arch2=`echo $target | cut -d '-' -f 1`
2933
target_bigendian="no"
2934

    
2935
case "$target_arch2" in
2936
  armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus)
2937
  target_bigendian=yes
2938
  ;;
2939
esac
2940
target_softmmu="no"
2941
target_user_only="no"
2942
target_linux_user="no"
2943
target_darwin_user="no"
2944
target_bsd_user="no"
2945
case "$target" in
2946
  ${target_arch2}-softmmu)
2947
    target_softmmu="yes"
2948
    ;;
2949
  ${target_arch2}-linux-user)
2950
    if test "$linux" != "yes" ; then
2951
      echo "ERROR: Target '$target' is only available on a Linux host"
2952
      exit 1
2953
    fi
2954
    target_user_only="yes"
2955
    target_linux_user="yes"
2956
    ;;
2957
  ${target_arch2}-darwin-user)
2958
    if test "$darwin" != "yes" ; then
2959
      echo "ERROR: Target '$target' is only available on a Darwin host"
2960
      exit 1
2961
    fi
2962
    target_user_only="yes"
2963
    target_darwin_user="yes"
2964
    ;;
2965
  ${target_arch2}-bsd-user)
2966
    if test "$bsd" != "yes" ; then
2967
      echo "ERROR: Target '$target' is only available on a BSD host"
2968
      exit 1
2969
    fi
2970
    target_user_only="yes"
2971
    target_bsd_user="yes"
2972
    ;;
2973
  *)
2974
    echo "ERROR: Target '$target' not recognised"
2975
    exit 1
2976
    ;;
2977
esac
2978

    
2979
mkdir -p $target_dir
2980
mkdir -p $target_dir/fpu
2981
mkdir -p $target_dir/tcg
2982
mkdir -p $target_dir/ide
2983
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
2984
  mkdir -p $target_dir/nwfpe
2985
fi
2986
symlink $source_path/Makefile.target $target_dir/Makefile
2987

    
2988

    
2989
echo "# Automatically generated by configure - do not modify" > $config_target_mak
2990

    
2991
bflt="no"
2992
target_nptl="no"
2993
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
2994
echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
2995
gdb_xml_files=""
2996
target_short_alignment=2
2997
target_int_alignment=4
2998
target_long_alignment=4
2999
target_llong_alignment=8
3000

    
3001
TARGET_ARCH="$target_arch2"
3002
TARGET_BASE_ARCH=""
3003
TARGET_ABI_DIR=""
3004

    
3005
case "$target_arch2" in
3006
  i386)
3007
    target_phys_bits=64
3008
  ;;
3009
  x86_64)
3010
    TARGET_BASE_ARCH=i386
3011
    target_phys_bits=64
3012
    target_long_alignment=8
3013
  ;;
3014
  alpha)
3015
    target_phys_bits=64
3016
    target_long_alignment=8
3017
    target_nptl="yes"
3018
  ;;
3019
  arm|armeb)
3020
    TARGET_ARCH=arm
3021
    bflt="yes"
3022
    target_nptl="yes"
3023
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
3024
    target_phys_bits=32
3025
    target_llong_alignment=4
3026
  ;;
3027
  cris)
3028
    target_nptl="yes"
3029
    target_phys_bits=32
3030
  ;;
3031
  lm32)
3032
    target_phys_bits=32
3033
  ;;
3034
  m68k)
3035
    bflt="yes"
3036
    gdb_xml_files="cf-core.xml cf-fp.xml"
3037
    target_phys_bits=32
3038
    target_int_alignment=2
3039
    target_long_alignment=2
3040
    target_llong_alignment=2
3041
  ;;
3042
  microblaze|microblazeel)
3043
    TARGET_ARCH=microblaze
3044
    bflt="yes"
3045
    target_nptl="yes"
3046
    target_phys_bits=32
3047
  ;;
3048
  mips|mipsel)
3049
    TARGET_ARCH=mips
3050
    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
3051
    target_nptl="yes"
3052
    target_phys_bits=64
3053
  ;;
3054
  mipsn32|mipsn32el)
3055
    TARGET_ARCH=mipsn32
3056
    TARGET_BASE_ARCH=mips
3057
    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
3058
    target_phys_bits=64
3059
  ;;
3060
  mips64|mips64el)
3061
    TARGET_ARCH=mips64
3062
    TARGET_BASE_ARCH=mips
3063
    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
3064
    target_phys_bits=64
3065
    target_long_alignment=8
3066
  ;;
3067
  ppc)
3068
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3069
    target_phys_bits=32
3070
    target_nptl="yes"
3071
  ;;
3072
  ppcemb)
3073
    TARGET_BASE_ARCH=ppc
3074
    TARGET_ABI_DIR=ppc
3075
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3076
    target_phys_bits=64
3077
    target_nptl="yes"
3078
  ;;
3079
  ppc64)
3080
    TARGET_BASE_ARCH=ppc
3081
    TARGET_ABI_DIR=ppc
3082
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3083
    target_phys_bits=64
3084
    target_long_alignment=8
3085
  ;;
3086
  ppc64abi32)
3087
    TARGET_ARCH=ppc64
3088
    TARGET_BASE_ARCH=ppc
3089
    TARGET_ABI_DIR=ppc
3090
    echo "TARGET_ABI32=y" >> $config_target_mak
3091
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3092
    target_phys_bits=64
3093
  ;;
3094
  sh4|sh4eb)
3095
    TARGET_ARCH=sh4
3096
    bflt="yes"
3097
    target_nptl="yes"
3098
    target_phys_bits=32
3099
  ;;
3100
  sparc)
3101
    target_phys_bits=64
3102
  ;;
3103
  sparc64)
3104
    TARGET_BASE_ARCH=sparc
3105
    target_phys_bits=64
3106
    target_long_alignment=8
3107
  ;;
3108
  sparc32plus)
3109
    TARGET_ARCH=sparc64
3110
    TARGET_BASE_ARCH=sparc
3111
    TARGET_ABI_DIR=sparc
3112
    echo "TARGET_ABI32=y" >> $config_target_mak
3113
    target_phys_bits=64
3114
  ;;
3115
  s390x)
3116
    target_phys_bits=64
3117
  ;;
3118
  *)
3119
    echo "Unsupported target CPU"
3120
    exit 1
3121
  ;;
3122
esac
3123
echo "TARGET_SHORT_ALIGNMENT=$target_short_alignment" >> $config_target_mak
3124
echo "TARGET_INT_ALIGNMENT=$target_int_alignment" >> $config_target_mak
3125
echo "TARGET_LONG_ALIGNMENT=$target_long_alignment" >> $config_target_mak
3126
echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak
3127
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
3128
target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
3129
echo "TARGET_$target_arch_name=y" >> $config_target_mak
3130
echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
3131
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
3132
if [ "$TARGET_BASE_ARCH" = "" ]; then
3133
  TARGET_BASE_ARCH=$TARGET_ARCH
3134
fi
3135
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
3136
if [ "$TARGET_ABI_DIR" = "" ]; then
3137
  TARGET_ABI_DIR=$TARGET_ARCH
3138
fi
3139
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
3140
case "$target_arch2" in
3141
  i386|x86_64)
3142
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
3143
      echo "CONFIG_XEN=y" >> $config_target_mak
3144
    fi
3145
esac
3146
case "$target_arch2" in
3147
  i386|x86_64|ppcemb|ppc|ppc64|s390x)
3148
    # Make sure the target and host cpus are compatible
3149
    if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
3150
      \( "$target_arch2" = "$cpu" -o \
3151
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \
3152
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
3153
      \( "$target_arch2" = "ppc"    -a "$cpu" = "ppc64" \) -o \
3154
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
3155
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
3156
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
3157
      echo "CONFIG_KVM=y" >> $config_target_mak
3158
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_target_mak
3159
      if test "$kvm_para" = "yes"; then
3160
        echo "CONFIG_KVM_PARA=y" >> $config_target_mak
3161
      fi
3162
      if test $vhost_net = "yes" ; then
3163
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
3164
      fi
3165
    fi
3166
esac
3167
if test "$target_bigendian" = "yes" ; then
3168
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
3169
fi
3170
if test "$target_softmmu" = "yes" ; then
3171
  echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak
3172
  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
3173
  echo "LIBS+=$libs_softmmu" >> $config_target_mak
3174
  echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak
3175
  echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
3176
fi
3177
if test "$target_user_only" = "yes" ; then
3178
  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
3179
fi
3180
if test "$target_linux_user" = "yes" ; then
3181
  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
3182
fi
3183
if test "$target_darwin_user" = "yes" ; then
3184
  echo "CONFIG_DARWIN_USER=y" >> $config_target_mak
3185
fi
3186
list=""
3187
if test ! -z "$gdb_xml_files" ; then
3188
  for x in $gdb_xml_files; do
3189
    list="$list $source_path/gdb-xml/$x"
3190
  done
3191
  echo "TARGET_XML_FILES=$list" >> $config_target_mak
3192
fi
3193

    
3194
case "$target_arch2" in
3195
  i386|x86_64)
3196
    echo "CONFIG_NOSOFTFLOAT=y" >> $config_target_mak
3197
    ;;
3198
  *)
3199
    echo "CONFIG_SOFTFLOAT=y" >> $config_target_mak
3200
    ;;
3201
esac
3202

    
3203
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
3204
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
3205
fi
3206
if test "$target_user_only" = "yes" \
3207
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
3208
  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
3209
fi
3210
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
3211
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
3212
fi
3213
if test "$target_bsd_user" = "yes" ; then
3214
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
3215
fi
3216

    
3217
# generate QEMU_CFLAGS/LDFLAGS for targets
3218

    
3219
cflags=""
3220
includes=""
3221
ldflags=""
3222

    
3223
if test "$ARCH" = "sparc64" ; then
3224
  includes="-I\$(SRC_PATH)/tcg/sparc $includes"
3225
elif test "$ARCH" = "s390x" ; then
3226
  includes="-I\$(SRC_PATH)/tcg/s390 $includes"
3227
elif test "$ARCH" = "x86_64" ; then
3228
  includes="-I\$(SRC_PATH)/tcg/i386 $includes"
3229
else
3230
  includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
3231
fi
3232
includes="-I\$(SRC_PATH)/tcg $includes"
3233
includes="-I\$(SRC_PATH)/fpu $includes"
3234

    
3235
if test "$target_user_only" = "yes" ; then
3236
    libdis_config_mak=libdis-user/config.mak
3237
else
3238
    libdis_config_mak=libdis/config.mak
3239
fi
3240

    
3241
for i in $ARCH $TARGET_BASE_ARCH ; do
3242
  case "$i" in
3243
  alpha)
3244
    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
3245
    echo "CONFIG_ALPHA_DIS=y"  >> $libdis_config_mak
3246
  ;;
3247
  arm)
3248
    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
3249
    echo "CONFIG_ARM_DIS=y"  >> $libdis_config_mak
3250
  ;;
3251
  cris)
3252
    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
3253
    echo "CONFIG_CRIS_DIS=y"  >> $libdis_config_mak
3254
  ;;
3255
  hppa)
3256
    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
3257
    echo "CONFIG_HPPA_DIS=y"  >> $libdis_config_mak
3258
  ;;
3259
  i386|x86_64)
3260
    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
3261
    echo "CONFIG_I386_DIS=y"  >> $libdis_config_mak
3262
  ;;
3263
  ia64*)
3264
    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
3265
    echo "CONFIG_IA64_DIS=y"  >> $libdis_config_mak
3266
  ;;
3267
  m68k)
3268
    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
3269
    echo "CONFIG_M68K_DIS=y"  >> $libdis_config_mak
3270
  ;;
3271
  microblaze*)
3272
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
3273
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $libdis_config_mak
3274
  ;;
3275
  mips*)
3276
    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
3277
    echo "CONFIG_MIPS_DIS=y"  >> $libdis_config_mak
3278
  ;;
3279
  ppc*)
3280
    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
3281
    echo "CONFIG_PPC_DIS=y"  >> $libdis_config_mak
3282
  ;;
3283
  s390*)
3284
    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
3285
    echo "CONFIG_S390_DIS=y"  >> $libdis_config_mak
3286
  ;;
3287
  sh4)
3288
    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
3289
    echo "CONFIG_SH4_DIS=y"  >> $libdis_config_mak
3290
  ;;
3291
  sparc*)
3292
    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
3293
    echo "CONFIG_SPARC_DIS=y"  >> $libdis_config_mak
3294
  ;;
3295
  esac
3296
done
3297

    
3298
case "$ARCH" in
3299
alpha)
3300
  # Ensure there's only a single GP
3301
  cflags="-msmall-data $cflags"
3302
;;
3303
esac
3304

    
3305
if test "$target_softmmu" = "yes" ; then
3306
  case "$TARGET_BASE_ARCH" in
3307
  arm)
3308
    cflags="-DHAS_AUDIO $cflags"
3309
  ;;
3310
  i386|mips|ppc)
3311
    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
3312
  ;;
3313
  esac
3314
fi
3315

    
3316
if test "$target_user_only" = "yes" -a "$static" = "no" -a \
3317
	"$user_pie" = "yes" ; then
3318
  cflags="-fpie $cflags"
3319
  ldflags="-pie $ldflags"
3320
fi
3321

    
3322
if test "$target_softmmu" = "yes" -a \( \
3323
        "$TARGET_ARCH" = "microblaze" -o \
3324
        "$TARGET_ARCH" = "cris" \) ; then
3325
  echo "CONFIG_NEED_MMU=y" >> $config_target_mak
3326
fi
3327

    
3328
if test "$gprof" = "yes" ; then
3329
  echo "TARGET_GPROF=yes" >> $config_target_mak
3330
  if test "$target_linux_user" = "yes" ; then
3331
    cflags="-p $cflags"
3332
    ldflags="-p $ldflags"
3333
  fi
3334
  if test "$target_softmmu" = "yes" ; then
3335
    ldflags="-p $ldflags"
3336
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
3337
  fi
3338
fi
3339

    
3340
linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
3341
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
3342
  case "$ARCH" in
3343
  sparc)
3344
    # -static is used to avoid g1/g3 usage by the dynamic linker
3345
    ldflags="$linker_script -static $ldflags"
3346
    ;;
3347
  alpha | s390x)
3348
    # The default placement of the application is fine.
3349
    ;;
3350
  *)
3351
    ldflags="$linker_script $ldflags"
3352
    ;;
3353
  esac
3354
fi
3355

    
3356
echo "LDFLAGS+=$ldflags" >> $config_target_mak
3357
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
3358
echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
3359

    
3360
done # for target in $targets
3361

    
3362
# build tree in object directory in case the source is not in the current directory
3363
DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
3364
DIRS="$DIRS roms/seabios roms/vgabios"
3365
DIRS="$DIRS fsdev ui"
3366
FILES="Makefile tests/Makefile"
3367
FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
3368
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
3369
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
3370
for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
3371
    FILES="$FILES pc-bios/`basename $bios_file`"
3372
done
3373
mkdir -p $DIRS
3374
for f in $FILES ; do
3375
    test -e $f || symlink $source_path/$f $f
3376
done
3377

    
3378
# temporary config to build submodules
3379
for rom in seabios vgabios ; do
3380
    config_mak=roms/$rom/config.mak
3381
    echo "# Automatically generated by configure - do not modify" > $config_mak
3382
    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
3383
    echo "CC=$cc" >> $config_mak
3384
    echo "BCC=bcc" >> $config_mak
3385
    echo "CPP=${cross_prefix}cpp" >> $config_mak
3386
    echo "OBJCOPY=objcopy" >> $config_mak
3387
    echo "IASL=iasl" >> $config_mak
3388
    echo "LD=$ld" >> $config_mak
3389
done
3390

    
3391
for hwlib in 32 64; do
3392
  d=libhw$hwlib
3393
  mkdir -p $d
3394
  mkdir -p $d/ide
3395
  symlink $source_path/Makefile.hw $d/Makefile
3396
  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak
3397
done
3398

    
3399
d=libuser
3400
mkdir -p $d
3401
symlink $source_path/Makefile.user $d/Makefile
3402
if test "$static" = "no" -a "$user_pie" = "yes" ; then
3403
  echo "QEMU_CFLAGS+=-fpie" > $d/config.mak
3404
fi
3405

    
3406
if test "$docs" = "yes" ; then
3407
  mkdir -p QMP
3408
fi