configure 81.7 KB
Newer Older
B
bellard 已提交
1 2
#!/bin/sh
#
B
bellard 已提交
3
# qemu configure script (c) 2003 Fabrice Bellard
B
bellard 已提交
4 5 6 7 8 9 10 11 12 13
#
# set temporary file name
if test ! -z "$TMPDIR" ; then
    TMPDIR1="${TMPDIR}"
elif test ! -z "$TEMPDIR" ; then
    TMPDIR1="${TEMPDIR}"
else
    TMPDIR1="/tmp"
fi

B
bellard 已提交
14 15
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe"
B
bellard 已提交
17

18 19 20
# NB: do not call "exit" in the trap handler; this is buggy with some shells;
# see <1285349658-3122-1-git-send-email-loic.minier@linaro.org>
trap "rm -f $TMPC $TMPO $TMPE" EXIT INT QUIT TERM
G
Gerd Hoffmann 已提交
21
rm -f config.log
22

23
compile_object() {
G
Gerd Hoffmann 已提交
24 25
  echo $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log
  $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log 2>&1
26 27 28 29 30
}

compile_prog() {
  local_cflags="$1"
  local_ldflags="$2"
G
Gerd Hoffmann 已提交
31 32
  echo $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log
  $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log 2>&1
33 34
}

35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
# check whether a command is available to this shell (may be either an
# executable or a builtin)
has() {
    type "$1" >/dev/null 2>&1
}

# search for an executable in PATH
path_of() {
    local_command="$1"
    local_ifs="$IFS"
    local_dir=""

    # pathname has a dir component?
    if [ "${local_command#*/}" != "$local_command" ]; then
        if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
            echo "$local_command"
            return 0
        fi
    fi
    if [ -z "$local_command" ]; then
        return 1
    fi

    IFS=:
    for local_dir in $PATH; do
        if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
            echo "$local_dir/$local_command"
            IFS="${local_ifs:-$(printf ' \t\n')}"
            return 0
        fi
    done
    # not found
    IFS="${local_ifs:-$(printf ' \t\n')}"
    return 1
}

B
bellard 已提交
71
# default parameters
72
cpu=""
73
interp_prefix="/usr/gnemul/qemu-%M"
B
bellard 已提交
74
static="no"
75
sparc_cpu=""
B
bellard 已提交
76 77
cross_prefix=""
cc="gcc"
M
malc 已提交
78
audio_drv_list=""
79 80
audio_card_list="ac97 es1370 sb16 hda"
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda"
81
block_drv_whitelist=""
B
bellard 已提交
82 83 84
host_cc="gcc"
ar="ar"
make="make"
85
install="install"
86 87
objcopy="objcopy"
ld="ld"
88
strip="strip"
89
windres="windres"
J
Juan Quintela 已提交
90
helper_cflags=""
J
Juan Quintela 已提交
91
libs_softmmu=""
J
Juan Quintela 已提交
92
libs_tools=""
93
audio_pt_int=""
94
audio_win_int=""
P
Paolo Bonzini 已提交
95
cc_i386=i386-pc-linux-gnu-gcc
96 97 98 99 100 101 102 103 104

# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
  --cc=*) cc="$optarg"
  ;;
105 106
  --cpu=*) cpu="$optarg"
  ;;
J
Juan Quintela 已提交
107
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
108 109 110
  ;;
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
  ;;
111 112 113
  --sparc_cpu=*)
    sparc_cpu="$optarg"
    case $sparc_cpu in
114
    v7|v8|v8plus|v8plusa)
115 116 117 118 119 120 121 122 123 124 125
      cpu="sparc"
    ;;
    v9)
      cpu="sparc64"
    ;;
    *)
      echo "undefined SPARC architecture. Exiting";
      exit 1
    ;;
    esac
  ;;
126 127 128 129 130 131 132 133
  esac
done
# OS specific
# Using uname is really, really broken.  Once we have the right set of checks
# we can eliminate it's usage altogether

cc="${cross_prefix}${cc}"
ar="${cross_prefix}${ar}"
134 135
objcopy="${cross_prefix}${objcopy}"
ld="${cross_prefix}${ld}"
136
strip="${cross_prefix}${strip}"
137
windres="${cross_prefix}${windres}"
138

139 140 141 142 143 144
# default flags for all hosts
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
CFLAGS="-g $CFLAGS"
QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
K
Kirill A. Shutemov 已提交
145
QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
146 147 148
QEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS"
LDFLAGS="-g $LDFLAGS"

B
Blue Swirl 已提交
149 150
gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
151
gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
B
Blue Swirl 已提交
152
gcc_flags="-fstack-protector-all $gcc_flags"
153
cat > $TMPC << EOF
154
int main(void) { return 0; }
155 156
EOF
for flag in $gcc_flags; do
157
    if compile_prog "-Werror $QEMU_CFLAGS" "-Werror $flag" ; then
158
	QEMU_CFLAGS="$QEMU_CFLAGS $flag"
159 160 161
    fi
done

162 163 164 165 166
# check that the C compiler works.
cat > $TMPC <<EOF
int main(void) {}
EOF

167
if compile_object ; then
168 169 170 171 172 173 174 175 176 177 178 179 180
  : C compiler works ok
else
    echo "ERROR: \"$cc\" either does not exist or does not work"
    exit 1
fi

check_define() {
cat > $TMPC <<EOF
#if !defined($1)
#error Not defined
#endif
int main(void) { return 0; }
EOF
181
  compile_object
182 183
}

184 185 186 187
if test ! -z "$cpu" ; then
  # command line argument
  :
elif check_define __i386__ ; then
188 189 190
  cpu="i386"
elif check_define __x86_64__ ; then
  cpu="x86_64"
B
blueswir1 已提交
191 192 193 194 195 196 197 198
elif check_define __sparc__ ; then
  # We can't check for 64 bit (when gcc is biarch) or V8PLUSA
  # They must be specified using --sparc_cpu
  if check_define __arch64__ ; then
    cpu="sparc64"
  else
    cpu="sparc"
  fi
M
malc 已提交
199 200 201 202 203 204
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
A
Aurelien Jarno 已提交
205 206
elif check_define __mips__ ; then
  cpu="mips"
A
Aurelien Jarno 已提交
207 208
elif check_define __ia64__ ; then
  cpu="ia64"
209 210 211 212 213 214
elif check_define __s390__ ; then
  if check_define __s390x__ ; then
    cpu="s390x"
  else
    cpu="s390"
  fi
215
else
M
malc 已提交
216
  cpu=`uname -m`
217 218
fi

B
bellard 已提交
219
target_list=""
B
bellard 已提交
220
case "$cpu" in
A
Aurelien Jarno 已提交
221
  alpha|cris|ia64|m68k|microblaze|ppc|ppc64|sparc64)
222 223
    cpu="$cpu"
  ;;
B
bellard 已提交
224
  i386|i486|i586|i686|i86pc|BePC)
225
    cpu="i386"
B
bellard 已提交
226
  ;;
A
aurel32 已提交
227 228 229
  x86_64|amd64)
    cpu="x86_64"
  ;;
B
bellard 已提交
230
  armv*b)
231 232
    cpu="armv4b"
  ;;
B
bellard 已提交
233
  armv*l)
B
bellard 已提交
234 235
    cpu="armv4l"
  ;;
A
aurel32 已提交
236 237 238
  parisc|parisc64)
    cpu="hppa"
  ;;
A
Aurelien Jarno 已提交
239 240 241
  mips*)
    cpu="mips"
  ;;
242
  s390)
B
bellard 已提交
243 244
    cpu="s390"
  ;;
245 246 247
  s390x)
    cpu="s390x"
  ;;
248
  sparc|sun4[cdmuv])
B
bellard 已提交
249 250
    cpu="sparc"
  ;;
B
bellard 已提交
251
  *)
252 253
    echo "Unsupported CPU = $cpu"
    exit 1
B
bellard 已提交
254 255
  ;;
esac
J
Juan Quintela 已提交
256

257 258 259 260 261 262 263
# Default value for a variable defining feature "foo".
#  * foo="no"  feature will only be used if --enable-foo arg is given
#  * foo=""    feature will be searched for, and if found, will be used
#              unless --disable-foo is given
#  * foo="yes" this value will only be set by --enable-foo flag.
#              feature will searched for,
#              if not found, configure exits with error
J
Juan Quintela 已提交
264
#
265 266 267
# Always add --enable-foo and --disable-foo command line args.
# Distributions want to ensure that several features are compiled in, and it
# is impossible without a --enable-foo that exits if a feature is not found.
J
Juan Quintela 已提交
268

269
bluez=""
270
brlapi=""
271
curl=""
272
curses=""
J
Juan Quintela 已提交
273
docs=""
274
fdt=""
275
kvm=""
276
kvm_para=""
277
nptl=""
278
sdl=""
279
sparse="no"
280
uuid=""
281
vde=""
282
vnc_tls=""
283
vnc_sasl=""
284
vnc_jpeg=""
C
Corentin Chary 已提交
285
vnc_png=""
286
vnc_thread="no"
287
xen=""
288
linux_aio=""
289
attr=""
M
Michael S. Tsirkin 已提交
290
vhost_net=""
291

B
bellard 已提交
292
gprof="no"
293
debug_tcg="no"
L
Luiz Capitulino 已提交
294
debug_mon="no"
P
Paul Brook 已提交
295
debug="no"
296
strip_opt="yes"
B
bellard 已提交
297
bigendian="no"
B
bellard 已提交
298 299
mingw32="no"
EXESUF=""
300 301 302 303 304 305 306
prefix="/usr/local"
mandir="\${prefix}/share/man"
datadir="\${prefix}/share/qemu"
docdir="\${prefix}/share/doc/qemu"
bindir="\${prefix}/bin"
sysconfdir="\${prefix}/etc"
confsuffix="/qemu"
B
bellard 已提交
307
slirp="yes"
B
bellard 已提交
308 309
fmod_lib=""
fmod_inc=""
B
blueswir1 已提交
310
oss_lib=""
311
bsd="no"
B
bellard 已提交
312
linux="no"
B
blueswir1 已提交
313
solaris="no"
314
profiler="no"
315
cocoa="no"
316
softmmu="yes"
317 318
linux_user="no"
darwin_user="no"
B
blueswir1 已提交
319
bsd_user="no"
P
Paul Brook 已提交
320
guest_base=""
321
uname_release=""
322
io_thread="no"
323
mixemu="no"
A
aliguori 已提交
324
kerneldir=""
M
malc 已提交
325
aix="no"
326
haiku="no"
T
ths 已提交
327
blobs="yes"
P
pbrook 已提交
328
pkgversion=""
L
Luiz Capitulino 已提交
329
check_utests="no"
330
user_pie="no"
331
zero_malloc=""
332
trace_backend="nop"
P
Prerna Saxena 已提交
333
trace_file="trace"
334
spice=""
335
rbd=""
B
bellard 已提交
336 337

# OS specific
338 339 340 341
if check_define __linux__ ; then
  targetos="Linux"
elif check_define _WIN32 ; then
  targetos='MINGW32'
342 343 344 345
elif check_define __OpenBSD__ ; then
  targetos='OpenBSD'
elif check_define __sun__ ; then
  targetos='SunOS'
346 347
elif check_define __HAIKU__ ; then
  targetos='Haiku'
348 349 350
else
  targetos=`uname -s`
fi
351

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

B
bellard 已提交
480
if [ "$bsd" = "yes" ] ; then
481
  if [ "$darwin" != "yes" ] ; then
482
    usb="bsd"
483
  fi
B
blueswir1 已提交
484
  bsd_user="yes"
B
bellard 已提交
485 486
fi

487 488
if test "$mingw32" = "yes" ; then
  EXESUF=".exe"
J
Juan Quintela 已提交
489
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
490 491
  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
492
  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
493 494 495 496 497 498 499
  prefix="c:/Program Files/Qemu"
  mandir="\${prefix}"
  datadir="\${prefix}"
  docdir="\${prefix}"
  bindir="\${prefix}"
  sysconfdir="\${prefix}"
  confsuffix=""
500 501
fi

B
bellard 已提交
502
# find source path
P
pbrook 已提交
503
source_path=`dirname "$0"`
504 505
source_path_used="no"
workdir=`pwd`
P
pbrook 已提交
506
if [ -z "$source_path" ]; then
507
    source_path=$workdir
P
pbrook 已提交
508 509
else
    source_path=`cd "$source_path"; pwd`
B
bellard 已提交
510
fi
P
pbrook 已提交
511
[ -f "$workdir/vl.c" ] || source_path_used="yes"
B
bellard 已提交
512

513
werror=""
514

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

754 755
#
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
J
Juan Quintela 已提交
756
# QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
757
#
P
Paul Brook 已提交
758
host_guest_base="no"
759
case "$cpu" in
760 761
    sparc) case $sparc_cpu in
           v7|v8)
J
Juan Quintela 已提交
762
             QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
763 764
           ;;
           v8plus|v8plusa)
J
Juan Quintela 已提交
765
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
766 767
           ;;
           *) # sparc_cpu not defined in the command line
J
Juan Quintela 已提交
768
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
769 770
           esac
           LDFLAGS="-m32 $LDFLAGS"
J
Juan Quintela 已提交
771
           QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
772
           if test "$solaris" = "no" ; then
J
Juan Quintela 已提交
773
             QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
J
Juan Quintela 已提交
774
             helper_cflags="-ffixed-i0"
775
           fi
776
           ;;
777
    sparc64)
J
Juan Quintela 已提交
778
           QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
779
           LDFLAGS="-m64 $LDFLAGS"
J
Juan Quintela 已提交
780
           QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
781
           if test "$solaris" != "no" ; then
J
Juan Quintela 已提交
782
             QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
783
           fi
784
           ;;
785
    s390)
786 787
           QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m31 $LDFLAGS"
R
Richard Henderson 已提交
788
           host_guest_base="yes"
789 790 791 792
           ;;
    s390x)
           QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m64 $LDFLAGS"
R
Richard Henderson 已提交
793
           host_guest_base="yes"
794
           ;;
795
    i386)
J
Juan Quintela 已提交
796
           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
797
           LDFLAGS="-m32 $LDFLAGS"
P
Paolo Bonzini 已提交
798
           cc_i386='$(CC) -m32'
J
Juan Quintela 已提交
799
           helper_cflags="-fomit-frame-pointer"
P
Paul Brook 已提交
800
           host_guest_base="yes"
801 802
           ;;
    x86_64)
J
Juan Quintela 已提交
803
           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
804
           LDFLAGS="-m64 $LDFLAGS"
P
Paolo Bonzini 已提交
805
           cc_i386='$(CC) -m32'
P
Paul Brook 已提交
806 807 808 809
           host_guest_base="yes"
           ;;
    arm*)
           host_guest_base="yes"
810
           ;;
M
malc 已提交
811 812 813
    ppc*)
           host_guest_base="yes"
           ;;
814 815 816
    mips*)
           host_guest_base="yes"
           ;;
A
Aurelien Jarno 已提交
817 818 819
    ia64*)
           host_guest_base="yes"
           ;;
R
Richard Henderson 已提交
820 821 822
    hppa*)
           host_guest_base="yes"
           ;;
823 824
esac

P
Paul Brook 已提交
825 826
[ -z "$guest_base" ] && guest_base="$host_guest_base"

827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844
if test x"$show_help" = x"yes" ; then
cat << EOF

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

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

B
bellard 已提交
948 949 950 951
#
# Solaris specific configure tool chain decisions
#
if test "$solaris" = "yes" ; then
952 953 954
  if has $install; then
    :
  else
B
bellard 已提交
955 956 957 958 959
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
    exit 1
  fi
960
  if test "`path_of $install`" = "/usr/sbin/install" ; then
B
bellard 已提交
961 962 963 964 965
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
    exit 1
  fi
966 967 968
  if has ar; then
    :
  else
B
bellard 已提交
969 970 971 972 973 974
    echo "Error: No path includes ar"
    if test -f /usr/ccs/bin/ar ; then
      echo "Add /usr/ccs/bin to your path and rerun configure"
    fi
    exit 1
  fi
975
fi
B
bellard 已提交
976 977


B
bellard 已提交
978 979
if test -z "$target_list" ; then
# these targets are portable
980
    if [ "$softmmu" = "yes" ] ; then
A
aurel32 已提交
981 982 983 984 985 986
        target_list="\
i386-softmmu \
x86_64-softmmu \
arm-softmmu \
cris-softmmu \
m68k-softmmu \
987
microblaze-softmmu \
A
aurel32 已提交
988 989 990 991 992 993 994 995 996 997
mips-softmmu \
mipsel-softmmu \
mips64-softmmu \
mips64el-softmmu \
ppc-softmmu \
ppcemb-softmmu \
ppc64-softmmu \
sh4-softmmu \
sh4eb-softmmu \
sparc-softmmu \
998
sparc64-softmmu \
A
aurel32 已提交
999
"
1000
    fi
B
bellard 已提交
1001
# the following are Linux specific
1002
    if [ "$linux_user" = "yes" ] ; then
A
aurel32 已提交
1003 1004 1005 1006 1007 1008 1009 1010
        target_list="${target_list}\
i386-linux-user \
x86_64-linux-user \
alpha-linux-user \
arm-linux-user \
armeb-linux-user \
cris-linux-user \
m68k-linux-user \
1011
microblaze-linux-user \
A
aurel32 已提交
1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022
mips-linux-user \
mipsel-linux-user \
ppc-linux-user \
ppc64-linux-user \
ppc64abi32-linux-user \
sh4-linux-user \
sh4eb-linux-user \
sparc-linux-user \
sparc64-linux-user \
sparc32plus-linux-user \
"
1023 1024 1025
    fi
# the following are Darwin specific
    if [ "$darwin_user" = "yes" ] ; then
M
malc 已提交
1026
        target_list="$target_list i386-darwin-user ppc-darwin-user "
B
bellard 已提交
1027
    fi
B
blueswir1 已提交
1028 1029 1030
# the following are BSD specific
    if [ "$bsd_user" = "yes" ] ; then
        target_list="${target_list}\
1031 1032 1033
i386-bsd-user \
x86_64-bsd-user \
sparc-bsd-user \
B
blueswir1 已提交
1034 1035 1036
sparc64-bsd-user \
"
    fi
1037
else
1038
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
B
bellard 已提交
1039
fi
1040 1041 1042 1043
if test -z "$target_list" ; then
    echo "No targets enabled"
    exit 1
fi
P
Paolo Bonzini 已提交
1044 1045 1046 1047 1048 1049 1050
# see if system emulation was really requested
case " $target_list " in
  *"-softmmu "*) softmmu=yes
  ;;
  *) softmmu=no
  ;;
esac
B
bellard 已提交
1051

1052 1053 1054 1055 1056
feature_not_found() {
  feature=$1

  echo "ERROR"
  echo "ERROR: User requested feature $feature"
1057
  echo "ERROR: configure was not able to find it"
1058 1059 1060 1061
  echo "ERROR"
  exit 1;
}

B
bellard 已提交
1062 1063 1064 1065 1066 1067 1068
if test -z "$cross_prefix" ; then

# ---
# big/little endian test
cat > $TMPC << EOF
#include <inttypes.h>
int main(int argc, char ** argv){
1069 1070
        volatile uint32_t i=0x01234567;
        return (*((uint8_t*)(&i))) == 0x67;
B
bellard 已提交
1071 1072 1073
}
EOF

1074
if compile_prog "" "" ; then
B
bellard 已提交
1075 1076 1077 1078 1079 1080 1081 1082
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
1083
case "$cpu" in
1084
  armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
1085 1086 1087
    bigendian=yes
  ;;
esac
B
bellard 已提交
1088 1089 1090

fi

B
bellard 已提交
1091 1092
# host long bits test
hostlongbits="32"
1093
case "$cpu" in
1094
  x86_64|alpha|ia64|sparc64|ppc64|s390x)
1095 1096 1097
    hostlongbits=64
  ;;
esac
B
bellard 已提交
1098

1099 1100 1101 1102 1103 1104

##########################################
# NPTL probe

if test "$nptl" != "no" ; then
  cat > $TMPC <<EOF
1105
#include <sched.h>
P
pbrook 已提交
1106
#include <linux/futex.h>
1107 1108 1109 1110 1111 1112 1113 1114
void foo()
{
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
}
EOF

1115 1116 1117 1118 1119 1120 1121 1122
  if compile_object ; then
    nptl=yes
  else
    if test "$nptl" = "yes" ; then
      feature_not_found "nptl"
    fi
    nptl=no
  fi
1123 1124
fi

1125 1126 1127 1128 1129 1130 1131
##########################################
# zlib check

cat > $TMPC << EOF
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
1132
if compile_prog "" "-lz" ; then
1133 1134 1135 1136 1137 1138 1139 1140 1141
    :
else
    echo
    echo "Error: zlib check failed"
    echo "Make sure to have the zlib libs and headers installed."
    echo
    exit 1
fi

1142 1143 1144
##########################################
# xen probe

1145
if test "$xen" != "no" ; then
1146 1147
  xen_libs="-lxenstore -lxenctrl -lxenguest"
  cat > $TMPC <<EOF
1148 1149
#include <xenctrl.h>
#include <xs.h>
1150
int main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
1151
EOF
1152
  if compile_prog "" "$xen_libs" ; then
1153
    xen=yes
J
Juan Quintela 已提交
1154
    libs_softmmu="$xen_libs $libs_softmmu"
1155
  else
1156 1157 1158 1159
    if test "$xen" = "yes" ; then
      feature_not_found "xen"
    fi
    xen=no
1160
  fi
1161 1162
fi

P
Paolo Bonzini 已提交
1163 1164 1165 1166
##########################################
# pkgconfig probe

pkgconfig="${cross_prefix}pkg-config"
1167
if ! has $pkgconfig; then
P
Paolo Bonzini 已提交
1168 1169 1170 1171
  # likely not cross compiling, or hope for the best
  pkgconfig=pkg-config
fi

1172 1173 1174
##########################################
# Sparse probe
if test "$sparse" != "no" ; then
1175
  if has cgcc; then
1176 1177 1178 1179 1180 1181 1182 1183 1184
    sparse=yes
  else
    if test "$sparse" = "yes" ; then
      feature_not_found "sparse"
    fi
    sparse=no
  fi
fi

B
bellard 已提交
1185 1186 1187
##########################################
# SDL probe

S
Stefan Weil 已提交
1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198
# Look for sdl configuration program (pkg-config or sdl-config).
# Prefer variant with cross prefix if cross compiling,
# and favour pkg-config with sdl over sdl-config.
if test -n "$cross_prefix" -a $pkgconfig != pkg-config && \
     $pkgconfig sdl --modversion >/dev/null 2>&1; then
  sdlconfig="$pkgconfig sdl"
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
elif test -n "$cross_prefix" && has ${cross_prefix}sdl-config; then
  sdlconfig="${cross_prefix}sdl-config"
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
elif $pkgconfig sdl --modversion >/dev/null 2>&1; then
1199 1200
  sdlconfig="$pkgconfig sdl"
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
1201
elif has sdl-config; then
1202 1203
  sdlconfig='sdl-config'
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1204 1205 1206 1207 1208
else
  if test "$sdl" = "yes" ; then
    feature_not_found "sdl"
  fi
  sdl=no
1209
fi
B
bellard 已提交
1210

1211
sdl_too_old=no
1212
if test "$sdl" != "no" ; then
J
Juan Quintela 已提交
1213
  cat > $TMPC << EOF
B
bellard 已提交
1214 1215 1216 1217
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
1218
  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
1219 1220 1221 1222 1223
  if test "$static" = "yes" ; then
    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
  else
    sdl_libs=`$sdlconfig --libs 2> /dev/null`
  fi
1224
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1225 1226 1227 1228 1229 1230 1231
    if test "$_sdlversion" -lt 121 ; then
      sdl_too_old=yes
    else
      if test "$cocoa" = "no" ; then
        sdl=yes
      fi
    fi
A
aliguori 已提交
1232

1233
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
J
Juan Quintela 已提交
1234
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
1235
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1236 1237
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
J
Juan Quintela 已提交
1238
      fi
1239
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1240 1241 1242 1243 1244
	:
      else
        sdl=no
      fi
    fi # static link
1245 1246 1247 1248 1249
  else # sdl not found
    if test "$sdl" = "yes" ; then
      feature_not_found "sdl"
    fi
    sdl=no
J
Juan Quintela 已提交
1250
  fi # sdl compile test
1251
fi
B
bellard 已提交
1252

1253
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
1254
  cat > $TMPC <<EOF
1255 1256 1257 1258 1259 1260 1261 1262
#include <SDL.h>
#if defined(SDL_VIDEO_DRIVER_X11)
#include <X11/XKBlib.h>
#else
#error No x11 support
#endif
int main(void) { return 0; }
EOF
1263
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1264 1265
    sdl_libs="$sdl_libs -lX11"
  fi
1266 1267 1268
  if test "$mingw32" = "yes" ; then
    sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
  fi
J
Juan Quintela 已提交
1269
  libs_softmmu="$sdl_libs $libs_softmmu"
1270 1271
fi

1272 1273
##########################################
# VNC TLS detection
1274 1275
if test "$vnc_tls" != "no" ; then
  cat > $TMPC <<EOF
1276 1277 1278
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
P
Paolo Bonzini 已提交
1279 1280
  vnc_tls_cflags=`$pkgconfig --cflags gnutls 2> /dev/null`
  vnc_tls_libs=`$pkgconfig --libs gnutls 2> /dev/null`
1281 1282 1283 1284 1285 1286
  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
    vnc_tls=yes
    libs_softmmu="$vnc_tls_libs $libs_softmmu"
  else
    if test "$vnc_tls" = "yes" ; then
      feature_not_found "vnc-tls"
1287
    fi
1288 1289
    vnc_tls=no
  fi
1290 1291
fi

1292 1293
##########################################
# VNC SASL detection
J
Juan Quintela 已提交
1294
if test "$vnc_sasl" != "no" ; then
1295
  cat > $TMPC <<EOF
1296 1297 1298 1299
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
1300 1301 1302 1303 1304 1305 1306 1307 1308
  # Assuming Cyrus-SASL installed in /usr prefix
  vnc_sasl_cflags=""
  vnc_sasl_libs="-lsasl2"
  if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
    vnc_sasl=yes
    libs_softmmu="$vnc_sasl_libs $libs_softmmu"
  else
    if test "$vnc_sasl" = "yes" ; then
      feature_not_found "vnc-sasl"
1309
    fi
1310 1311
    vnc_sasl=no
  fi
1312 1313
fi

1314 1315
##########################################
# VNC JPEG detection
1316
if test "$vnc_jpeg" != "no" ; then
1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334
cat > $TMPC <<EOF
#include <stdio.h>
#include <jpeglib.h>
int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
EOF
    vnc_jpeg_cflags=""
    vnc_jpeg_libs="-ljpeg"
  if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
    vnc_jpeg=yes
    libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
  else
    if test "$vnc_jpeg" = "yes" ; then
      feature_not_found "vnc-jpeg"
    fi
    vnc_jpeg=no
  fi
fi

C
Corentin Chary 已提交
1335 1336
##########################################
# VNC PNG detection
1337
if test "$vnc_png" != "no" ; then
C
Corentin Chary 已提交
1338 1339 1340
cat > $TMPC <<EOF
//#include <stdio.h>
#include <png.h>
S
Scott Wood 已提交
1341
#include <stddef.h>
C
Corentin Chary 已提交
1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360
int main(void) {
    png_structp png_ptr;
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
    return 0;
}
EOF
    vnc_png_cflags=""
    vnc_png_libs="-lpng"
  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
    vnc_png=yes
    libs_softmmu="$vnc_png_libs $libs_softmmu"
  else
    if test "$vnc_png" = "yes" ; then
      feature_not_found "vnc-png"
    fi
    vnc_png=no
  fi
fi

1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
1372
if compile_prog "" "" ; then
1373 1374 1375
   fnmatch="yes"
fi

1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400
##########################################
# uuid_generate() probe, used for vdi block driver
if test "$uuid" != "no" ; then
  uuid_libs="-luuid"
  cat > $TMPC << EOF
#include <uuid/uuid.h>
int main(void)
{
    uuid_t my_uuid;
    uuid_generate(my_uuid);
    return 0;
}
EOF
  if compile_prog "" "$uuid_libs" ; then
    uuid="yes"
    libs_softmmu="$uuid_libs $libs_softmmu"
    libs_tools="$uuid_libs $libs_tools"
  else
    if test "$uuid" = "yes" ; then
      feature_not_found "uuid"
    fi
    uuid=no
  fi
fi

1401 1402
##########################################
# vde libraries probe
1403
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
1404
  vde_libs="-lvdeplug"
1405 1406
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
1407 1408 1409 1410 1411 1412
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
    vde_open("", "", &a);
    return 0;
}
1413
EOF
1414
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
1415
    vde=yes
1416 1417
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
1418 1419 1420 1421 1422
  else
    if test "$vde" = "yes" ; then
      feature_not_found "vde"
    fi
    vde=no
J
Juan Quintela 已提交
1423
  fi
1424 1425
fi

1426
##########################################
1427
# Sound support libraries probe
1428

1429 1430 1431 1432 1433 1434 1435 1436 1437 1438
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
1439
EOF
1440
    if compile_prog "$cfl" "$lib" ; then
1441 1442 1443 1444 1445 1446 1447 1448 1449 1450
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

1451
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1452 1453 1454 1455 1456
for drv in $audio_drv_list; do
    case $drv in
    alsa)
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
1457
    libs_softmmu="-lasound $libs_softmmu"
1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468
    ;;

    fmod)
    if test -z $fmod_lib || test -z $fmod_inc; then
        echo
        echo "Error: You must specify path to FMOD library and headers"
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
        echo
        exit 1
    fi
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
1469
    libs_softmmu="$fmod_lib $libs_softmmu"
1470 1471 1472 1473
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1474
    libs_softmmu="-lesd $libs_softmmu"
1475
    audio_pt_int="yes"
1476
    ;;
M
malc 已提交
1477 1478

    pa)
1479
    audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \
M
malc 已提交
1480
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1481
    libs_softmmu="-lpulse -lpulse-simple $libs_softmmu"
1482
    audio_pt_int="yes"
M
malc 已提交
1483 1484
    ;;

1485 1486 1487 1488
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

1489 1490
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1491
      audio_win_int="yes"
1492 1493 1494 1495 1496 1497 1498
    ;;

    oss)
      libs_softmmu="$oss_lib $libs_softmmu"
    ;;

    sdl|wav)
B
blueswir1 已提交
1499 1500 1501
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

1502 1503 1504 1505 1506
    winwave)
      libs_softmmu="-lwinmm $libs_softmmu"
      audio_win_int="yes"
    ;;

M
malc 已提交
1507
    *)
M
malc 已提交
1508
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
M
malc 已提交
1509 1510 1511 1512 1513 1514 1515
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
1516 1517
    esac
done
1518

A
aurel32 已提交
1519 1520 1521
##########################################
# BrlAPI probe

1522
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
1523 1524
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
1525
#include <brlapi.h>
S
Scott Wood 已提交
1526
#include <stddef.h>
A
aurel32 已提交
1527 1528
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
1529
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
1530
    brlapi=yes
1531
    libs_softmmu="$brlapi_libs $libs_softmmu"
1532 1533 1534 1535 1536
  else
    if test "$brlapi" = "yes" ; then
      feature_not_found "brlapi"
    fi
    brlapi=no
J
Juan Quintela 已提交
1537 1538
  fi
fi
A
aurel32 已提交
1539

B
balrog 已提交
1540 1541
##########################################
# curses probe
1542
curses_list="-lncurses -lcurses"
B
balrog 已提交
1543

1544 1545
if test "$curses" != "no" ; then
  curses_found=no
B
balrog 已提交
1546 1547
  cat > $TMPC << EOF
#include <curses.h>
1548 1549 1550 1551
#ifdef __OpenBSD__
#define resize_term resizeterm
#endif
int main(void) { resize_term(0, 0); return curses_version(); }
B
balrog 已提交
1552
EOF
1553 1554
  for curses_lib in $curses_list; do
    if compile_prog "" "$curses_lib" ; then
1555
      curses_found=yes
1556 1557 1558 1559
      libs_softmmu="$curses_lib $libs_softmmu"
      break
    fi
  done
1560 1561 1562 1563 1564 1565 1566 1567
  if test "$curses_found" = "yes" ; then
    curses=yes
  else
    if test "$curses" = "yes" ; then
      feature_not_found "curses"
    fi
    curses=no
  fi
1568
fi
B
balrog 已提交
1569

A
Alexander Graf 已提交
1570 1571 1572
##########################################
# curl probe

1573 1574 1575 1576 1577 1578
if $pkgconfig libcurl --modversion >/dev/null 2>&1; then
  curlconfig="$pkgconfig libcurl"
else
  curlconfig=curl-config
fi

1579
if test "$curl" != "no" ; then
A
Alexander Graf 已提交
1580 1581 1582 1583
  cat > $TMPC << EOF
#include <curl/curl.h>
int main(void) { return curl_easy_init(); }
EOF
1584 1585
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
  curl_libs=`$curlconfig --libs 2>/dev/null`
J
Juan Quintela 已提交
1586
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
1587
    curl=yes
1588 1589
    libs_tools="$curl_libs $libs_tools"
    libs_softmmu="$curl_libs $libs_softmmu"
1590 1591 1592 1593 1594
  else
    if test "$curl" = "yes" ; then
      feature_not_found "curl"
    fi
    curl=no
A
Alexander Graf 已提交
1595 1596 1597
  fi
fi # test "$curl"

L
Luiz Capitulino 已提交
1598 1599 1600 1601 1602 1603 1604 1605
##########################################
# check framework probe

if test "$check_utests" != "no" ; then
  cat > $TMPC << EOF
#include <check.h>
int main(void) { suite_create("qemu test"); return 0; }
EOF
P
Paolo Bonzini 已提交
1606
  check_libs=`$pkgconfig --libs check`
L
Luiz Capitulino 已提交
1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617
  if compile_prog "" $check_libs ; then
    check_utests=yes
    libs_tools="$check_libs $libs_tools"
  else
    if test "$check_utests" = "yes" ; then
      feature_not_found "check"
    fi
    check_utests=no
  fi
fi # test "$check_utests"

B
balrog 已提交
1618 1619
##########################################
# bluez support probe
1620
if test "$bluez" != "no" ; then
1621 1622 1623 1624
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
P
Paolo Bonzini 已提交
1625 1626
  bluez_cflags=`$pkgconfig --cflags bluez 2> /dev/null`
  bluez_libs=`$pkgconfig --libs bluez 2> /dev/null`
1627
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1628
    bluez=yes
1629
    libs_softmmu="$bluez_libs $libs_softmmu"
1630
  else
1631 1632 1633
    if test "$bluez" = "yes" ; then
      feature_not_found "bluez"
    fi
1634 1635
    bluez="no"
  fi
B
balrog 已提交
1636 1637
fi

A
aliguori 已提交
1638 1639
##########################################
# kvm probe
1640
if test "$kvm" != "no" ; then
A
aliguori 已提交
1641 1642
    cat > $TMPC <<EOF
#include <linux/kvm.h>
1643
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
A
aliguori 已提交
1644 1645
#error Invalid KVM version
#endif
1646 1647 1648 1649 1650 1651 1652 1653 1654
#if !defined(KVM_CAP_USER_MEMORY)
#error Missing KVM capability KVM_CAP_USER_MEMORY
#endif
#if !defined(KVM_CAP_SET_TSS_ADDR)
#error Missing KVM capability KVM_CAP_SET_TSS_ADDR
#endif
#if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
#error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS
#endif
A
aliguori 已提交
1655 1656
int main(void) { return 0; }
EOF
A
aliguori 已提交
1657 1658
  if test "$kerneldir" != "" ; then
      kvm_cflags=-I"$kerneldir"/include
1659 1660 1661
      if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
         -a -d "$kerneldir/arch/x86/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
A
aliguori 已提交
1662 1663
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
A
Alexander Graf 已提交
1664 1665
	elif test "$cpu" = "s390x" -a -d "$kerneldir/arch/s390/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/s390/include"
1666 1667 1668
        elif test -d "$kerneldir/arch/$cpu/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
      fi
A
aliguori 已提交
1669
  else
1670
    kvm_cflags=`$pkgconfig --cflags kvm-kmod 2>/dev/null`
A
aliguori 已提交
1671
  fi
1672
  if compile_prog "$kvm_cflags" "" ; then
1673
    kvm=yes
1674 1675 1676 1677 1678 1679 1680
    cat > $TMPC <<EOF
#include <linux/kvm_para.h>
int main(void) { return 0; }
EOF
    if compile_prog "$kvm_cflags" "" ; then
      kvm_para=yes
    fi
A
aliguori 已提交
1681
  else
1682
    if test "$kvm" = "yes" ; then
1683
      if has awk && has grep; then
1684
        kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \
1685 1686
	| grep "error: " \
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
1687 1688 1689 1690 1691
        if test "$kvmerr" != "" ; then
          echo -e "${kvmerr}\n\
      NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
  recent kvm-kmod from http://sourceforge.net/projects/kvm."
        fi
1692
      fi
1693
      feature_not_found "kvm"
1694
    fi
1695
    kvm=no
A
aliguori 已提交
1696 1697 1698
  fi
fi

M
Michael S. Tsirkin 已提交
1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717
##########################################
# test for vhost net

if test "$vhost_net" != "no"; then
    if test "$kvm" != "no"; then
            cat > $TMPC <<EOF
    #include <linux/vhost.h>
    int main(void) { return 0; }
EOF
            if compile_prog "$kvm_cflags" "" ; then
                vhost_net=yes
            else
                if test "$vhost_net" = "yes" ; then
                    feature_not_found "vhost-net"
                fi
                vhost_net=no
            fi
    else
            if test "$vhost_net" = "yes" ; then
A
Aurelien Jarno 已提交
1718
                echo "NOTE: vhost-net feature requires KVM (--enable-kvm)."
M
Michael S. Tsirkin 已提交
1719 1720 1721 1722 1723 1724
                feature_not_found "vhost-net"
            fi
            vhost_net=no
    fi
fi

1725
##########################################
1726
# pthread probe
1727
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1728

C
Christoph Hellwig 已提交
1729
pthread=no
1730
cat > $TMPC << EOF
1731
#include <pthread.h>
1732
int main(void) { pthread_create(0,0,0,0); return 0; }
1733
EOF
1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744
if compile_prog "" "" ; then
  pthread=yes
else
  for pthread_lib in $PTHREADLIBS_LIST; do
    if compile_prog "" "$pthread_lib" ; then
      pthread=yes
      LIBS="$pthread_lib $LIBS"
      break
    fi
  done
fi
1745

1746
if test "$mingw32" != yes -a "$pthread" = no; then
C
Christoph Hellwig 已提交
1747 1748 1749 1750 1751
  echo
  echo "Error: pthread check failed"
  echo "Make sure to have the pthread libs and headers installed."
  echo
  exit 1
1752 1753
fi

1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795
##########################################
# rbd probe
if test "$rbd" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <rados/librados.h>
int main(void) { rados_initialize(0, NULL); return 0; }
EOF
  rbd_libs="-lrados -lcrypto"
  if compile_prog "" "$rbd_libs" ; then
    librados_too_old=no
    cat > $TMPC <<EOF
#include <stdio.h>
#include <rados/librados.h>
#ifndef CEPH_OSD_TMAP_SET
#error missing CEPH_OSD_TMAP_SET
#endif
int main(void) {
    int (*func)(const rados_pool_t pool, uint64_t *snapid) = rados_selfmanaged_snap_create;
    rados_initialize(0, NULL);
    return 0;
}
EOF
    if compile_prog "" "$rbd_libs" ; then
      rbd=yes
      libs_tools="$rbd_libs $libs_tools"
      libs_softmmu="$rbd_libs $libs_softmmu"
    else
      rbd=no
      librados_too_old=yes
    fi
  else
    if test "$rbd" = "yes" ; then
      feature_not_found "rados block device"
    fi
    rbd=no
  fi
  if test "$librados_too_old" = "yes" ; then
    echo "-> Your librados version is too old - upgrade needed to have rbd support"
  fi
fi

1796 1797 1798 1799 1800 1801 1802
##########################################
# linux-aio probe

if test "$linux_aio" != "no" ; then
  cat > $TMPC <<EOF
#include <libaio.h>
#include <sys/eventfd.h>
S
Scott Wood 已提交
1803
#include <stddef.h>
1804 1805 1806 1807
int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
EOF
  if compile_prog "" "-laio" ; then
    linux_aio=yes
P
Paul Brook 已提交
1808 1809
    libs_softmmu="$libs_softmmu -laio"
    libs_tools="$libs_tools -laio"
1810 1811 1812 1813
  else
    if test "$linux_aio" = "yes" ; then
      feature_not_found "linux AIO"
    fi
1814
    linux_aio=no
1815 1816 1817
  fi
fi

1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838
##########################################
# attr probe

if test "$attr" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <sys/types.h>
#include <attr/xattr.h>
int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
EOF
  if compile_prog "" "-lattr" ; then
    attr=yes
    LIBS="-lattr $LIBS"
  else
    if test "$attr" = "yes" ; then
      feature_not_found "ATTR"
    fi
    attr=no
  fi
fi

A
aliguori 已提交
1839 1840 1841
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
1842
#include <sys/types.h>
A
aliguori 已提交
1843
#include <sys/uio.h>
B
blueswir1 已提交
1844
#include <unistd.h>
A
aliguori 已提交
1845 1846 1847
int main(void) { struct iovec iov; return 0; }
EOF
iovec=no
1848
if compile_prog "" "" ; then
A
aliguori 已提交
1849 1850 1851
  iovec=yes
fi

1852 1853 1854 1855 1856 1857 1858 1859 1860
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
int main(void) { preadv; }
EOF
preadv=no
1861
if compile_prog "" "" ; then
1862 1863 1864
  preadv=yes
fi

1865 1866
##########################################
# fdt probe
1867
if test "$fdt" != "no" ; then
J
Juan Quintela 已提交
1868 1869
  fdt_libs="-lfdt"
  cat > $TMPC << EOF
1870 1871
int main(void) { return 0; }
EOF
1872
  if compile_prog "" "$fdt_libs" ; then
1873
    fdt=yes
J
Juan Quintela 已提交
1874
    libs_softmmu="$fdt_libs $libs_softmmu"
1875 1876 1877 1878 1879
  else
    if test "$fdt" = "yes" ; then
      feature_not_found "fdt"
    fi
    fdt=no
1880 1881 1882
  fi
fi

1883 1884 1885 1886 1887 1888
#
# Check for xxxat() functions when we are building linux-user
# emulator.  This is done because older glibc versions don't
# have syscall stubs for these implemented.
#
atfile=no
1889
cat > $TMPC << EOF
1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901
#define _ATFILE_SOURCE
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>

int
main(void)
{
	/* try to unlink nonexisting file */
	return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
}
EOF
1902
if compile_prog "" "" ; then
1903
  atfile=yes
1904 1905
fi

A
aurel32 已提交
1906
# Check for inotify functions when we are building linux-user
1907 1908 1909 1910 1911
# emulator.  This is done because older glibc versions don't
# have syscall stubs for these implemented.  In that case we
# don't provide them even if kernel supports them.
#
inotify=no
1912
cat > $TMPC << EOF
1913 1914 1915 1916 1917 1918
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
1919
	return inotify_init();
1920 1921
}
EOF
1922
if compile_prog "" "" ; then
1923
  inotify=yes
1924 1925
fi

1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940
inotify1=no
cat > $TMPC << EOF
#include <sys/inotify.h>

int
main(void)
{
    /* try to start inotify */
    return inotify_init1(0);
}
EOF
if compile_prog "" "" ; then
  inotify1=yes
fi

R
Riku Voipio 已提交
1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954
# check if utimensat and futimens are supported
utimens=no
cat > $TMPC << EOF
#define _ATFILE_SOURCE
#include <stddef.h>
#include <fcntl.h>

int main(void)
{
    utimensat(AT_FDCWD, "foo", NULL, 0);
    futimens(0, NULL);
    return 0;
}
EOF
1955
if compile_prog "" "" ; then
R
Riku Voipio 已提交
1956 1957 1958
  utimens=yes
fi

R
Riku Voipio 已提交
1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971
# check if pipe2 is there
pipe2=no
cat > $TMPC << EOF
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    int pipefd[2];
    pipe2(pipefd, O_CLOEXEC);
    return 0;
}
EOF
1972
if compile_prog "" "" ; then
R
Riku Voipio 已提交
1973 1974 1975
  pipe2=yes
fi

K
Kevin Wolf 已提交
1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991
# check if accept4 is there
accept4=no
cat > $TMPC << EOF
#include <sys/socket.h>
#include <stddef.h>

int main(void)
{
    accept4(0, NULL, NULL, SOCK_CLOEXEC);
    return 0;
}
EOF
if compile_prog "" "" ; then
  accept4=yes
fi

1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006
# check if tee/splice is there. vmsplice was added same time.
splice=no
cat > $TMPC << EOF
#include <unistd.h>
#include <fcntl.h>
#include <limits.h>

int main(void)
{
    int len, fd;
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
    return 0;
}
EOF
2007
if compile_prog "" "" ; then
2008 2009 2010
  splice=yes
fi

M
Marcelo Tosatti 已提交
2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025
##########################################
# signalfd probe
signalfd="no"
cat > $TMPC << EOF
#define _GNU_SOURCE
#include <unistd.h>
#include <sys/syscall.h>
#include <signal.h>
int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
EOF

if compile_prog "" "" ; then
  signalfd=yes
fi

R
Riku Voipio 已提交
2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040
# check if eventfd is supported
eventfd=no
cat > $TMPC << EOF
#include <sys/eventfd.h>

int main(void)
{
    int efd = eventfd(0, 0);
    return 0;
}
EOF
if compile_prog "" "" ; then
  eventfd=yes
fi

2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051
# check for fallocate
fallocate=no
cat > $TMPC << EOF
#include <fcntl.h>

int main(void)
{
    fallocate(0, 0, 0, 0);
    return 0;
}
EOF
2052
if compile_prog "$ARCH_CFLAGS" "" ; then
2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066
  fallocate=yes
fi

# check for dup3
dup3=no
cat > $TMPC << EOF
#include <unistd.h>

int main(void)
{
    dup3(0, 0, 0);
    return 0;
}
EOF
2067
if compile_prog "" "" ; then
2068 2069 2070
  dup3=yes
fi

2071
# Check if tools are available to build documentation.
J
Juan Quintela 已提交
2072
if test "$docs" != "no" ; then
2073
  if has makeinfo && has pod2man; then
J
Juan Quintela 已提交
2074
    docs=yes
2075
  else
J
Juan Quintela 已提交
2076 2077
    if test "$docs" = "yes" ; then
      feature_not_found "docs"
2078
    fi
J
Juan Quintela 已提交
2079
    docs=no
2080
  fi
2081 2082
fi

S
Stefan Weil 已提交
2083
# Search for bswap_32 function
2084 2085 2086 2087 2088
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
2089
if compile_prog "" "" ; then
2090 2091 2092
  byteswap_h=yes
fi

S
Stefan Weil 已提交
2093
# Search for bswap_32 function
2094 2095 2096 2097 2098 2099 2100
bswap_h=no
cat > $TMPC << EOF
#include <sys/endian.h>
#include <sys/types.h>
#include <machine/bswap.h>
int main(void) { return bswap32(0); }
EOF
2101
if compile_prog "" "" ; then
2102 2103 2104
  bswap_h=yes
fi

A
aliguori 已提交
2105 2106 2107 2108 2109 2110 2111 2112
##########################################
# Do we need librt
cat > $TMPC <<EOF
#include <signal.h>
#include <time.h>
int main(void) { clockid_t id; return clock_gettime(id, NULL); }
EOF

2113
if compile_prog "" "" ; then
2114
  :
2115
elif compile_prog "" "-lrt" ; then
2116
  LIBS="-lrt $LIBS"
A
aliguori 已提交
2117 2118
fi

2119
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
2120
        "$aix" != "yes" -a "$haiku" != "yes" ; then
2121 2122 2123
    libs_softmmu="-lutil $libs_softmmu"
fi

2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135
##########################################
# check if the compiler defines offsetof

need_offsetof=yes
cat > $TMPC << EOF
#include <stddef.h>
int main(void) { struct s { int f; }; return offsetof(struct s, f); }
EOF
if compile_prog "" "" ; then
    need_offsetof=no
fi

2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152
##########################################
# check if the compiler understands attribute warn_unused_result
#
# This could be smarter, but gcc -Werror does not error out even when warning
# about attribute warn_unused_result

gcc_attribute_warn_unused_result=no
cat > $TMPC << EOF
#if defined(__GNUC__) && (__GNUC__ < 4) && defined(__GNUC_MINOR__) && (__GNUC__ < 4)
#error gcc 3.3 or older
#endif
int main(void) { return 0;}
EOF
if compile_prog "" ""; then
    gcc_attribute_warn_unused_result=yes
fi

2153 2154 2155 2156 2157 2158 2159 2160
# spice probe
if test "$spice" != "no" ; then
  cat > $TMPC << EOF
#include <spice.h>
int main(void) { spice_server_new(); return 0; }
EOF
  spice_cflags=$($pkgconfig --cflags spice-protocol spice-server 2>/dev/null)
  spice_libs=$($pkgconfig --libs spice-protocol spice-server 2>/dev/null)
2161
  if $pkgconfig --atleast-version=0.5.3 spice-server >/dev/null 2>&1 && \
2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175
     compile_prog "$spice_cflags" "$spice_libs" ; then
    spice="yes"
    libs_softmmu="$libs_softmmu $spice_libs"
    QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
  else
    if test "$spice" = "yes" ; then
      feature_not_found "spice"
    fi
    spice="no"
  fi
fi

##########################################

B
Blue Swirl 已提交
2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187
##########################################
# check if we have fdatasync

fdatasync=no
cat > $TMPC << EOF
#include <unistd.h>
int main(void) { return fdatasync(0); }
EOF
if compile_prog "" "" ; then
    fdatasync=yes
fi

A
Andreas Färber 已提交
2188 2189 2190 2191 2192 2193 2194
##########################################
# check if we have madvise

madvise=no
cat > $TMPC << EOF
#include <sys/types.h>
#include <sys/mman.h>
S
Scott Wood 已提交
2195
#include <stddef.h>
A
Andreas Färber 已提交
2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207
int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
EOF
if compile_prog "" "" ; then
    madvise=yes
fi

##########################################
# check if we have posix_madvise

posix_madvise=no
cat > $TMPC << EOF
#include <sys/mman.h>
S
Scott Wood 已提交
2208
#include <stddef.h>
A
Andreas Färber 已提交
2209 2210 2211 2212 2213 2214
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
EOF
if compile_prog "" "" ; then
    posix_madvise=yes
fi

2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226
##########################################
# check if trace backend exists

sh "$source_path/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null
if test "$?" -ne 0 ; then
  echo
  echo "Error: invalid trace backend"
  echo "Please choose a supported trace backend."
  echo
  exit 1
fi

2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243
##########################################
# For 'ust' backend, test if ust headers are present
if test "$trace_backend" = "ust"; then
  cat > $TMPC << EOF
#include <ust/tracepoint.h>
#include <ust/marker.h>
int main(void) { return 0; }
EOF
  if compile_prog "" "" ; then
    LIBS="-lust $LIBS"
  else
    echo
    echo "Error: Trace backend 'ust' missing libust header files"
    echo
    exit 1
  fi
fi
2244 2245 2246 2247 2248 2249 2250 2251 2252 2253

##########################################
# For 'dtrace' backend, test if 'dtrace' command is present
if test "$trace_backend" = "dtrace"; then
  if ! has 'dtrace' ; then
    echo
    echo "Error: dtrace command is not found in PATH $PATH"
    echo
    exit 1
  fi
2254 2255 2256 2257
  trace_backend_stap="no"
  if has 'stap' ; then
    trace_backend_stap="yes"
  fi
2258 2259
fi

2260
##########################################
2261 2262 2263 2264
# End of CC checks
# After here, no more $cc or $ld runs

if test "$debug" = "no" ; then
2265
  CFLAGS="-O2 $CFLAGS"
2266
fi
J
Juan Quintela 已提交
2267

2268 2269
# Consult white-list to determine whether to enable werror
# by default.  Only enable by default for git builds
2270 2271
z_version=`cut -f3 -d. $source_path/VERSION`

2272 2273 2274 2275 2276 2277 2278 2279 2280
if test -z "$werror" ; then
    if test "$z_version" = "50" -a \
        "$linux" = "yes" ; then
        werror="yes"
    else
        werror="no"
    fi
fi

2281 2282 2283 2284 2285 2286 2287 2288 2289 2290
# Disable zero malloc errors for official releases unless explicitly told to
# enable/disable
if test -z "$zero_malloc" ; then
    if test "$z_version" = "50" ; then
	zero_malloc="no"
    else
	zero_malloc="yes"
    fi
fi

2291
if test "$werror" = "yes" ; then
J
Juan Quintela 已提交
2292
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
2293 2294 2295 2296
fi

if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
2297
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
2298 2299 2300
    fi
fi

2301 2302 2303 2304 2305 2306 2307 2308 2309
# Use ASLR, no-SEH and DEP if available
if test "$mingw32" = "yes" ; then
    for flag in --dynamicbase --no-seh --nxcompat; do
        if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
            LDFLAGS="-Wl,$flag $LDFLAGS"
        fi
    done
fi

2310
confdir=$sysconfdir$confsuffix
2311

2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332
tools=
if test "$softmmu" = yes ; then
  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
      tools="qemu-nbd\$(EXESUF) $tools"
    if [ "$check_utests" = "yes" ]; then
      tools="check-qint check-qstring check-qdict check-qlist $tools"
      tools="check-qfloat check-qjson $tools"
    fi
  fi
fi

# Mac OS X ships with a broken assembler
roms=
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
        "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
        "$softmmu" = yes ; then
  roms="optionrom"
fi


B
bellard 已提交
2333
echo "Install prefix    $prefix"
2334 2335
echo "BIOS directory    `eval echo $datadir`"
echo "binary directory  `eval echo $bindir`"
2336
echo "config directory  `eval echo $sysconfdir`"
B
bellard 已提交
2337
if test "$mingw32" = "no" ; then
2338
echo "Manual directory  `eval echo $mandir`"
B
bellard 已提交
2339
echo "ELF interp prefix $interp_prefix"
B
bellard 已提交
2340
fi
2341
echo "Source path       $source_path"
B
bellard 已提交
2342
echo "C compiler        $cc"
B
bellard 已提交
2343
echo "Host C compiler   $host_cc"
2344
echo "CFLAGS            $CFLAGS"
J
Juan Quintela 已提交
2345
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
2346
echo "LDFLAGS           $LDFLAGS"
B
bellard 已提交
2347
echo "make              $make"
2348
echo "install           $install"
B
bellard 已提交
2349
echo "host CPU          $cpu"
B
bellard 已提交
2350
echo "host big endian   $bigendian"
2351
echo "target list       $target_list"
2352
echo "tcg debug enabled $debug_tcg"
L
Luiz Capitulino 已提交
2353
echo "Mon debug enabled $debug_mon"
B
bellard 已提交
2354
echo "gprof enabled     $gprof"
2355
echo "sparse enabled    $sparse"
2356
echo "strip binaries    $strip_opt"
2357
echo "profiler          $profiler"
B
bellard 已提交
2358
echo "static build      $static"
2359
echo "-Werror enabled   $werror"
2360 2361 2362
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
2363
echo "SDL support       $sdl"
B
balrog 已提交
2364
echo "curses support    $curses"
A
Alexander Graf 已提交
2365
echo "curl support      $curl"
L
Luiz Capitulino 已提交
2366
echo "check support     $check_utests"
B
bellard 已提交
2367
echo "mingw32 support   $mingw32"
M
malc 已提交
2368 2369
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
2370
echo "Block whitelist   $block_drv_whitelist"
2371
echo "Mixer emulation   $mixemu"
2372
echo "VNC TLS support   $vnc_tls"
2373
echo "VNC SASL support  $vnc_sasl"
2374
echo "VNC JPEG support  $vnc_jpeg"
C
Corentin Chary 已提交
2375
echo "VNC PNG support   $vnc_png"
C
Corentin Chary 已提交
2376
echo "VNC thread        $vnc_thread"
2377 2378 2379
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
2380
echo "xen support       $xen"
A
aurel32 已提交
2381
echo "brlapi support    $brlapi"
2382
echo "bluez  support    $bluez"
J
Juan Quintela 已提交
2383
echo "Documentation     $docs"
2384 2385
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
2386
echo "NPTL support      $nptl"
P
Paul Brook 已提交
2387
echo "GUEST_BASE        $guest_base"
2388
echo "PIE user targets  $user_pie"
2389
echo "vde support       $vde"
2390
echo "IO thread         $io_thread"
2391
echo "Linux AIO support $linux_aio"
2392
echo "ATTR/XATTR support $attr"
T
ths 已提交
2393
echo "Install blobs     $blobs"
2394
echo "KVM support       $kvm"
2395
echo "fdt support       $fdt"
2396
echo "preadv support    $preadv"
B
Blue Swirl 已提交
2397
echo "fdatasync         $fdatasync"
A
Andreas Färber 已提交
2398 2399
echo "madvise           $madvise"
echo "posix_madvise     $posix_madvise"
2400
echo "uuid support      $uuid"
M
Michael S. Tsirkin 已提交
2401
echo "vhost-net support $vhost_net"
2402
echo "Trace backend     $trace_backend"
P
Prerna Saxena 已提交
2403
echo "Trace output file $trace_file-<pid>"
2404
echo "spice support     $spice"
2405
echo "rbd support       $rbd"
B
bellard 已提交
2406

2407
if test $sdl_too_old = "yes"; then
B
bellard 已提交
2408
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
2409
fi
B
bellard 已提交
2410

2411
config_host_mak="config-host.mak"
2412
config_host_ld="config-host.ld"
2413 2414 2415 2416 2417 2418

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

2419
echo all: >> $config_host_mak
2420 2421 2422 2423 2424 2425
echo "prefix=$prefix" >> $config_host_mak
echo "bindir=$bindir" >> $config_host_mak
echo "mandir=$mandir" >> $config_host_mak
echo "datadir=$datadir" >> $config_host_mak
echo "sysconfdir=$sysconfdir" >> $config_host_mak
echo "docdir=$docdir" >> $config_host_mak
2426
echo "confdir=$confdir" >> $config_host_mak
2427

A
aurel32 已提交
2428
case "$cpu" in
2429
  i386|x86_64|alpha|cris|hppa|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
2430
    ARCH=$cpu
A
aurel32 已提交
2431
  ;;
2432
  armv4b|armv4l)
2433
    ARCH=arm
A
aurel32 已提交
2434 2435
  ;;
esac
2436
echo "ARCH=$ARCH" >> $config_host_mak
2437
if test "$debug_tcg" = "yes" ; then
2438
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
2439
fi
L
Luiz Capitulino 已提交
2440 2441 2442
if test "$debug_mon" = "yes" ; then
  echo "CONFIG_DEBUG_MONITOR=y" >> $config_host_mak
fi
P
Paul Brook 已提交
2443
if test "$debug" = "yes" ; then
2444
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
P
Paul Brook 已提交
2445
fi
2446
if test "$strip_opt" = "yes" ; then
2447
  echo "STRIP=${strip}" >> $config_host_mak
2448
fi
B
bellard 已提交
2449
if test "$bigendian" = "yes" ; then
2450
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
2451
fi
2452
echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
B
bellard 已提交
2453
if test "$mingw32" = "yes" ; then
2454
  echo "CONFIG_WIN32=y" >> $config_host_mak
2455 2456 2457 2458 2459 2460 2461 2462 2463
  rc_version=`cat $source_path/VERSION`
  version_major=${rc_version%%.*}
  rc_version=${rc_version#*.}
  version_minor=${rc_version%%.*}
  rc_version=${rc_version#*.}
  version_subminor=${rc_version%%.*}
  version_micro=0
  echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
  echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
2464
else
J
Juan Quintela 已提交
2465
  echo "CONFIG_POSIX=y" >> $config_host_mak
M
Mark McLoughlin 已提交
2466 2467 2468 2469
fi

if test "$linux" = "yes" ; then
  echo "CONFIG_LINUX=y" >> $config_host_mak
B
bellard 已提交
2470
fi
2471

2472
if test "$darwin" = "yes" ; then
2473
  echo "CONFIG_DARWIN=y" >> $config_host_mak
2474
fi
M
malc 已提交
2475 2476

if test "$aix" = "yes" ; then
2477
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
2478 2479
fi

B
bellard 已提交
2480
if test "$solaris" = "yes" ; then
2481
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
2482
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
T
ths 已提交
2483
  if test "$needs_libsunmath" = "yes" ; then
2484
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
T
ths 已提交
2485
  fi
B
bellard 已提交
2486
fi
2487 2488 2489
if test "$haiku" = "yes" ; then
  echo "CONFIG_HAIKU=y" >> $config_host_mak
fi
2490
if test "$static" = "yes" ; then
2491
  echo "CONFIG_STATIC=y" >> $config_host_mak
B
bellard 已提交
2492
fi
2493
if test $profiler = "yes" ; then
2494
  echo "CONFIG_PROFILER=y" >> $config_host_mak
2495
fi
B
bellard 已提交
2496
if test "$slirp" = "yes" ; then
2497
  echo "CONFIG_SLIRP=y" >> $config_host_mak
2498
  QEMU_CFLAGS="-I\$(SRC_PATH)/slirp $QEMU_CFLAGS"
B
bellard 已提交
2499
fi
2500
if test "$vde" = "yes" ; then
2501
  echo "CONFIG_VDE=y" >> $config_host_mak
2502
fi
M
malc 已提交
2503
for card in $audio_card_list; do
P
pbrook 已提交
2504
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
2505
    echo "$def=y" >> $config_host_mak
M
malc 已提交
2506
done
2507
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
M
malc 已提交
2508
for drv in $audio_drv_list; do
P
pbrook 已提交
2509
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
2510
    echo "$def=y" >> $config_host_mak
M
malc 已提交
2511
    if test "$drv" = "fmod"; then
2512
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
M
malc 已提交
2513 2514
    fi
done
2515 2516 2517
if test "$audio_pt_int" = "yes" ; then
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
fi
2518 2519 2520
if test "$audio_win_int" = "yes" ; then
  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
fi
2521
echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
2522
if test "$mixemu" = "yes" ; then
2523
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
2524
fi
2525
if test "$vnc_tls" = "yes" ; then
2526
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
2527
  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
2528
fi
2529
if test "$vnc_sasl" = "yes" ; then
2530
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
2531
  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
2532
fi
2533
if test "$vnc_jpeg" != "no" ; then
2534 2535 2536
  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
  echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak
fi
2537
if test "$vnc_png" != "no" ; then
C
Corentin Chary 已提交
2538 2539 2540
  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
  echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak
fi
2541
if test "$vnc_thread" != "no" ; then
C
Corentin Chary 已提交
2542 2543 2544
  echo "CONFIG_VNC_THREAD=y" >> $config_host_mak
  echo "CONFIG_THREAD=y" >> $config_host_mak
fi
2545
if test "$fnmatch" = "yes" ; then
2546
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
2547
fi
2548 2549 2550
if test "$uuid" = "yes" ; then
  echo "CONFIG_UUID=y" >> $config_host_mak
fi
2551
qemu_version=`head $source_path/VERSION`
2552
echo "VERSION=$qemu_version" >>$config_host_mak
2553
echo "PKGVERSION=$pkgversion" >>$config_host_mak
2554 2555
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
J
Juan Quintela 已提交
2556
if [ "$docs" = "yes" ] ; then
2557
  echo "BUILD_DOCS=yes" >> $config_host_mak
2558
fi
2559
if test "$sdl" = "yes" ; then
2560
  echo "CONFIG_SDL=y" >> $config_host_mak
2561
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
2562 2563
fi
if test "$cocoa" = "yes" ; then
2564
  echo "CONFIG_COCOA=y" >> $config_host_mak
B
balrog 已提交
2565 2566
fi
if test "$curses" = "yes" ; then
2567
  echo "CONFIG_CURSES=y" >> $config_host_mak
2568
fi
2569
if test "$atfile" = "yes" ; then
2570
  echo "CONFIG_ATFILE=y" >> $config_host_mak
2571
fi
R
Riku Voipio 已提交
2572
if test "$utimens" = "yes" ; then
2573
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
R
Riku Voipio 已提交
2574
fi
R
Riku Voipio 已提交
2575
if test "$pipe2" = "yes" ; then
2576
  echo "CONFIG_PIPE2=y" >> $config_host_mak
R
Riku Voipio 已提交
2577
fi
K
Kevin Wolf 已提交
2578 2579 2580
if test "$accept4" = "yes" ; then
  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
fi
2581
if test "$splice" = "yes" ; then
2582
  echo "CONFIG_SPLICE=y" >> $config_host_mak
2583
fi
R
Riku Voipio 已提交
2584 2585 2586
if test "$eventfd" = "yes" ; then
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
fi
2587 2588 2589 2590 2591 2592
if test "$fallocate" = "yes" ; then
  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
fi
if test "$dup3" = "yes" ; then
  echo "CONFIG_DUP3=y" >> $config_host_mak
fi
2593
if test "$inotify" = "yes" ; then
2594
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
2595
fi
2596 2597 2598
if test "$inotify1" = "yes" ; then
  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
fi
2599 2600 2601 2602 2603 2604
if test "$byteswap_h" = "yes" ; then
  echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
fi
if test "$bswap_h" = "yes" ; then
  echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
fi
A
Alexander Graf 已提交
2605
if test "$curl" = "yes" ; then
2606
  echo "CONFIG_CURL=y" >> $config_host_mak
J
Juan Quintela 已提交
2607
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
A
Alexander Graf 已提交
2608
fi
A
aurel32 已提交
2609
if test "$brlapi" = "yes" ; then
2610
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
A
aurel32 已提交
2611
fi
B
balrog 已提交
2612
if test "$bluez" = "yes" ; then
2613
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
2614
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
B
balrog 已提交
2615
fi
2616
if test "$xen" = "yes" ; then
J
Juan Quintela 已提交
2617
  echo "CONFIG_XEN=y" >> $config_host_mak
2618
fi
2619
if test "$io_thread" = "yes" ; then
2620
  echo "CONFIG_IOTHREAD=y" >> $config_host_mak
C
Corentin Chary 已提交
2621
  echo "CONFIG_THREAD=y" >> $config_host_mak
2622
fi
2623 2624 2625
if test "$linux_aio" = "yes" ; then
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
fi
2626 2627 2628 2629 2630 2631 2632 2633
if test "$attr" = "yes" ; then
  echo "CONFIG_ATTR=y" >> $config_host_mak
fi
if test "$linux" = "yes" ; then
  if test "$attr" = "yes" ; then
    echo "CONFIG_VIRTFS=y" >> $config_host_mak
  fi
fi
T
ths 已提交
2634
if test "$blobs" = "yes" ; then
2635
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
T
ths 已提交
2636
fi
A
aliguori 已提交
2637
if test "$iovec" = "yes" ; then
2638
  echo "CONFIG_IOVEC=y" >> $config_host_mak
A
aliguori 已提交
2639
fi
2640
if test "$preadv" = "yes" ; then
2641
  echo "CONFIG_PREADV=y" >> $config_host_mak
2642
fi
2643
if test "$fdt" = "yes" ; then
2644
  echo "CONFIG_FDT=y" >> $config_host_mak
2645
fi
M
Marcelo Tosatti 已提交
2646 2647 2648
if test "$signalfd" = "yes" ; then
  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
fi
2649 2650 2651
if test "$need_offsetof" = "yes" ; then
  echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
fi
2652 2653 2654
if test "$gcc_attribute_warn_unused_result" = "yes" ; then
  echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak
fi
B
Blue Swirl 已提交
2655 2656 2657
if test "$fdatasync" = "yes" ; then
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
fi
A
Andreas Färber 已提交
2658 2659 2660 2661 2662 2663
if test "$madvise" = "yes" ; then
  echo "CONFIG_MADVISE=y" >> $config_host_mak
fi
if test "$posix_madvise" = "yes" ; then
  echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
fi
2664

2665 2666 2667 2668
if test "$spice" = "yes" ; then
  echo "CONFIG_SPICE=y" >> $config_host_mak
fi

2669
# XXX: suppress that
B
bellard 已提交
2670
if [ "$bsd" = "yes" ] ; then
2671
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
2672 2673
fi

2674
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
2675

2676 2677 2678
if test "$zero_malloc" = "yes" ; then
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
fi
2679 2680 2681
if test "$rbd" = "yes" ; then
  echo "CONFIG_RBD=y" >> $config_host_mak
fi
2682

2683 2684 2685
# USB host support
case "$usb" in
linux)
2686
  echo "HOST_USB=linux" >> $config_host_mak
2687 2688
;;
bsd)
2689
  echo "HOST_USB=bsd" >> $config_host_mak
2690 2691
;;
*)
2692
  echo "HOST_USB=stub" >> $config_host_mak
2693 2694 2695
;;
esac

2696
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
2697 2698 2699
if test "$trace_backend" = "simple"; then
  echo "CONFIG_SIMPLE_TRACE=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
2700 2701 2702 2703
# Set the appropriate trace file.
if test "$trace_backend" = "simple"; then
  trace_file="\"$trace_file-%u\""
fi
2704 2705 2706
if test "$trace_backend" = "dtrace" -a "$trace_backend_stap" = "yes" ; then
  echo "CONFIG_SYSTEMTAP_TRACE=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
2707 2708
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak

2709 2710
echo "TOOLS=$tools" >> $config_host_mak
echo "ROMS=$roms" >> $config_host_mak
2711 2712 2713 2714 2715 2716
echo "MAKE=$make" >> $config_host_mak
echo "INSTALL=$install" >> $config_host_mak
echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak
echo "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak
echo "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak
echo "CC=$cc" >> $config_host_mak
P
Paolo Bonzini 已提交
2717
echo "CC_I386=$cc_i386" >> $config_host_mak
2718 2719 2720 2721
echo "HOST_CC=$host_cc" >> $config_host_mak
if test "$sparse" = "yes" ; then
  echo "CC      := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
  echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
J
Juan Quintela 已提交
2722
  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
2723 2724 2725 2726
fi
echo "AR=$ar" >> $config_host_mak
echo "OBJCOPY=$objcopy" >> $config_host_mak
echo "LD=$ld" >> $config_host_mak
2727
echo "WINDRES=$windres" >> $config_host_mak
2728
echo "CFLAGS=$CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
2729
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
2730
echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
2731
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
2732 2733
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
J
Juan Quintela 已提交
2734
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
2735
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
2736 2737
echo "EXESUF=$EXESUF" >> $config_host_mak

2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749
# generate list of library paths for linker script

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

if test -f ${config_host_ld}~ ; then
  if cmp -s $config_host_ld ${config_host_ld}~ ; then
    mv ${config_host_ld}~ $config_host_ld
  else
    rm ${config_host_ld}~
  fi
fi

B
Blue Swirl 已提交
2750 2751 2752 2753 2754 2755
for d in libdis libdis-user; do
    mkdir -p $d
    rm -f $d/Makefile
    ln -s $source_path/Makefile.dis $d/Makefile
    echo > $d/config.mak
done
2756 2757 2758
if test "$static" = "no" -a "$user_pie" = "yes" ; then
  echo "QEMU_CFLAGS+=-fpie" > libdis-user/config.mak
fi
B
Blue Swirl 已提交
2759

2760
for target in $target_list; do
2761
target_dir="$target"
2762
config_target_mak=$target_dir/config-target.mak
B
Blue Swirl 已提交
2763
target_arch2=`echo $target | cut -d '-' -f 1`
2764
target_bigendian="no"
2765

2766
case "$target_arch2" in
2767
  armeb|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus)
2768 2769 2770
  target_bigendian=yes
  ;;
esac
2771
target_softmmu="no"
B
bellard 已提交
2772
target_user_only="no"
2773 2774
target_linux_user="no"
target_darwin_user="no"
B
blueswir1 已提交
2775
target_bsd_user="no"
P
pbrook 已提交
2776
case "$target" in
B
Blue Swirl 已提交
2777
  ${target_arch2}-softmmu)
P
pbrook 已提交
2778 2779
    target_softmmu="yes"
    ;;
B
Blue Swirl 已提交
2780
  ${target_arch2}-linux-user)
2781 2782 2783 2784
    if test "$linux" != "yes" ; then
      echo "ERROR: Target '$target' is only available on a Linux host"
      exit 1
    fi
P
pbrook 已提交
2785 2786 2787
    target_user_only="yes"
    target_linux_user="yes"
    ;;
B
Blue Swirl 已提交
2788
  ${target_arch2}-darwin-user)
2789 2790 2791 2792
    if test "$darwin" != "yes" ; then
      echo "ERROR: Target '$target' is only available on a Darwin host"
      exit 1
    fi
P
pbrook 已提交
2793 2794 2795
    target_user_only="yes"
    target_darwin_user="yes"
    ;;
B
Blue Swirl 已提交
2796
  ${target_arch2}-bsd-user)
B
Blue Swirl 已提交
2797
    if test "$bsd" != "yes" ; then
2798 2799 2800
      echo "ERROR: Target '$target' is only available on a BSD host"
      exit 1
    fi
B
blueswir1 已提交
2801 2802 2803
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
P
pbrook 已提交
2804 2805 2806 2807 2808
  *)
    echo "ERROR: Target '$target' not recognised"
    exit 1
    ;;
esac
2809

2810
mkdir -p $target_dir
B
bellard 已提交
2811
mkdir -p $target_dir/fpu
B
bellard 已提交
2812
mkdir -p $target_dir/tcg
G
Gerd Hoffmann 已提交
2813
mkdir -p $target_dir/ide
B
blueswir1 已提交
2814
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
B
bellard 已提交
2815 2816 2817
  mkdir -p $target_dir/nwfpe
fi

B
bellard 已提交
2818 2819 2820 2821 2822 2823
#
# don't use ln -sf as not all "ln -sf" over write the file/link
#
rm -f $target_dir/Makefile
ln -s $source_path/Makefile.target $target_dir/Makefile

2824

2825
echo "# Automatically generated by configure - do not modify" > $config_target_mak
B
bellard 已提交
2826

P
pbrook 已提交
2827
bflt="no"
2828
target_nptl="no"
B
Blue Swirl 已提交
2829
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
P
Paolo Bonzini 已提交
2830
echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
P
pbrook 已提交
2831
gdb_xml_files=""
A
aliguori 已提交
2832

2833
TARGET_ARCH="$target_arch2"
2834
TARGET_BASE_ARCH=""
2835
TARGET_ABI_DIR=""
2836

B
Blue Swirl 已提交
2837
case "$target_arch2" in
A
aurel32 已提交
2838
  i386)
P
Paul Brook 已提交
2839
    target_phys_bits=32
A
aurel32 已提交
2840 2841
  ;;
  x86_64)
2842
    TARGET_BASE_ARCH=i386
P
Paul Brook 已提交
2843
    target_phys_bits=64
A
aurel32 已提交
2844 2845
  ;;
  alpha)
P
Paul Brook 已提交
2846
    target_phys_bits=64
R
Richard Henderson 已提交
2847
    target_nptl="yes"
A
aurel32 已提交
2848 2849
  ;;
  arm|armeb)
J
Juan Quintela 已提交
2850
    TARGET_ARCH=arm
A
aurel32 已提交
2851
    bflt="yes"
2852
    target_nptl="yes"
P
pbrook 已提交
2853
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
P
Paul Brook 已提交
2854
    target_phys_bits=32
A
aurel32 已提交
2855 2856
  ;;
  cris)
E
edgar_igl 已提交
2857
    target_nptl="yes"
P
Paul Brook 已提交
2858
    target_phys_bits=32
A
aurel32 已提交
2859 2860 2861
  ;;
  m68k)
    bflt="yes"
P
pbrook 已提交
2862
    gdb_xml_files="cf-core.xml cf-fp.xml"
P
Paul Brook 已提交
2863
    target_phys_bits=32
A
aurel32 已提交
2864
  ;;
2865 2866 2867 2868 2869
  microblaze)
    bflt="yes"
    target_nptl="yes"
    target_phys_bits=32
  ;;
J
Juan Quintela 已提交
2870
  mips|mipsel)
J
Juan Quintela 已提交
2871
    TARGET_ARCH=mips
2872
    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
P
Paul Brook 已提交
2873
    target_nptl="yes"
P
Paul Brook 已提交
2874
    target_phys_bits=64
A
aurel32 已提交
2875 2876
  ;;
  mipsn32|mipsn32el)
J
Juan Quintela 已提交
2877
    TARGET_ARCH=mipsn32
2878
    TARGET_BASE_ARCH=mips
2879
    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
P
Paul Brook 已提交
2880
    target_phys_bits=64
A
aurel32 已提交
2881 2882
  ;;
  mips64|mips64el)
J
Juan Quintela 已提交
2883
    TARGET_ARCH=mips64
2884
    TARGET_BASE_ARCH=mips
2885
    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
P
Paul Brook 已提交
2886
    target_phys_bits=64
A
aurel32 已提交
2887 2888
  ;;
  ppc)
2889
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2890
    target_phys_bits=32
2891
    target_nptl="yes"
A
aurel32 已提交
2892 2893
  ;;
  ppcemb)
2894
    TARGET_BASE_ARCH=ppc
2895
    TARGET_ABI_DIR=ppc
2896
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2897
    target_phys_bits=64
2898
    target_nptl="yes"
A
aurel32 已提交
2899 2900
  ;;
  ppc64)
2901
    TARGET_BASE_ARCH=ppc
2902
    TARGET_ABI_DIR=ppc
2903
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2904
    target_phys_bits=64
A
aurel32 已提交
2905 2906
  ;;
  ppc64abi32)
J
Juan Quintela 已提交
2907
    TARGET_ARCH=ppc64
2908
    TARGET_BASE_ARCH=ppc
2909
    TARGET_ABI_DIR=ppc
2910
    echo "TARGET_ABI32=y" >> $config_target_mak
2911
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2912
    target_phys_bits=64
A
aurel32 已提交
2913 2914
  ;;
  sh4|sh4eb)
J
Juan Quintela 已提交
2915
    TARGET_ARCH=sh4
A
aurel32 已提交
2916
    bflt="yes"
A
aurel32 已提交
2917
    target_nptl="yes"
P
Paul Brook 已提交
2918
    target_phys_bits=32
A
aurel32 已提交
2919 2920
  ;;
  sparc)
P
Paul Brook 已提交
2921
    target_phys_bits=64
A
aurel32 已提交
2922 2923
  ;;
  sparc64)
2924
    TARGET_BASE_ARCH=sparc
P
Paul Brook 已提交
2925
    target_phys_bits=64
A
aurel32 已提交
2926 2927
  ;;
  sparc32plus)
J
Juan Quintela 已提交
2928
    TARGET_ARCH=sparc64
2929
    TARGET_BASE_ARCH=sparc
2930
    TARGET_ABI_DIR=sparc
2931
    echo "TARGET_ABI32=y" >> $config_target_mak
P
Paul Brook 已提交
2932
    target_phys_bits=64
A
aurel32 已提交
2933
  ;;
2934 2935 2936
  s390x)
    target_phys_bits=64
  ;;
A
aurel32 已提交
2937 2938 2939 2940 2941
  *)
    echo "Unsupported target CPU"
    exit 1
  ;;
esac
2942
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
2943
target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
2944 2945
echo "TARGET_$target_arch_name=y" >> $config_target_mak
echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
2946
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
2947 2948 2949
if [ "$TARGET_BASE_ARCH" = "" ]; then
  TARGET_BASE_ARCH=$TARGET_ARCH
fi
2950
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
2951 2952 2953
if [ "$TARGET_ABI_DIR" = "" ]; then
  TARGET_ABI_DIR=$TARGET_ARCH
fi
2954
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
J
Juan Quintela 已提交
2955 2956 2957
case "$target_arch2" in
  i386|x86_64)
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
2958
      echo "CONFIG_XEN=y" >> $config_target_mak
J
Juan Quintela 已提交
2959 2960
    fi
esac
J
Juan Quintela 已提交
2961
case "$target_arch2" in
A
Alexander Graf 已提交
2962
  i386|x86_64|ppcemb|ppc|ppc64|s390x)
J
Juan Quintela 已提交
2963 2964 2965 2966
    # Make sure the target and host cpus are compatible
    if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
      \( "$target_arch2" = "$cpu" -o \
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \
A
Alexander Graf 已提交
2967
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
J
Juan Quintela 已提交
2968 2969
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
2970 2971
      echo "CONFIG_KVM=y" >> $config_target_mak
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_target_mak
2972 2973 2974
      if test "$kvm_para" = "yes"; then
        echo "CONFIG_KVM_PARA=y" >> $config_target_mak
      fi
M
Michael S. Tsirkin 已提交
2975 2976 2977
      if test $vhost_net = "yes" ; then
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
      fi
J
Juan Quintela 已提交
2978 2979
    fi
esac
B
bellard 已提交
2980
if test "$target_bigendian" = "yes" ; then
2981
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
B
bellard 已提交
2982
fi
2983
if test "$target_softmmu" = "yes" ; then
P
Paul Brook 已提交
2984
  echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak
2985 2986
  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
  echo "LIBS+=$libs_softmmu" >> $config_target_mak
2987
  echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak
2988
  echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
B
bellard 已提交
2989
fi
B
bellard 已提交
2990
if test "$target_user_only" = "yes" ; then
2991
  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
B
bellard 已提交
2992
fi
2993
if test "$target_linux_user" = "yes" ; then
2994
  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
2995 2996
fi
if test "$target_darwin_user" = "yes" ; then
2997
  echo "CONFIG_DARWIN_USER=y" >> $config_target_mak
2998
fi
P
pbrook 已提交
2999 3000 3001 3002 3003
list=""
if test ! -z "$gdb_xml_files" ; then
  for x in $gdb_xml_files; do
    list="$list $source_path/gdb-xml/$x"
  done
3004
  echo "TARGET_XML_FILES=$list" >> $config_target_mak
P
pbrook 已提交
3005
fi
3006

3007
case "$target_arch2" in
3008
  alpha|arm|armeb|m68k|microblaze|mips|mipsel|mipsn32|mipsn32el|mips64|mips64el|ppc|ppc64|ppc64abi32|ppcemb|s390x|sparc|sparc64|sparc32plus)
3009
    echo "CONFIG_SOFTFLOAT=y" >> $config_target_mak
3010
    ;;
3011
  *)
3012
    echo "CONFIG_NOSOFTFLOAT=y" >> $config_target_mak
3013
    ;;
3014 3015
esac

P
pbrook 已提交
3016
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
3017
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
P
pbrook 已提交
3018
fi
3019 3020
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
3021
  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
3022
fi
P
Paul Brook 已提交
3023
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
3024
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
P
Paul Brook 已提交
3025
fi
B
blueswir1 已提交
3026
if test "$target_bsd_user" = "yes" ; then
3027
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
B
blueswir1 已提交
3028
fi
3029

3030
# generate QEMU_CFLAGS/LDFLAGS for targets
3031

3032
cflags=""
3033
ldflags=""
3034

J
Juan Quintela 已提交
3035 3036
if test "$ARCH" = "sparc64" ; then
  cflags="-I\$(SRC_PATH)/tcg/sparc $cflags"
3037 3038
elif test "$ARCH" = "s390x" ; then
  cflags="-I\$(SRC_PATH)/tcg/s390 $cflags"
3039 3040
elif test "$ARCH" = "x86_64" ; then
  cflags="-I\$(SRC_PATH)/tcg/i386 $cflags"
J
Juan Quintela 已提交
3041 3042 3043 3044 3045 3046
else
  cflags="-I\$(SRC_PATH)/tcg/\$(ARCH) $cflags"
fi
cflags="-I\$(SRC_PATH)/tcg $cflags"
cflags="-I\$(SRC_PATH)/fpu $cflags"

B
Blue Swirl 已提交
3047 3048 3049 3050 3051 3052
if test "$target_user_only" = "yes" ; then
    libdis_config_mak=libdis-user/config.mak
else
    libdis_config_mak=libdis/config.mak
fi

3053 3054 3055
for i in $ARCH $TARGET_BASE_ARCH ; do
  case "$i" in
  alpha)
3056
    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3057
    echo "CONFIG_ALPHA_DIS=y"  >> $libdis_config_mak
3058 3059
  ;;
  arm)
3060
    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3061
    echo "CONFIG_ARM_DIS=y"  >> $libdis_config_mak
3062 3063
  ;;
  cris)
3064
    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3065
    echo "CONFIG_CRIS_DIS=y"  >> $libdis_config_mak
3066 3067
  ;;
  hppa)
3068
    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3069
    echo "CONFIG_HPPA_DIS=y"  >> $libdis_config_mak
3070 3071
  ;;
  i386|x86_64)
3072
    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3073
    echo "CONFIG_I386_DIS=y"  >> $libdis_config_mak
3074
  ;;
A
Aurelien Jarno 已提交
3075 3076 3077 3078
  ia64*)
    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
    echo "CONFIG_IA64_DIS=y"  >> $libdis_config_mak
  ;;
3079
  m68k)
3080
    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3081
    echo "CONFIG_M68K_DIS=y"  >> $libdis_config_mak
3082 3083
  ;;
  microblaze)
3084
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3085
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $libdis_config_mak
3086 3087
  ;;
  mips*)
3088
    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3089
    echo "CONFIG_MIPS_DIS=y"  >> $libdis_config_mak
3090 3091
  ;;
  ppc*)
3092
    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3093
    echo "CONFIG_PPC_DIS=y"  >> $libdis_config_mak
3094
  ;;
3095
  s390*)
3096
    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3097
    echo "CONFIG_S390_DIS=y"  >> $libdis_config_mak
3098 3099
  ;;
  sh4)
3100
    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3101
    echo "CONFIG_SH4_DIS=y"  >> $libdis_config_mak
3102 3103
  ;;
  sparc*)
3104
    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3105
    echo "CONFIG_SPARC_DIS=y"  >> $libdis_config_mak
3106 3107 3108 3109
  ;;
  esac
done

3110 3111 3112 3113 3114 3115 3116
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
esac

3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127
if test "$target_softmmu" = "yes" ; then
  case "$TARGET_BASE_ARCH" in
  arm)
    cflags="-DHAS_AUDIO $cflags"
  ;;
  i386|mips|ppc)
    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
  ;;
  esac
fi

3128
if test "$target_user_only" = "yes" -a "$static" = "no" -a \
3129
	"$user_pie" = "yes" ; then
3130 3131 3132 3133
  cflags="-fpie $cflags"
  ldflags="-pie $ldflags"
fi

3134 3135 3136
if test "$target_softmmu" = "yes" -a \( \
        "$TARGET_ARCH" = "microblaze" -o \
        "$TARGET_ARCH" = "cris" \) ; then
3137
  echo "CONFIG_NEED_MMU=y" >> $config_target_mak
3138 3139
fi

3140
if test "$gprof" = "yes" ; then
3141
  echo "TARGET_GPROF=yes" >> $config_target_mak
3142 3143 3144 3145 3146 3147
  if test "$target_linux_user" = "yes" ; then
    cflags="-p $cflags"
    ldflags="-p $ldflags"
  fi
  if test "$target_softmmu" = "yes" ; then
    ldflags="-p $ldflags"
3148
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
3149 3150 3151
  fi
fi

3152
linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
3153
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
3154 3155 3156
  case "$ARCH" in
  sparc)
    # -static is used to avoid g1/g3 usage by the dynamic linker
3157
    ldflags="$linker_script -static $ldflags"
3158
    ;;
3159 3160 3161
  alpha | s390x)
    # The default placement of the application is fine.
    ;;
R
Richard Henderson 已提交
3162
  *)
3163
    ldflags="$linker_script $ldflags"
3164 3165 3166 3167
    ;;
  esac
fi

3168 3169
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
3170

3171
done # for target in $targets
B
bellard 已提交
3172 3173 3174

# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
3175
    DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
3176
    DIRS="$DIRS roms/seabios roms/vgabios"
3177
    DIRS="$DIRS fsdev ui"
B
bellard 已提交
3178
    FILES="Makefile tests/Makefile"
3179
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
E
edgar_igl 已提交
3180
    FILES="$FILES tests/test-mmap.c"
B
Blue Swirl 已提交
3181
    FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
3182
    FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
3183 3184 3185
    for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
        FILES="$FILES pc-bios/`basename $bios_file`"
    done
B
bellard 已提交
3186 3187 3188
    for dir in $DIRS ; do
            mkdir -p $dir
    done
B
bellard 已提交
3189
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
B
bellard 已提交
3190
    for f in $FILES ; do
B
bellard 已提交
3191 3192
        rm -f $f
        ln -s $source_path/$f $f
B
bellard 已提交
3193 3194
    done
fi
P
Paul Brook 已提交
3195

3196
# temporary config to build submodules
3197
for rom in seabios vgabios ; do
3198
    config_mak=roms/$rom/config.mak
3199
    echo "# Automatically generated by configure - do not modify" > $config_mak
3200 3201 3202 3203 3204 3205 3206 3207 3208 3209
    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
    echo "CC=$cc" >> $config_mak
    echo "BCC=bcc" >> $config_mak
    echo "CPP=${cross_prefix}cpp" >> $config_mak
    echo "OBJCOPY=objcopy" >> $config_mak
    echo "IASL=iasl" >> $config_mak
    echo "HOST_CC=$host_cc" >> $config_mak
    echo "LD=$ld" >> $config_mak
done

P
Paul Brook 已提交
3210 3211 3212
for hwlib in 32 64; do
  d=libhw$hwlib
  mkdir -p $d
B
Blue Swirl 已提交
3213
  mkdir -p $d/ide
P
Paul Brook 已提交
3214 3215
  rm -f $d/Makefile
  ln -s $source_path/Makefile.hw $d/Makefile
3216
  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak
P
Paul Brook 已提交
3217
done
3218 3219 3220 3221 3222

d=libuser
mkdir -p $d
rm -f $d/Makefile
ln -s $source_path/Makefile.user $d/Makefile
3223 3224 3225
if test "$static" = "no" -a "$user_pie" = "yes" ; then
  echo "QEMU_CFLAGS+=-fpie" > $d/config.mak
fi
3226 3227 3228 3229

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