configure 57.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 16
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
B
bellard 已提交
17

J
Juan Quintela 已提交
18
trap "rm -f $TMPC $TMPO $TMPE ; exit" 0 2 3 15
19

20
compile_object() {
J
Juan Quintela 已提交
21
  $cc $QEMU_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null
22 23 24 25 26
}

compile_prog() {
  local_cflags="$1"
  local_ldflags="$2"
J
Juan Quintela 已提交
27
  $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags > /dev/null 2> /dev/null
28 29
}

B
bellard 已提交
30
# default parameters
31
cpu=""
B
bellard 已提交
32
prefix=""
33
interp_prefix="/usr/gnemul/qemu-%M"
B
bellard 已提交
34
static="no"
35
sparc_cpu=""
B
bellard 已提交
36 37
cross_prefix=""
cc="gcc"
M
malc 已提交
38
audio_drv_list=""
M
malc 已提交
39 40
audio_card_list="ac97 es1370 sb16"
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus"
B
bellard 已提交
41 42 43
host_cc="gcc"
ar="ar"
make="make"
44
install="install"
45 46
objcopy="objcopy"
ld="ld"
J
Juan Quintela 已提交
47
helper_cflags=""
J
Juan Quintela 已提交
48
libs_softmmu=""
J
Juan Quintela 已提交
49
libs_tools=""
50
audio_pt_int=""
51 52 53 54 55 56 57 58 59

# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
  --cc=*) cc="$optarg"
  ;;
60 61
  --cpu=*) cpu="$optarg"
  ;;
J
Juan Quintela 已提交
62
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
63 64 65
  ;;
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
  ;;
66 67 68
  --sparc_cpu=*)
    sparc_cpu="$optarg"
    case $sparc_cpu in
69
    v7|v8|v8plus|v8plusa)
70 71 72 73 74 75 76 77 78 79 80
      cpu="sparc"
    ;;
    v9)
      cpu="sparc64"
    ;;
    *)
      echo "undefined SPARC architecture. Exiting";
      exit 1
    ;;
    esac
  ;;
81 82 83 84 85 86 87 88
  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}"
89 90
objcopy="${cross_prefix}${objcopy}"
ld="${cross_prefix}${ld}"
91 92 93 94 95 96

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

97
if compile_object ; then
98 99 100 101 102 103 104 105 106 107 108 109 110
  : 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
111
  compile_object
112 113
}

114 115 116 117
if test ! -z "$cpu" ; then
  # command line argument
  :
elif check_define __i386__ ; then
118 119 120
  cpu="i386"
elif check_define __x86_64__ ; then
  cpu="x86_64"
B
blueswir1 已提交
121 122 123 124 125 126 127 128
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 已提交
129 130 131 132 133 134
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
135
else
M
malc 已提交
136
  cpu=`uname -m`
137 138
fi

B
bellard 已提交
139
target_list=""
B
bellard 已提交
140
case "$cpu" in
141 142 143
  alpha|cris|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|sparc64)
    cpu="$cpu"
  ;;
B
bellard 已提交
144
  i386|i486|i586|i686|i86pc|BePC)
145
    cpu="i386"
B
bellard 已提交
146
  ;;
A
aurel32 已提交
147 148 149
  x86_64|amd64)
    cpu="x86_64"
  ;;
B
bellard 已提交
150
  armv*b)
151 152
    cpu="armv4b"
  ;;
B
bellard 已提交
153
  armv*l)
B
bellard 已提交
154 155
    cpu="armv4l"
  ;;
A
aurel32 已提交
156 157 158
  parisc|parisc64)
    cpu="hppa"
  ;;
T
ths 已提交
159
  s390*)
B
bellard 已提交
160 161
    cpu="s390"
  ;;
162
  sparc|sun4[cdmuv])
B
bellard 已提交
163 164
    cpu="sparc"
  ;;
B
bellard 已提交
165 166 167 168
  *)
    cpu="unknown"
  ;;
esac
J
Juan Quintela 已提交
169 170 171 172 173 174 175 176 177 178 179

# 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
#  * foo="yes", this value vill only be set by --enable-foo flag.
#                   feature will searched for, if not found, configure exits with error
#
# 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 feature is not found

180
bluez=""
181
brlapi=""
182
curl=""
183
curses=""
184
build_docs=""
185
nptl=""
186
vde=""
187
vnc_tls=""
188
vnc_sasl=""
189

B
bellard 已提交
190
gprof="no"
191
debug_tcg="no"
P
Paul Brook 已提交
192
debug="no"
193
sparse="no"
194
strip_opt="yes"
B
bellard 已提交
195
bigendian="no"
B
bellard 已提交
196 197
mingw32="no"
EXESUF=""
B
bellard 已提交
198
slirp="yes"
B
bellard 已提交
199 200
fmod_lib=""
fmod_inc=""
B
blueswir1 已提交
201
oss_lib=""
202
bsd="no"
B
bellard 已提交
203
linux="no"
B
blueswir1 已提交
204
solaris="no"
205
profiler="no"
206
cocoa="no"
207
softmmu="yes"
208 209
linux_user="no"
darwin_user="no"
B
blueswir1 已提交
210
bsd_user="no"
P
Paul Brook 已提交
211
guest_base=""
212
uname_release=""
213
io_thread="no"
214
mixemu="no"
215
kvm="no"
A
aliguori 已提交
216
kerneldir=""
M
malc 已提交
217
aix="no"
T
ths 已提交
218
blobs="yes"
219
fdt="yes"
220
sdl="yes"
221
xen="yes"
P
pbrook 已提交
222
pkgversion=""
B
bellard 已提交
223 224

# OS specific
225 226 227 228
if check_define __linux__ ; then
  targetos="Linux"
elif check_define _WIN32 ; then
  targetos='MINGW32'
229 230 231 232
elif check_define __OpenBSD__ ; then
  targetos='OpenBSD'
elif check_define __sun__ ; then
  targetos='SunOS'
233 234 235
else
  targetos=`uname -s`
fi
236

B
bellard 已提交
237
case $targetos in
B
bellard 已提交
238
CYGWIN*)
239
  mingw32="yes"
J
Juan Quintela 已提交
240
  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
241
  audio_possible_drivers="sdl"
B
bellard 已提交
242
;;
B
bellard 已提交
243
MINGW32*)
244 245
  mingw32="yes"
  audio_possible_drivers="dsound sdl fmod"
B
bellard 已提交
246
;;
T
ths 已提交
247
GNU/kFreeBSD)
248 249
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
T
ths 已提交
250
;;
B
bellard 已提交
251
FreeBSD)
252 253 254
  bsd="yes"
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
B
bellard 已提交
255
;;
256
DragonFly)
257 258 259
  bsd="yes"
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
260
;;
B
bellard 已提交
261
NetBSD)
262 263 264 265
  bsd="yes"
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
266 267
;;
OpenBSD)
268 269 270 271
  bsd="yes"
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
272
;;
273
Darwin)
274 275 276 277 278
  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 已提交
279 280
    is_x86_64=`sysctl -n hw.optional.x86_64`
    [ "$is_x86_64" = "1" ] && cpu=x86_64
281 282
  fi
  if [ "$cpu" = "x86_64" ] ; then
J
Juan Quintela 已提交
283
    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
284
    LDFLAGS="-arch x86_64 $LDFLAGS"
285
  else
J
Juan Quintela 已提交
286
    QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
287 288 289 290 291 292
  fi
  darwin_user="yes"
  cocoa="yes"
  audio_drv_list="coreaudio"
  audio_possible_drivers="coreaudio sdl fmod"
  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
293
  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
294
;;
B
bellard 已提交
295
SunOS)
296 297 298 299 300 301 302 303 304 305 306 307 308 309 310
  solaris="yes"
  make="gmake"
  install="ginstall"
  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"
311 312 313
        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"
314 315 316 317 318 319 320
      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 已提交
321
    fi
322 323 324 325 326
  fi
  if test -f /usr/include/sys/soundcard.h ; then
    audio_drv_list="oss"
  fi
  audio_possible_drivers="oss sdl"
J
Juan Quintela 已提交
327
  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
328
  LIBS="-lsocket -lnsl -lresolv $LIBS"
T
ths 已提交
329
;;
M
malc 已提交
330
AIX)
331 332
  aix="yes"
  make="gmake"
M
malc 已提交
333
;;
334
*)
335 336 337 338 339 340 341
  audio_drv_list="oss"
  audio_possible_drivers="oss alsa sdl esd pa"
  linux="yes"
  linux_user="yes"
  usb="linux"
  kvm="yes"
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
342
    audio_possible_drivers="$audio_possible_drivers fmod"
343
  fi
B
bellard 已提交
344
;;
B
bellard 已提交
345 346
esac

B
bellard 已提交
347
if [ "$bsd" = "yes" ] ; then
348
  if [ "$darwin" != "yes" ] ; then
349
    make="gmake"
350
    usb="bsd"
351
  fi
B
blueswir1 已提交
352
  bsd_user="yes"
B
bellard 已提交
353 354
fi

355 356
if test "$mingw32" = "yes" ; then
  EXESUF=".exe"
J
Juan Quintela 已提交
357
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
358
  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
359 360
fi

B
bellard 已提交
361
# find source path
P
pbrook 已提交
362
source_path=`dirname "$0"`
363 364
source_path_used="no"
workdir=`pwd`
P
pbrook 已提交
365
if [ -z "$source_path" ]; then
366
    source_path=$workdir
P
pbrook 已提交
367 368
else
    source_path=`cd "$source_path"; pwd`
B
bellard 已提交
369
fi
P
pbrook 已提交
370
[ -f "$workdir/vl.c" ] || source_path_used="yes"
B
bellard 已提交
371

372
werror=""
373

B
bellard 已提交
374
for opt do
P
pbrook 已提交
375
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
B
bellard 已提交
376
  case "$opt" in
377 378
  --help|-h) show_help=yes
  ;;
379
  --prefix=*) prefix="$optarg"
B
bellard 已提交
380
  ;;
381
  --interp-prefix=*) interp_prefix="$optarg"
B
bellard 已提交
382
  ;;
383
  --source-path=*) source_path="$optarg"
P
pbrook 已提交
384
  source_path_used="yes"
B
bellard 已提交
385
  ;;
386
  --cross-prefix=*)
B
bellard 已提交
387
  ;;
388
  --cc=*)
B
bellard 已提交
389
  ;;
390
  --host-cc=*) host_cc="$optarg"
B
bellard 已提交
391
  ;;
392
  --make=*) make="$optarg"
B
bellard 已提交
393
  ;;
394 395
  --install=*) install="$optarg"
  ;;
396
  --extra-cflags=*)
B
bellard 已提交
397
  ;;
398
  --extra-ldflags=*)
B
bellard 已提交
399
  ;;
400
  --cpu=*)
B
bellard 已提交
401
  ;;
402
  --target-list=*) target_list="$optarg"
B
bellard 已提交
403
  ;;
B
bellard 已提交
404 405
  --enable-gprof) gprof="yes"
  ;;
B
bellard 已提交
406 407
  --static) static="yes"
  ;;
408 409
  --disable-sdl) sdl="no"
  ;;
M
malc 已提交
410
  --fmod-lib=*) fmod_lib="$optarg"
411
  ;;
412 413
  --fmod-inc=*) fmod_inc="$optarg"
  ;;
B
blueswir1 已提交
414 415
  --oss-lib=*) oss_lib="$optarg"
  ;;
416
  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
B
bellard 已提交
417
  ;;
M
malc 已提交
418
  --audio-drv-list=*) audio_drv_list="$optarg"
B
bellard 已提交
419
  ;;
420 421 422 423
  --enable-debug-tcg) debug_tcg="yes"
  ;;
  --disable-debug-tcg) debug_tcg="no"
  ;;
P
Paul Brook 已提交
424 425 426 427 428 429
  --enable-debug)
      # Enable debugging options that aren't excessively noisy
      debug_tcg="yes"
      debug="yes"
      strip_opt="no"
  ;;
430 431 432 433
  --enable-sparse) sparse="yes"
  ;;
  --disable-sparse) sparse="no"
  ;;
434 435
  --disable-strip) strip_opt="no"
  ;;
436 437
  --disable-vnc-tls) vnc_tls="no"
  ;;
438 439
  --enable-vnc-tls) vnc_tls="yes"
  ;;
440 441
  --disable-vnc-sasl) vnc_sasl="no"
  ;;
442 443
  --enable-vnc-sasl) vnc_sasl="yes"
  ;;
B
bellard 已提交
444
  --disable-slirp) slirp="no"
445
  ;;
446
  --disable-vde) vde="no"
447
  ;;
448 449
  --enable-vde) vde="yes"
  ;;
450 451
  --disable-xen) xen="no"
  ;;
A
aurel32 已提交
452 453
  --disable-brlapi) brlapi="no"
  ;;
454 455
  --enable-brlapi) brlapi="yes"
  ;;
B
balrog 已提交
456 457
  --disable-bluez) bluez="no"
  ;;
458 459
  --enable-bluez) bluez="yes"
  ;;
A
aliguori 已提交
460 461
  --disable-kvm) kvm="no"
  ;;
462 463
  --enable-profiler) profiler="yes"
  ;;
464 465 466 467
  --enable-cocoa)
      cocoa="yes" ;
      sdl="no" ;
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
468
  ;;
P
pbrook 已提交
469
  --disable-system) softmmu="no"
470
  ;;
P
pbrook 已提交
471
  --enable-system) softmmu="yes"
472
  ;;
473 474 475 476 477 478
  --disable-user)
      linux_user="no" ;
      bsd_user="no" ;
      darwin_user="no"
  ;;
  --enable-user) ;;
479
  --disable-linux-user) linux_user="no"
480
  ;;
481 482 483 484 485
  --enable-linux-user) linux_user="yes"
  ;;
  --disable-darwin-user) darwin_user="no"
  ;;
  --enable-darwin-user) darwin_user="yes"
486
  ;;
B
blueswir1 已提交
487 488 489 490
  --disable-bsd-user) bsd_user="no"
  ;;
  --enable-bsd-user) bsd_user="yes"
  ;;
P
Paul Brook 已提交
491 492 493 494
  --enable-guest-base) guest_base="yes"
  ;;
  --disable-guest-base) guest_base="no"
  ;;
495 496
  --enable-uname-release=*) uname_release="$optarg"
  ;;
497 498
  --sparc_cpu=*)
  ;;
499 500 501 502
  --enable-werror) werror="yes"
  ;;
  --disable-werror) werror="no"
  ;;
B
balrog 已提交
503 504
  --disable-curses) curses="no"
  ;;
505 506
  --enable-curses) curses="yes"
  ;;
A
Alexander Graf 已提交
507 508
  --disable-curl) curl="no"
  ;;
509 510
  --enable-curl) curl="yes"
  ;;
511 512
  --disable-nptl) nptl="no"
  ;;
513 514
  --enable-nptl) nptl="yes"
  ;;
515 516
  --enable-mixemu) mixemu="yes"
  ;;
517 518
  --enable-io-thread) io_thread="yes"
  ;;
T
ths 已提交
519 520
  --disable-blobs) blobs="no"
  ;;
A
aliguori 已提交
521 522
  --kerneldir=*) kerneldir="$optarg"
  ;;
P
pbrook 已提交
523 524
  --with-pkgversion=*) pkgversion=" ($optarg)"
  ;;
525 526
  --disable-docs) build_docs="no"
  ;;
527 528
  --enable-docs) build_docs="yes"
  ;;
529 530
  *) echo "ERROR: unknown option $opt"; show_help="yes"
  ;;
B
bellard 已提交
531 532 533
  esac
done

534 535
#
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
J
Juan Quintela 已提交
536
# QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
537
#
P
Paul Brook 已提交
538
host_guest_base="no"
539
case "$cpu" in
540 541
    sparc) case $sparc_cpu in
           v7|v8)
J
Juan Quintela 已提交
542
             QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
543 544
           ;;
           v8plus|v8plusa)
J
Juan Quintela 已提交
545
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
546 547
           ;;
           *) # sparc_cpu not defined in the command line
J
Juan Quintela 已提交
548
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
549 550
           esac
           LDFLAGS="-m32 $LDFLAGS"
J
Juan Quintela 已提交
551
           QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
552
           if test "$solaris" = "no" ; then
J
Juan Quintela 已提交
553
             QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
J
Juan Quintela 已提交
554
             helper_cflags="-ffixed-i0"
555
           fi
556
           ;;
557
    sparc64)
J
Juan Quintela 已提交
558
           QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
559
           LDFLAGS="-m64 $LDFLAGS"
J
Juan Quintela 已提交
560
           QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
561
           if test "$solaris" != "no" ; then
J
Juan Quintela 已提交
562
             QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
563
           fi
564
           ;;
565
    s390)
J
Juan Quintela 已提交
566
           QEMU_CFLAGS="-march=z900 $QEMU_CFLAGS"
567
           ;;
568
    i386)
J
Juan Quintela 已提交
569
           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
570
           LDFLAGS="-m32 $LDFLAGS"
J
Juan Quintela 已提交
571
           helper_cflags="-fomit-frame-pointer"
P
Paul Brook 已提交
572
           host_guest_base="yes"
573 574
           ;;
    x86_64)
J
Juan Quintela 已提交
575
           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
576
           LDFLAGS="-m64 $LDFLAGS"
P
Paul Brook 已提交
577 578 579 580
           host_guest_base="yes"
           ;;
    arm*)
           host_guest_base="yes"
581
           ;;
M
malc 已提交
582 583 584
    ppc*)
           host_guest_base="yes"
           ;;
585 586
esac

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

589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607
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]"
echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
J
Juan Quintela 已提交
608
echo "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
609
echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
610
echo "  --make=MAKE              use specified make [$make]"
611
echo "  --install=INSTALL        use specified install [$install]"
612
echo "  --static                 enable static build [$static]"
613 614
echo "  --enable-debug-tcg       enable TCG debugging"
echo "  --disable-debug-tcg      disable TCG debugging (default)"
615
echo "  --enable-debug           enable common debug build options"
616 617
echo "  --enable-sparse          enable sparse checker"
echo "  --disable-sparse         disable sparse checker (default)"
618
echo "  --disable-strip          disable stripping binaries"
619
echo "  --disable-werror         disable compilation abort on warning"
620
echo "  --disable-sdl            disable SDL"
621
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
622 623
echo "  --audio-drv-list=LIST    set audio drivers list:"
echo "                           Available drivers: $audio_possible_drivers"
M
malc 已提交
624 625
echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
echo "                           Available cards: $audio_possible_cards"
626
echo "  --enable-mixemu          enable mixer emulation"
627
echo "  --disable-xen            disable xen backend driver support"
A
aurel32 已提交
628
echo "  --disable-brlapi         disable BrlAPI"
629
echo "  --enable-brlapi          enable BrlAPI"
630
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
631
echo "  --enable-vnc-tls         enable TLS encryption for VNC server"
632
echo "  --disable-vnc-sasl       disable SASL encryption for VNC server"
633
echo "  --enable-vnc-sasl        enable SASL encryption for VNC server"
P
pbrook 已提交
634
echo "  --disable-curses         disable curses output"
635
echo "  --enable-curses          enable curses output"
A
Alexander Graf 已提交
636
echo "  --disable-curl           disable curl connectivity"
637
echo "  --enable-curl            enable curl connectivity"
B
balrog 已提交
638
echo "  --disable-bluez          disable bluez stack connectivity"
639
echo "  --enable-bluez           enable bluez stack connectivity"
A
aliguori 已提交
640
echo "  --disable-kvm            disable KVM acceleration support"
641
echo "  --disable-nptl           disable usermode NPTL support"
642
echo "  --enable-nptl            disable usermode NPTL support"
643 644
echo "  --enable-system          enable all system emulation targets"
echo "  --disable-system         disable all system emulation targets"
645 646
echo "  --enable-user            enable supported user emulation targets"
echo "  --disable-user           disable all user emulation targets"
647 648 649 650
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 已提交
651 652
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
P
Paul Brook 已提交
653 654 655
echo "  --enable-guest-base      enable GUEST_BASE support for usermode"
echo "                           emulation targets"
echo "  --disable-guest-base     disable GUEST_BASE support"
656 657
echo "  --fmod-lib               path to FMOD library"
echo "  --fmod-inc               path to FMOD includes"
B
blueswir1 已提交
658
echo "  --oss-lib                path to OSS library"
659
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
660
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
661
echo "  --disable-vde            disable support for vde network"
662
echo "  --enable-vde             enable support for vde network"
663
echo "  --enable-io-thread       enable IO thread"
T
ths 已提交
664
echo "  --disable-blobs          disable installing provided firmware blobs"
A
aliguori 已提交
665
echo "  --kerneldir=PATH         look for kernel includes in PATH"
666
echo ""
T
ths 已提交
667
echo "NOTE: The object files are built at the place where configure is launched"
668 669 670
exit 1
fi

671 672 673 674
if test ! -x "$(which cgcc 2>/dev/null)"; then
    sparse="no"
fi

B
bellard 已提交
675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699
#
# Solaris specific configure tool chain decisions
#
if test "$solaris" = "yes" ; then
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
  if test -z "$solinst" ; then
    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
  if test "$solinst" = "/usr/sbin/install" ; then
    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
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
  if test -z "$sol_ar" ; then
    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
700
fi
B
bellard 已提交
701 702


B
bellard 已提交
703 704
if test -z "$target_list" ; then
# these targets are portable
705
    if [ "$softmmu" = "yes" ] ; then
A
aurel32 已提交
706 707 708 709 710 711
        target_list="\
i386-softmmu \
x86_64-softmmu \
arm-softmmu \
cris-softmmu \
m68k-softmmu \
712
microblaze-softmmu \
A
aurel32 已提交
713 714 715 716 717 718 719 720 721 722
mips-softmmu \
mipsel-softmmu \
mips64-softmmu \
mips64el-softmmu \
ppc-softmmu \
ppcemb-softmmu \
ppc64-softmmu \
sh4-softmmu \
sh4eb-softmmu \
sparc-softmmu \
723
sparc64-softmmu \
A
aurel32 已提交
724
"
725
    fi
B
bellard 已提交
726
# the following are Linux specific
727
    if [ "$linux_user" = "yes" ] ; then
A
aurel32 已提交
728 729 730 731 732 733 734 735
        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 \
736
microblaze-linux-user \
A
aurel32 已提交
737 738 739 740 741 742 743 744 745 746 747
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 \
"
748 749 750
    fi
# the following are Darwin specific
    if [ "$darwin_user" = "yes" ] ; then
M
malc 已提交
751
        target_list="$target_list i386-darwin-user ppc-darwin-user "
B
bellard 已提交
752
    fi
B
blueswir1 已提交
753 754 755
# the following are BSD specific
    if [ "$bsd_user" = "yes" ] ; then
        target_list="${target_list}\
756 757 758
i386-bsd-user \
x86_64-bsd-user \
sparc-bsd-user \
B
blueswir1 已提交
759 760 761
sparc64-bsd-user \
"
    fi
762
else
763
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
B
bellard 已提交
764
fi
765 766 767 768
if test -z "$target_list" ; then
    echo "No targets enabled"
    exit 1
fi
B
bellard 已提交
769

770 771 772 773 774 775 776 777 778 779
feature_not_found() {
  feature=$1

  echo "ERROR"
  echo "ERROR: User requested feature $feature"
  echo "ERROR: configure was not able to found it"
  echo "ERROR"
  exit 1;
}

B
bellard 已提交
780 781 782 783 784 785 786
if test -z "$cross_prefix" ; then

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

792
if compile_prog "" "" ; then
B
bellard 已提交
793 794 795 796 797 798 799 800
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
801 802 803 804 805
case "$cpu" in
  armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
    bigendian=yes
  ;;
esac
B
bellard 已提交
806 807 808

fi

B
bellard 已提交
809 810
# host long bits test
hostlongbits="32"
811 812 813 814 815
case "$cpu" in
  x86_64|alpha|ia64|sparc64|ppc64)
    hostlongbits=64
  ;;
esac
B
bellard 已提交
816

817 818 819 820 821 822

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

if test "$nptl" != "no" ; then
  cat > $TMPC <<EOF
823
#include <sched.h>
P
pbrook 已提交
824
#include <linux/futex.h>
825 826 827 828 829 830 831 832
void foo()
{
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
}
EOF

833 834 835 836 837 838 839 840
  if compile_object ; then
    nptl=yes
  else
    if test "$nptl" = "yes" ; then
      feature_not_found "nptl"
    fi
    nptl=no
  fi
841 842
fi

843 844 845 846 847 848 849
##########################################
# zlib check

cat > $TMPC << EOF
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
850
if compile_prog "" "-lz" ; then
851 852 853 854 855 856 857 858 859
    :
else
    echo
    echo "Error: zlib check failed"
    echo "Make sure to have the zlib libs and headers installed."
    echo
    exit 1
fi

860 861 862 863
##########################################
# xen probe

if test "$xen" = "yes" ; then
864 865
  xen_libs="-lxenstore -lxenctrl -lxenguest"
  cat > $TMPC <<EOF
866 867
#include <xenctrl.h>
#include <xs.h>
868
int main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
869
EOF
870
  if compile_prog "" "$xen_libs" ; then
J
Juan Quintela 已提交
871
    libs_softmmu="$xen_libs $libs_softmmu"
872 873 874
  else
    xen="no"
  fi
875 876
fi

B
bellard 已提交
877 878 879 880 881
##########################################
# SDL probe

sdl_too_old=no

882
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
883 884
  sdl=no
  cat > $TMPC << EOF
B
bellard 已提交
885 886 887 888
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
J
Juan Quintela 已提交
889 890
  sdl_cflags=`sdl-config --cflags 2> /dev/null`
  sdl_libs=`sdl-config --libs 2> /dev/null`
891
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
892 893 894 895 896 897 898 899
    _sdlversion=`sdl-config --version | sed 's/[^0-9]//g'`
    if test "$_sdlversion" -lt 121 ; then
      sdl_too_old=yes
    else
      if test "$cocoa" = "no" ; then
        sdl=yes
      fi
    fi
A
aliguori 已提交
900

J
Juan Quintela 已提交
901 902 903 904 905 906 907
    # static link with sdl ?
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
      sdl_libs=`sdl-config --static-libs 2>/dev/null`
      if test `sdl-config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` ; then
         sdl_libs="$sdl_libs `aalib-config --static-libs >2 /dev/null`"
         sdl_cflags="$sd_cflags `aalib-config --cflags >2 /dev/null`"
      fi
908
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
909 910 911 912 913 914
	:
      else
        sdl=no
      fi
    fi # static link
  fi # sdl compile test
915
fi
B
bellard 已提交
916

917
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
918
  cat > $TMPC <<EOF
919 920 921 922 923 924 925 926
#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
927
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
928 929
    sdl_libs="$sdl_libs -lX11"
  fi
930 931 932
  if test "$mingw32" = "yes" ; then
    sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
  fi
J
Juan Quintela 已提交
933
  libs_softmmu="$sdl_libs $libs_softmmu"
934 935
fi

936 937
##########################################
# VNC TLS detection
938 939
if test "$vnc_tls" != "no" ; then
  cat > $TMPC <<EOF
940 941 942
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
943 944 945 946 947 948 949 950
  vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
  vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
  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"
951
    fi
952 953
    vnc_tls=no
  fi
954 955
fi

956 957 958
##########################################
# VNC SASL detection
if test "$vnc_sasl" = "yes" ; then
959
  cat > $TMPC <<EOF
960 961 962 963
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
964 965 966 967 968 969 970 971 972
  # 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"
973
    fi
974 975
    vnc_sasl=no
  fi
976 977
fi

978 979 980 981 982 983 984 985 986 987 988
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
989
if compile_prog "" "" ; then
990 991 992
   fnmatch="yes"
fi

993 994
##########################################
# vde libraries probe
995
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
996
  vde_libs="-lvdeplug"
997 998
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
999 1000 1001 1002 1003 1004
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
    vde_open("", "", &a);
    return 0;
}
1005
EOF
1006
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
1007
    vde=yes
1008 1009
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
1010 1011 1012 1013 1014
  else
    if test "$vde" = "yes" ; then
      feature_not_found "vde"
    fi
    vde=no
J
Juan Quintela 已提交
1015
  fi
1016 1017
fi

1018
##########################################
1019
# Sound support libraries probe
1020

1021 1022 1023 1024 1025 1026 1027 1028 1029 1030
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
1031
EOF
1032
    if compile_prog "$cfl" "$lib" ; then
1033 1034 1035 1036 1037 1038 1039 1040 1041 1042
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

1043
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1044 1045 1046 1047 1048
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);"
1049
    libs_softmmu="-lasound $libs_softmmu"
1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060
    ;;

    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"
1061
    libs_softmmu="$fmod_lib $libs_softmmu"
1062 1063 1064 1065
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1066
    libs_softmmu="-lesd $libs_softmmu"
1067
    audio_pt_int="yes"
1068
    ;;
M
malc 已提交
1069 1070 1071 1072

    pa)
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1073
    libs_softmmu="-lpulse-simple $libs_softmmu"
1074
    audio_pt_int="yes"
M
malc 已提交
1075 1076
    ;;

1077 1078 1079 1080
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

1081 1082 1083 1084 1085 1086 1087 1088 1089
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
    ;;

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

    sdl|wav)
B
blueswir1 已提交
1090 1091 1092
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

M
malc 已提交
1093
    *)
M
malc 已提交
1094
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
M
malc 已提交
1095 1096 1097 1098 1099 1100 1101
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
1102 1103
    esac
done
1104

A
aurel32 已提交
1105 1106 1107
##########################################
# BrlAPI probe

1108
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
1109 1110
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
1111 1112 1113
#include <brlapi.h>
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
1114
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
1115
    brlapi=yes
1116
    libs_softmmu="$brlapi_libs $libs_softmmu"
1117 1118 1119 1120 1121
  else
    if test "$brlapi" = "yes" ; then
      feature_not_found "brlapi"
    fi
    brlapi=no
J
Juan Quintela 已提交
1122 1123
  fi
fi
A
aurel32 已提交
1124

B
balrog 已提交
1125 1126
##########################################
# curses probe
1127
curses_list="-lncurses -lcurses"
B
balrog 已提交
1128

1129 1130
if test "$curses" != "no" ; then
  curses_found=no
B
balrog 已提交
1131 1132
  cat > $TMPC << EOF
#include <curses.h>
1133 1134 1135 1136
#ifdef __OpenBSD__
#define resize_term resizeterm
#endif
int main(void) { resize_term(0, 0); return curses_version(); }
B
balrog 已提交
1137
EOF
1138 1139
  for curses_lib in $curses_list; do
    if compile_prog "" "$curses_lib" ; then
1140
      curses_found=yes
1141 1142 1143 1144
      libs_softmmu="$curses_lib $libs_softmmu"
      break
    fi
  done
1145 1146 1147 1148 1149 1150 1151 1152
  if test "$curses_found" = "yes" ; then
    curses=yes
  else
    if test "$curses" = "yes" ; then
      feature_not_found "curses"
    fi
    curses=no
  fi
1153
fi
B
balrog 已提交
1154

A
Alexander Graf 已提交
1155 1156 1157
##########################################
# curl probe

1158
if test "$curl" != "no" ; then
A
Alexander Graf 已提交
1159 1160 1161 1162
  cat > $TMPC << EOF
#include <curl/curl.h>
int main(void) { return curl_easy_init(); }
EOF
J
Juan Quintela 已提交
1163
  curl_cflags=`curl-config --cflags 2>/dev/null`
1164
  curl_libs=`curl-config --libs 2>/dev/null`
J
Juan Quintela 已提交
1165
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
1166
    curl=yes
1167 1168
    libs_tools="$curl_libs $libs_tools"
    libs_softmmu="$curl_libs $libs_softmmu"
1169 1170 1171 1172 1173
  else
    if test "$curl" = "yes" ; then
      feature_not_found "curl"
    fi
    curl=no
A
Alexander Graf 已提交
1174 1175 1176
  fi
fi # test "$curl"

B
balrog 已提交
1177 1178
##########################################
# bluez support probe
1179
if test "$bluez" != "no" ; then
1180 1181 1182 1183
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
1184 1185
  bluez_cflags=`pkg-config --cflags bluez 2> /dev/null`
  bluez_libs=`pkg-config --libs bluez 2> /dev/null`
1186
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1187
    bluez=yes
1188
    libs_softmmu="$bluez_libs $libs_softmmu"
1189
  else
1190 1191 1192
    if test "$bluez" = "yes" ; then
      feature_not_found "bluez"
    fi
1193 1194
    bluez="no"
  fi
B
balrog 已提交
1195 1196
fi

A
aliguori 已提交
1197 1198 1199 1200 1201
##########################################
# kvm probe
if test "$kvm" = "yes" ; then
    cat > $TMPC <<EOF
#include <linux/kvm.h>
1202
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
A
aliguori 已提交
1203 1204
#error Invalid KVM version
#endif
1205 1206 1207 1208 1209 1210 1211 1212 1213
#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 已提交
1214 1215
int main(void) { return 0; }
EOF
A
aliguori 已提交
1216 1217
  if test "$kerneldir" != "" ; then
      kvm_cflags=-I"$kerneldir"/include
1218 1219 1220
      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 已提交
1221 1222
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
1223 1224 1225
        elif test -d "$kerneldir/arch/$cpu/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
      fi
A
aliguori 已提交
1226 1227 1228
  else
      kvm_cflags=""
  fi
1229
  if compile_prog "$kvm_cflags" "" ; then
A
aliguori 已提交
1230 1231
    :
  else
1232 1233 1234
    kvm="no";
    if [ -x "`which awk 2>/dev/null`" ] && \
       [ -x "`which grep 2>/dev/null`" ]; then
J
Juan Quintela 已提交
1235
      kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \
1236 1237 1238
	| grep "error: " \
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
      if test "$kvmerr" != "" ; then
1239 1240 1241
        kvm="no - (${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."
1242 1243
      fi
    fi
A
aliguori 已提交
1244 1245 1246
  fi
fi

1247
##########################################
1248
# pthread probe
1249
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1250

C
Christoph Hellwig 已提交
1251
pthread=no
1252
cat > $TMPC << EOF
1253
#include <pthread.h>
1254
int main(void) { pthread_create(0,0,0,0); return 0; }
1255
EOF
C
Christoph Hellwig 已提交
1256 1257 1258 1259 1260 1261 1262
for pthread_lib in $PTHREADLIBS_LIST; do
  if compile_prog "" "$pthread_lib" ; then
    pthread=yes
    LIBS="$pthread_lib $LIBS"
    break
  fi
done
1263

1264
if test "$pthread" = no; then
C
Christoph Hellwig 已提交
1265 1266 1267 1268 1269
  echo
  echo "Error: pthread check failed"
  echo "Make sure to have the pthread libs and headers installed."
  echo
  exit 1
1270 1271
fi

A
aliguori 已提交
1272 1273 1274
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
1275
#include <sys/types.h>
A
aliguori 已提交
1276
#include <sys/uio.h>
B
blueswir1 已提交
1277
#include <unistd.h>
A
aliguori 已提交
1278 1279 1280
int main(void) { struct iovec iov; return 0; }
EOF
iovec=no
1281
if compile_prog "" "" ; then
A
aliguori 已提交
1282 1283 1284
  iovec=yes
fi

1285 1286 1287 1288 1289 1290 1291 1292 1293
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
int main(void) { preadv; }
EOF
preadv=no
1294
if compile_prog "" "" ; then
1295 1296 1297
  preadv=yes
fi

1298 1299 1300
##########################################
# fdt probe
if test "$fdt" = "yes" ; then
J
Juan Quintela 已提交
1301 1302 1303
  fdt=no
  fdt_libs="-lfdt"
  cat > $TMPC << EOF
1304 1305
int main(void) { return 0; }
EOF
1306
  if compile_prog "" "$fdt_libs" ; then
1307
    fdt=yes
J
Juan Quintela 已提交
1308
    libs_softmmu="$fdt_libs $libs_softmmu"
1309 1310 1311
  fi
fi

1312 1313 1314 1315 1316 1317
#
# 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
1318
cat > $TMPC << EOF
1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330
#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
1331
if compile_prog "" "" ; then
1332
  atfile=yes
1333 1334
fi

A
aurel32 已提交
1335
# Check for inotify functions when we are building linux-user
1336 1337 1338 1339 1340
# 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
1341
cat > $TMPC << EOF
1342 1343 1344 1345 1346 1347
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
1348
	return inotify_init();
1349 1350
}
EOF
1351
if compile_prog "" "" ; then
1352
  inotify=yes
1353 1354
fi

R
Riku Voipio 已提交
1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369
# check if utimensat and futimens are supported
utimens=no
cat > $TMPC << EOF
#define _ATFILE_SOURCE
#define _GNU_SOURCE
#include <stddef.h>
#include <fcntl.h>

int main(void)
{
    utimensat(AT_FDCWD, "foo", NULL, 0);
    futimens(0, NULL);
    return 0;
}
EOF
1370
if compile_prog "" "" ; then
R
Riku Voipio 已提交
1371 1372 1373
  utimens=yes
fi

R
Riku Voipio 已提交
1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387
# check if pipe2 is there
pipe2=no
cat > $TMPC << EOF
#define _GNU_SOURCE
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    int pipefd[2];
    pipe2(pipefd, O_CLOEXEC);
    return 0;
}
EOF
1388
if compile_prog "" "" ; then
R
Riku Voipio 已提交
1389 1390 1391
  pipe2=yes
fi

1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407
# check if tee/splice is there. vmsplice was added same time.
splice=no
cat > $TMPC << EOF
#define _GNU_SOURCE
#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
1408
if compile_prog "" "" ; then
1409 1410 1411
  splice=yes
fi

1412
# Check if tools are available to build documentation.
1413 1414 1415 1416 1417 1418 1419 1420 1421 1422
if test "$build_docs" != "no" ; then
  if test -x "`which texi2html 2>/dev/null`" -a \
          -x "`which pod2man 2>/dev/null`" ; then
    build_docs=yes
  else
    if test "$build_docs" = "yes" ; then
      feature_not_found "build_docs"
    fi
    build_docs=no
  fi
1423 1424
fi

1425 1426 1427 1428 1429 1430
# Search for bsawp_32 function
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
1431
if compile_prog "" "" ; then
1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442
  byteswap_h=yes
fi

# Search for bsawp_32 function
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
1443
if compile_prog "" "" ; then
1444 1445 1446
  bswap_h=yes
fi

A
aliguori 已提交
1447 1448 1449 1450 1451 1452 1453 1454
##########################################
# 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

1455
if compile_prog "" "" ; then
1456
  :
1457
elif compile_prog "" "-lrt" ; then
1458
  LIBS="-lrt $LIBS"
A
aliguori 已提交
1459 1460
fi

1461 1462 1463 1464 1465 1466 1467
# Determine what linker flags to use to force archive inclusion
check_linker_flags()
{
    w2=
    if test "$2" ; then
	w2=-Wl,$2
    fi
1468
    compile_prog "" "-Wl,$1 ${w2}"
1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491
}

cat > $TMPC << EOF
int main(void) { }
EOF
if check_linker_flags --whole-archive --no-whole-archive ; then
    # GNU ld
    arlibs_begin="-Wl,--whole-archive"
    arlibs_end="-Wl,--no-whole-archive"
elif check_linker_flags -z,allextract -z,defaultextract ; then
    # Solaris ld
    arlibs_begin"=-Wl,-z,allextract"
    arlibs_end="-Wl,-z,defaultextract"
elif check_linker_flags -all_load ; then
    # Mac OS X
    arlibs_begin="-all_load"
    arlibs_end=""
else
    echo "Error: your linker does not support --whole-archive or -z."
    echo "Please report to qemu-devel@nongnu.org"
    exit 1
fi

1492 1493 1494 1495 1496
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaries" != yes -a \
        "$aix" != "yes" ; then
    libs_softmmu="-lutil $libs_softmmu"
fi

1497 1498 1499 1500
# End of CC checks
# After here, no more $cc or $ld runs

# default flags for all hosts
J
Juan Quintela 已提交
1501 1502
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
CFLAGS="-g $CFLAGS"
1503
if test "$debug" = "no" ; then
1504
  CFLAGS="-O2 $CFLAGS"
1505
fi
J
Juan Quintela 已提交
1506 1507
QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
1508 1509 1510
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
QEMU_CFLAGS="-U_FORTIFY_SOURCE $QEMU_CFLAGS"
QEMU_CFLAGS="-I. -I\$(SRC_PATH) -MMD -MP -MT \$@ $QEMU_CFLAGS"
1511
LDFLAGS="-g $LDFLAGS"
1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525

# Consult white-list to determine whether to enable werror
# by default.  Only enable by default for git builds
if test -z "$werror" ; then
    z_version=`cut -f3 -d. $source_path/VERSION`
    if test "$z_version" = "50" -a \
        "$linux" = "yes" ; then
        werror="yes"
    else
        werror="no"
    fi
fi

if test "$werror" = "yes" ; then
J
Juan Quintela 已提交
1526
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
1527 1528 1529 1530
fi

if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
1531
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
1532 1533 1534
    fi
fi

B
bellard 已提交
1535
if test "$mingw32" = "yes" ; then
P
pbrook 已提交
1536
  if test -z "$prefix" ; then
S
Stefan Weil 已提交
1537
      prefix="c:/Program Files/Qemu"
P
pbrook 已提交
1538 1539 1540 1541 1542
  fi
  mansuffix=""
  datasuffix=""
  docsuffix=""
  binsuffix=""
B
bellard 已提交
1543
else
P
pbrook 已提交
1544 1545 1546 1547 1548 1549 1550
  if test -z "$prefix" ; then
      prefix="/usr/local"
  fi
  mansuffix="/share/man"
  datasuffix="/share/qemu"
  docsuffix="/share/doc/qemu"
  binsuffix="/bin"
B
bellard 已提交
1551
fi
1552

B
bellard 已提交
1553
echo "Install prefix    $prefix"
P
pbrook 已提交
1554 1555
echo "BIOS directory    $prefix$datasuffix"
echo "binary directory  $prefix$binsuffix"
B
bellard 已提交
1556
if test "$mingw32" = "no" ; then
P
pbrook 已提交
1557
echo "Manual directory  $prefix$mansuffix"
B
bellard 已提交
1558
echo "ELF interp prefix $interp_prefix"
B
bellard 已提交
1559
fi
1560
echo "Source path       $source_path"
B
bellard 已提交
1561
echo "C compiler        $cc"
B
bellard 已提交
1562
echo "Host C compiler   $host_cc"
1563
echo "CFLAGS            $CFLAGS"
J
Juan Quintela 已提交
1564
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
1565
echo "LDFLAGS           $LDFLAGS"
B
bellard 已提交
1566
echo "make              $make"
1567
echo "install           $install"
B
bellard 已提交
1568
echo "host CPU          $cpu"
B
bellard 已提交
1569
echo "host big endian   $bigendian"
1570
echo "target list       $target_list"
1571
echo "tcg debug enabled $debug_tcg"
B
bellard 已提交
1572
echo "gprof enabled     $gprof"
1573
echo "sparse enabled    $sparse"
1574
echo "strip binaries    $strip_opt"
1575
echo "profiler          $profiler"
B
bellard 已提交
1576
echo "static build      $static"
1577
echo "-Werror enabled   $werror"
1578 1579 1580
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
1581
echo "SDL support       $sdl"
B
balrog 已提交
1582
echo "curses support    $curses"
A
Alexander Graf 已提交
1583
echo "curl support      $curl"
B
bellard 已提交
1584
echo "mingw32 support   $mingw32"
M
malc 已提交
1585 1586
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
1587
echo "Mixer emulation   $mixemu"
1588
echo "VNC TLS support   $vnc_tls"
1589
echo "VNC SASL support  $vnc_sasl"
1590 1591 1592
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
1593
echo "xen support       $xen"
A
aurel32 已提交
1594
echo "brlapi support    $brlapi"
1595
echo "bluez  support    $bluez"
1596
echo "Documentation     $build_docs"
1597 1598
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
1599
echo "NPTL support      $nptl"
P
Paul Brook 已提交
1600
echo "GUEST_BASE        $guest_base"
1601
echo "vde support       $vde"
1602
echo "IO thread         $io_thread"
T
ths 已提交
1603
echo "Install blobs     $blobs"
1604
echo -e "KVM support       $kvm"
1605
echo "fdt support       $fdt"
1606
echo "preadv support    $preadv"
B
bellard 已提交
1607

1608
if test $sdl_too_old = "yes"; then
B
bellard 已提交
1609
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
1610
fi
B
bellard 已提交
1611

1612 1613
config_host_mak="config-host.mak"
config_host_h="config-host.h"
1614
config_host_ld="config-host.ld"
1615 1616 1617 1618 1619 1620 1621 1622 1623 1624

#echo "Creating $config_host_mak and $config_host_h"

test -f $config_host_h && mv $config_host_h ${config_host_h}~

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

1625
echo "CONFIG_QEMU_SHAREDIR=\"$prefix$datasuffix\"" >> $config_host_mak
1626

A
aurel32 已提交
1627
case "$cpu" in
1628
  i386|x86_64|alpha|cris|hppa|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
1629
    ARCH=$cpu
A
aurel32 已提交
1630
  ;;
1631
  armv4b|armv4l)
1632
    ARCH=arm
A
aurel32 已提交
1633 1634 1635 1636 1637 1638
  ;;
  *)
    echo "Unsupported CPU = $cpu"
    exit 1
  ;;
esac
1639
echo "ARCH=$ARCH" >> $config_host_mak
1640
if test "$debug_tcg" = "yes" ; then
1641
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
1642
fi
P
Paul Brook 已提交
1643
if test "$debug" = "yes" ; then
1644
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
P
Paul Brook 已提交
1645
fi
1646
if test "$strip_opt" = "yes" ; then
1647
  echo "STRIP_OPT=-s" >> $config_host_mak
1648
fi
B
bellard 已提交
1649
if test "$bigendian" = "yes" ; then
1650
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
1651
fi
1652
echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
B
bellard 已提交
1653
if test "$mingw32" = "yes" ; then
1654
  echo "CONFIG_WIN32=y" >> $config_host_mak
1655
else
J
Juan Quintela 已提交
1656
  echo "CONFIG_POSIX=y" >> $config_host_mak
B
bellard 已提交
1657
fi
1658

1659
if test "$darwin" = "yes" ; then
1660
  echo "CONFIG_DARWIN=y" >> $config_host_mak
1661
fi
M
malc 已提交
1662 1663

if test "$aix" = "yes" ; then
1664
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
1665 1666
fi

B
bellard 已提交
1667
if test "$solaris" = "yes" ; then
1668
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
1669
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
T
ths 已提交
1670
  if test "$needs_libsunmath" = "yes" ; then
1671
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
T
ths 已提交
1672
  fi
B
bellard 已提交
1673
fi
1674
if test "$static" = "yes" ; then
1675
  echo "CONFIG_STATIC=y" >> $config_host_mak
1676
  LDFLAGS="-static $LDFLAGS"
B
bellard 已提交
1677
fi
1678
if test $profiler = "yes" ; then
1679
  echo "CONFIG_PROFILER=y" >> $config_host_mak
1680
fi
B
bellard 已提交
1681
if test "$slirp" = "yes" ; then
1682
  echo "CONFIG_SLIRP=y" >> $config_host_mak
1683
  CFLAGS="-I\$(SRC_PATH)/slirp $CFLAGS"
B
bellard 已提交
1684
fi
1685
if test "$vde" = "yes" ; then
1686
  echo "CONFIG_VDE=y" >> $config_host_mak
1687
fi
M
malc 已提交
1688
for card in $audio_card_list; do
P
pbrook 已提交
1689
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1690
    echo "$def=y" >> $config_host_mak
M
malc 已提交
1691
done
1692
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
M
malc 已提交
1693
for drv in $audio_drv_list; do
P
pbrook 已提交
1694
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1695
    echo "$def=y" >> $config_host_mak
M
malc 已提交
1696
    if test "$drv" = "fmod"; then
1697
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
M
malc 已提交
1698 1699
    fi
done
1700 1701 1702
if test "$audio_pt_int" = "yes" ; then
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
fi
1703
if test "$mixemu" = "yes" ; then
1704
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
1705
fi
1706
if test "$vnc_tls" = "yes" ; then
1707
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
1708
  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
1709
fi
1710
if test "$vnc_sasl" = "yes" ; then
1711
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
1712
  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
1713
fi
1714
if test "$fnmatch" = "yes" ; then
1715
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
1716
fi
1717
qemu_version=`head $source_path/VERSION`
1718
echo "VERSION=$qemu_version" >>$config_host_mak
1719
echo "PKGVERSION=$pkgversion" >>$config_host_mak
1720
echo "SRC_PATH=$source_path" >> $config_host_mak
P
pbrook 已提交
1721
if [ "$source_path_used" = "yes" ]; then
1722
  echo "VPATH=$source_path" >> $config_host_mak
P
pbrook 已提交
1723
fi
1724
echo "TARGET_DIRS=$target_list" >> $config_host_mak
1725
if [ "$build_docs" = "yes" ] ; then
1726
  echo "BUILD_DOCS=yes" >> $config_host_mak
1727
fi
1728
if test "$sdl" = "yes" ; then
1729
  echo "CONFIG_SDL=y" >> $config_host_mak
1730
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
1731 1732
fi
if test "$cocoa" = "yes" ; then
1733
  echo "CONFIG_COCOA=y" >> $config_host_mak
B
balrog 已提交
1734 1735
fi
if test "$curses" = "yes" ; then
1736
  echo "CONFIG_CURSES=y" >> $config_host_mak
1737
fi
1738
if test "$atfile" = "yes" ; then
1739
  echo "CONFIG_ATFILE=y" >> $config_host_mak
1740
fi
R
Riku Voipio 已提交
1741
if test "$utimens" = "yes" ; then
1742
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
R
Riku Voipio 已提交
1743
fi
R
Riku Voipio 已提交
1744
if test "$pipe2" = "yes" ; then
1745
  echo "CONFIG_PIPE2=y" >> $config_host_mak
R
Riku Voipio 已提交
1746
fi
1747
if test "$splice" = "yes" ; then
1748
  echo "CONFIG_SPLICE=y" >> $config_host_mak
1749
fi
1750
if test "$inotify" = "yes" ; then
1751
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
1752
fi
1753 1754 1755 1756 1757 1758
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 已提交
1759
if test "$curl" = "yes" ; then
1760
  echo "CONFIG_CURL=y" >> $config_host_mak
J
Juan Quintela 已提交
1761
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
A
Alexander Graf 已提交
1762
fi
A
aurel32 已提交
1763
if test "$brlapi" = "yes" ; then
1764
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
A
aurel32 已提交
1765
fi
B
balrog 已提交
1766
if test "$bluez" = "yes" ; then
1767
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
1768
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
B
balrog 已提交
1769
fi
1770
if test "$xen" = "yes" ; then
J
Juan Quintela 已提交
1771
  echo "CONFIG_XEN=y" >> $config_host_mak
1772
fi
1773
if test "$io_thread" = "yes" ; then
1774
  echo "CONFIG_IOTHREAD=y" >> $config_host_mak
1775
fi
T
ths 已提交
1776
if test "$blobs" = "yes" ; then
1777
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
T
ths 已提交
1778
fi
A
aliguori 已提交
1779
if test "$iovec" = "yes" ; then
1780
  echo "CONFIG_IOVEC=y" >> $config_host_mak
A
aliguori 已提交
1781
fi
1782
if test "$preadv" = "yes" ; then
1783
  echo "CONFIG_PREADV=y" >> $config_host_mak
1784
fi
1785
if test "$fdt" = "yes" ; then
1786
  echo "CONFIG_FDT=y" >> $config_host_mak
1787
fi
1788

1789
# XXX: suppress that
B
bellard 已提交
1790
if [ "$bsd" = "yes" ] ; then
1791
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
1792 1793
fi

1794
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
1795

1796 1797 1798
# USB host support
case "$usb" in
linux)
1799
  echo "HOST_USB=linux" >> $config_host_mak
1800 1801
;;
bsd)
1802
  echo "HOST_USB=bsd" >> $config_host_mak
1803 1804
;;
*)
1805
  echo "HOST_USB=stub" >> $config_host_mak
1806 1807 1808
;;
esac

1809 1810
tools=
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
A
aliguori 已提交
1811
  tools="qemu-img\$(EXESUF) $tools"
B
bellard 已提交
1812
  if [ "$linux" = "yes" ] ; then
A
aliguori 已提交
1813
      tools="qemu-nbd\$(EXESUF) qemu-io\$(EXESUF) $tools"
B
bellard 已提交
1814
  fi
1815
fi
1816
echo "TOOLS=$tools" >> $config_host_mak
1817

1818
# Mac OS X ships with a broken assembler
A
Alexander Graf 已提交
1819
roms=
1820 1821
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
        "$targetos" != "Darwin" ; then
P
Paul Brook 已提交
1822
  roms="optionrom"
A
Alexander Graf 已提交
1823
fi
1824
echo "ROMS=$roms" >> $config_host_mak
A
Alexander Graf 已提交
1825

1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840
echo "prefix=$prefix" >> $config_host_mak
echo "bindir=\${prefix}$binsuffix" >> $config_host_mak
echo "mandir=\${prefix}$mansuffix" >> $config_host_mak
echo "datadir=\${prefix}$datasuffix" >> $config_host_mak
echo "docdir=\${prefix}$docsuffix" >> $config_host_mak
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
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 已提交
1841
  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
1842 1843 1844 1845
fi
echo "AR=$ar" >> $config_host_mak
echo "OBJCOPY=$objcopy" >> $config_host_mak
echo "LD=$ld" >> $config_host_mak
1846
echo "CFLAGS=$CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
1847
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
1848
echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
1849
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
1850 1851
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
J
Juan Quintela 已提交
1852
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
1853
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
1854 1855
echo "EXESUF=$EXESUF" >> $config_host_mak

1856 1857
echo "/* Automatically generated by configure - do not modify */" > $config_host_h

1858
/bin/sh $source_path/create_config < $config_host_mak >> $config_host_h
1859

1860 1861 1862
if test -f ${config_host_h}~ ; then
  if cmp -s $config_host_h ${config_host_h}~ ; then
    mv ${config_host_h}~ $config_host_h
P
Paul Brook 已提交
1863
  else
1864
    rm ${config_host_h}~
P
Paul Brook 已提交
1865 1866 1867
  fi
fi

1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879
# 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

1880
for target in $target_list; do
1881 1882 1883
target_dir="$target"
config_mak=$target_dir/config.mak
config_h=$target_dir/config.h
B
Blue Swirl 已提交
1884
target_arch2=`echo $target | cut -d '-' -f 1`
1885
target_bigendian="no"
1886 1887 1888 1889 1890
case "$target_arch2" in
  armeb|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|sh4eb|sparc|sparc64|sparc32plus)
  target_bigendian=yes
  ;;
esac
1891
target_softmmu="no"
B
bellard 已提交
1892
target_user_only="no"
1893 1894
target_linux_user="no"
target_darwin_user="no"
B
blueswir1 已提交
1895
target_bsd_user="no"
P
pbrook 已提交
1896
case "$target" in
B
Blue Swirl 已提交
1897
  ${target_arch2}-softmmu)
P
pbrook 已提交
1898 1899
    target_softmmu="yes"
    ;;
B
Blue Swirl 已提交
1900
  ${target_arch2}-linux-user)
P
pbrook 已提交
1901 1902 1903
    target_user_only="yes"
    target_linux_user="yes"
    ;;
B
Blue Swirl 已提交
1904
  ${target_arch2}-darwin-user)
P
pbrook 已提交
1905 1906 1907
    target_user_only="yes"
    target_darwin_user="yes"
    ;;
B
Blue Swirl 已提交
1908
  ${target_arch2}-bsd-user)
B
blueswir1 已提交
1909 1910 1911
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
P
pbrook 已提交
1912 1913 1914 1915 1916
  *)
    echo "ERROR: Target '$target' not recognised"
    exit 1
    ;;
esac
1917

B
bellard 已提交
1918
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1919

1920 1921
test -f $config_h && mv $config_h ${config_h}~

1922
mkdir -p $target_dir
B
bellard 已提交
1923
mkdir -p $target_dir/fpu
B
bellard 已提交
1924
mkdir -p $target_dir/tcg
B
blueswir1 已提交
1925
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
B
bellard 已提交
1926 1927 1928
  mkdir -p $target_dir/nwfpe
fi

B
bellard 已提交
1929 1930 1931 1932 1933 1934
#
# 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

1935 1936

echo "# Automatically generated by configure - do not modify" > $config_mak
B
bellard 已提交
1937

1938
echo "include ../config-host.mak" >> $config_mak
1939

P
pbrook 已提交
1940
bflt="no"
1941
elfload32="no"
1942
target_nptl="no"
B
Blue Swirl 已提交
1943
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
1944
echo "CONFIG_QEMU_PREFIX=\"$interp_prefix1\"" >> $config_mak
P
pbrook 已提交
1945
gdb_xml_files=""
A
aliguori 已提交
1946

1947
TARGET_ARCH="$target_arch2"
1948
TARGET_BASE_ARCH=""
1949
TARGET_ABI_DIR=""
1950

B
Blue Swirl 已提交
1951
case "$target_arch2" in
A
aurel32 已提交
1952
  i386)
P
Paul Brook 已提交
1953
    target_phys_bits=32
A
aurel32 已提交
1954 1955
  ;;
  x86_64)
1956
    TARGET_BASE_ARCH=i386
P
Paul Brook 已提交
1957
    target_phys_bits=64
A
aurel32 已提交
1958 1959
  ;;
  alpha)
P
Paul Brook 已提交
1960
    target_phys_bits=64
A
aurel32 已提交
1961 1962
  ;;
  arm|armeb)
J
Juan Quintela 已提交
1963
    TARGET_ARCH=arm
A
aurel32 已提交
1964
    bflt="yes"
1965
    target_nptl="yes"
P
pbrook 已提交
1966
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
P
Paul Brook 已提交
1967
    target_phys_bits=32
A
aurel32 已提交
1968 1969
  ;;
  cris)
E
edgar_igl 已提交
1970
    target_nptl="yes"
P
Paul Brook 已提交
1971
    target_phys_bits=32
A
aurel32 已提交
1972 1973 1974
  ;;
  m68k)
    bflt="yes"
P
pbrook 已提交
1975
    gdb_xml_files="cf-core.xml cf-fp.xml"
P
Paul Brook 已提交
1976
    target_phys_bits=32
A
aurel32 已提交
1977
  ;;
1978 1979 1980 1981 1982
  microblaze)
    bflt="yes"
    target_nptl="yes"
    target_phys_bits=32
  ;;
J
Juan Quintela 已提交
1983
  mips|mipsel)
J
Juan Quintela 已提交
1984
    TARGET_ARCH=mips
1985
    echo "TARGET_ABI_MIPSO32=y" >> $config_mak
P
Paul Brook 已提交
1986
    target_nptl="yes"
P
Paul Brook 已提交
1987
    target_phys_bits=64
A
aurel32 已提交
1988 1989
  ;;
  mipsn32|mipsn32el)
J
Juan Quintela 已提交
1990
    TARGET_ARCH=mipsn32
1991
    TARGET_BASE_ARCH=mips
1992
    echo "TARGET_ABI_MIPSN32=y" >> $config_mak
P
Paul Brook 已提交
1993
    target_phys_bits=64
A
aurel32 已提交
1994 1995
  ;;
  mips64|mips64el)
J
Juan Quintela 已提交
1996
    TARGET_ARCH=mips64
1997
    TARGET_BASE_ARCH=mips
1998
    echo "TARGET_ABI_MIPSN64=y" >> $config_mak
P
Paul Brook 已提交
1999
    target_phys_bits=64
A
aurel32 已提交
2000 2001
  ;;
  ppc)
2002
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2003
    target_phys_bits=32
2004
    target_nptl="yes"
A
aurel32 已提交
2005 2006
  ;;
  ppcemb)
2007
    TARGET_BASE_ARCH=ppc
2008
    TARGET_ABI_DIR=ppc
2009
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2010
    target_phys_bits=64
2011
    target_nptl="yes"
A
aurel32 已提交
2012 2013
  ;;
  ppc64)
2014
    TARGET_BASE_ARCH=ppc
2015
    TARGET_ABI_DIR=ppc
2016
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2017
    target_phys_bits=64
A
aurel32 已提交
2018 2019
  ;;
  ppc64abi32)
J
Juan Quintela 已提交
2020
    TARGET_ARCH=ppc64
2021
    TARGET_BASE_ARCH=ppc
2022
    TARGET_ABI_DIR=ppc
2023
    echo "TARGET_ABI32=y" >> $config_mak
2024
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2025
    target_phys_bits=64
A
aurel32 已提交
2026 2027
  ;;
  sh4|sh4eb)
J
Juan Quintela 已提交
2028
    TARGET_ARCH=sh4
A
aurel32 已提交
2029
    bflt="yes"
A
aurel32 已提交
2030
    target_nptl="yes"
P
Paul Brook 已提交
2031
    target_phys_bits=32
A
aurel32 已提交
2032 2033
  ;;
  sparc)
P
Paul Brook 已提交
2034
    target_phys_bits=64
A
aurel32 已提交
2035 2036
  ;;
  sparc64)
2037
    TARGET_BASE_ARCH=sparc
A
aurel32 已提交
2038
    elfload32="yes"
P
Paul Brook 已提交
2039
    target_phys_bits=64
A
aurel32 已提交
2040 2041
  ;;
  sparc32plus)
J
Juan Quintela 已提交
2042
    TARGET_ARCH=sparc64
2043
    TARGET_BASE_ARCH=sparc
2044
    TARGET_ABI_DIR=sparc
2045
    echo "TARGET_ABI32=y" >> $config_mak
P
Paul Brook 已提交
2046
    target_phys_bits=64
A
aurel32 已提交
2047 2048 2049 2050 2051 2052
  ;;
  *)
    echo "Unsupported target CPU"
    exit 1
  ;;
esac
J
Juan Quintela 已提交
2053
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_mak
2054 2055
target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
echo "TARGET_$target_arch_name=y" >> $config_mak
J
Juan Quintela 已提交
2056
echo "TARGET_ARCH2=$target_arch2" >> $config_mak
2057
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
2058 2059 2060 2061
if [ "$TARGET_BASE_ARCH" = "" ]; then
  TARGET_BASE_ARCH=$TARGET_ARCH
fi
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_mak
2062 2063 2064 2065
if [ "$TARGET_ABI_DIR" = "" ]; then
  TARGET_ABI_DIR=$TARGET_ARCH
fi
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_mak
P
Paul Brook 已提交
2066 2067 2068
if [ $target_phys_bits -lt $hostlongbits ] ; then
  target_phys_bits=$hostlongbits
fi
J
Juan Quintela 已提交
2069 2070 2071 2072 2073 2074
case "$target_arch2" in
  i386|x86_64)
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
      echo "CONFIG_XEN=y" >> $config_mak
    fi
esac
J
Juan Quintela 已提交
2075
case "$target_arch2" in
A
Alexander Graf 已提交
2076
  i386|x86_64|ppcemb|ppc|ppc64)
J
Juan Quintela 已提交
2077 2078 2079 2080
    # 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 已提交
2081
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
J
Juan Quintela 已提交
2082 2083 2084 2085 2086 2087
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
      echo "CONFIG_KVM=y" >> $config_mak
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
    fi
esac
P
Paul Brook 已提交
2088
echo "HWLIB=../libhw$target_phys_bits/libqemuhw$target_phys_bits.a" >> $config_mak
2089
echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_mak
P
Paul Brook 已提交
2090
echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
B
bellard 已提交
2091
if test "$target_bigendian" = "yes" ; then
2092
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_mak
B
bellard 已提交
2093
fi
2094
if test "$target_softmmu" = "yes" ; then
2095
  echo "CONFIG_SOFTMMU=y" >> $config_mak
J
Juan Quintela 已提交
2096
  echo "LIBS+=$libs_softmmu" >> $config_mak
B
bellard 已提交
2097
fi
B
bellard 已提交
2098
if test "$target_user_only" = "yes" ; then
2099
  echo "CONFIG_USER_ONLY=y" >> $config_mak
B
bellard 已提交
2100
fi
2101
if test "$target_linux_user" = "yes" ; then
2102
  echo "CONFIG_LINUX_USER=y" >> $config_mak
2103 2104
fi
if test "$target_darwin_user" = "yes" ; then
2105
  echo "CONFIG_DARWIN_USER=y" >> $config_mak
2106
fi
P
pbrook 已提交
2107 2108 2109 2110 2111 2112 2113
list=""
if test ! -z "$gdb_xml_files" ; then
  for x in $gdb_xml_files; do
    list="$list $source_path/gdb-xml/$x"
  done
fi
echo "TARGET_XML_FILES=$list" >> $config_mak
2114

2115 2116 2117 2118
case "$target_arch2" in
  arm|armeb|m68k|microblaze|mips|mipsel|mipsn32|mipsn32el|mips64|mips64el|ppc|ppc64|ppc64abi32|ppcemb|sparc|sparc64|sparc32plus)
    echo "CONFIG_SOFTFLOAT=y" >> $config_mak
    ;;
2119 2120 2121
  *)
    echo "CONFIG_NOSOFTFLOAT=y" >> $config_mak
    ;;
2122 2123
esac

P
pbrook 已提交
2124
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
2125
  echo "TARGET_HAS_BFLT=y" >> $config_mak
P
pbrook 已提交
2126
fi
2127 2128
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
2129
  echo "CONFIG_USE_NPTL=y" >> $config_mak
2130
fi
2131 2132
# 32 bit ELF loader in addition to native 64 bit loader?
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
2133
  echo "TARGET_HAS_ELFLOAD32=y" >> $config_mak
2134
fi
P
Paul Brook 已提交
2135 2136 2137
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_mak
fi
B
blueswir1 已提交
2138
if test "$target_bsd_user" = "yes" ; then
2139
  echo "CONFIG_BSD_USER=y" >> $config_mak
B
blueswir1 已提交
2140
fi
2141

2142
# generate QEMU_CFLAGS/LDFLAGS for targets
2143

2144
cflags=""
2145
ldflags=""
2146

J
Juan Quintela 已提交
2147 2148 2149 2150 2151 2152 2153 2154
if test "$ARCH" = "sparc64" ; then
  cflags="-I\$(SRC_PATH)/tcg/sparc $cflags"
else
  cflags="-I\$(SRC_PATH)/tcg/\$(ARCH) $cflags"
fi
cflags="-I\$(SRC_PATH)/tcg $cflags"
cflags="-I\$(SRC_PATH)/fpu $cflags"

2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195
for i in $ARCH $TARGET_BASE_ARCH ; do
  case "$i" in
  alpha)
    echo "CONFIG_ALPHA_DIS=y"  >> $config_mak
  ;;
  arm)
    echo "CONFIG_ARM_DIS=y"  >> $config_mak
  ;;
  cris)
    echo "CONFIG_CRIS_DIS=y"  >> $config_mak
  ;;
  hppa)
    echo "CONFIG_HPPA_DIS=y"  >> $config_mak
  ;;
  i386|x86_64)
    echo "CONFIG_I386_DIS=y"  >> $config_mak
  ;;
  m68k)
    echo "CONFIG_M68K_DIS=y"  >> $config_mak
  ;;
  microblaze)
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_mak
  ;;
  mips*)
    echo "CONFIG_MIPS_DIS=y"  >> $config_mak
  ;;
  ppc*)
    echo "CONFIG_PPC_DIS=y"  >> $config_mak
  ;;
  s390)
    echo "CONFIG_S390_DIS=y"  >> $config_mak
  ;;
  sh4)
    echo "CONFIG_SH4_DIS=y"  >> $config_mak
  ;;
  sparc*)
    echo "CONFIG_SPARC_DIS=y"  >> $config_mak
  ;;
  esac
done

2196 2197 2198 2199 2200
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
2201 2202 2203
ia64)
  cflags="-mno-sdata $cflags"
;;
2204 2205
esac

2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216
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

2217 2218 2219 2220 2221 2222
if test "$target_softmmu" = "yes" -a \( \
        "$TARGET_ARCH" = "microblaze" -o \
        "$TARGET_ARCH" = "cris" \) ; then
  echo "CONFIG_NEED_MMU=y" >> $config_mak
fi

2223 2224 2225 2226 2227 2228 2229 2230
if test "$gprof" = "yes" ; then
  echo "TARGET_GPROF=yes" >> $config_mak
  if test "$target_linux_user" = "yes" ; then
    cflags="-p $cflags"
    ldflags="-p $ldflags"
  fi
  if test "$target_softmmu" = "yes" ; then
    ldflags="-p $ldflags"
2231
    echo "GPROF_CFLAGS=-p" >> $config_mak
2232 2233 2234
  fi
fi

2235
linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
2236
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
2237 2238 2239
  case "$ARCH" in
  i386)
    if test "$gprof" = "yes" -o "$static" = "yes" ; then
2240
      ldflags="$linker_script $ldflags"
2241 2242 2243 2244
    else
      # WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
      # that the kernel ELF loader considers as an executable. I think this
      # is the simplest way to make it self virtualizable!
2245
      ldflags="-Wl,-shared $ldflags"
2246 2247 2248 2249
    fi
    ;;
  sparc)
    # -static is used to avoid g1/g3 usage by the dynamic linker
2250
    ldflags="$linker_script -static $ldflags"
2251 2252
    ;;
  ia64)
2253
    ldflags="-Wl,-G0 $linker_script -static $ldflags"
2254 2255
    ;;
  x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64)
2256
    ldflags="$linker_script $ldflags"
2257 2258 2259 2260 2261 2262
    ;;
  esac
fi
if test "$target_softmmu" = "yes" ; then
  case "$ARCH" in
  ia64)
2263
    ldflags="-Wl,-G0 $linker_script -static $ldflags"
2264 2265 2266 2267
    ;;
  esac
fi

2268
echo "LDFLAGS+=$ldflags" >> $config_mak
2269
echo "QEMU_CFLAGS+=$cflags" >> $config_mak
2270

2271 2272 2273
echo "/* Automatically generated by configure - do not modify */" > $config_h
echo "#include \"../config-host.h\"" >> $config_h

2274
/bin/sh $source_path/create_config < $config_mak >> $config_h
2275

2276 2277 2278 2279 2280 2281 2282
if test -f ${config_h}~ ; then
  if cmp -s $config_h ${config_h}~ ; then
    mv ${config_h}~ $config_h
  else
    rm ${config_h}~
  fi
fi
2283

2284
done # for target in $targets
B
bellard 已提交
2285 2286 2287

# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
A
Alexander Graf 已提交
2288
    DIRS="tests tests/cris slirp audio block pc-bios/optionrom"
B
bellard 已提交
2289
    FILES="Makefile tests/Makefile"
2290
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
E
edgar_igl 已提交
2291
    FILES="$FILES tests/test-mmap.c"
2292 2293 2294 2295
    FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps pc-bios/video.x"
    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 已提交
2296 2297 2298
    for dir in $DIRS ; do
            mkdir -p $dir
    done
B
bellard 已提交
2299
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
B
bellard 已提交
2300
    for f in $FILES ; do
B
bellard 已提交
2301 2302
        rm -f $f
        ln -s $source_path/$f $f
B
bellard 已提交
2303 2304
    done
fi
P
Paul Brook 已提交
2305 2306 2307 2308 2309 2310 2311

for hwlib in 32 64; do
  d=libhw$hwlib
  mkdir -p $d
  rm -f $d/Makefile
  ln -s $source_path/Makefile.hw $d/Makefile
  echo "HWLIB=libqemuhw$hwlib.a" > $d/config.mak
J
Juan Quintela 已提交
2312
  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" >> $d/config.mak
P
Paul Brook 已提交
2313
done