configure 57.4 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
brlapi=""
181
curl=""
182
curses=""
183
nptl=""
184
vde=""
185
vnc_tls=""
186
vnc_sasl=""
187

B
bellard 已提交
188
gprof="no"
189
debug_tcg="no"
P
Paul Brook 已提交
190
debug="no"
191
sparse="no"
192
strip_opt="yes"
B
bellard 已提交
193
bigendian="no"
B
bellard 已提交
194 195
mingw32="no"
EXESUF=""
B
bellard 已提交
196
slirp="yes"
B
bellard 已提交
197 198
fmod_lib=""
fmod_inc=""
B
blueswir1 已提交
199
oss_lib=""
200
bsd="no"
B
bellard 已提交
201
linux="no"
B
blueswir1 已提交
202
solaris="no"
203
profiler="no"
204
cocoa="no"
205
softmmu="yes"
206 207
linux_user="no"
darwin_user="no"
B
blueswir1 已提交
208
bsd_user="no"
P
Paul Brook 已提交
209
guest_base=""
210
build_docs="yes"
211
uname_release=""
212
io_thread="no"
213
mixemu="no"
B
balrog 已提交
214
bluez="yes"
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"
  ;;
A
aliguori 已提交
458 459
  --disable-kvm) kvm="no"
  ;;
460 461
  --enable-profiler) profiler="yes"
  ;;
462 463 464 465
  --enable-cocoa)
      cocoa="yes" ;
      sdl="no" ;
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
466
  ;;
P
pbrook 已提交
467
  --disable-system) softmmu="no"
468
  ;;
P
pbrook 已提交
469
  --enable-system) softmmu="yes"
470
  ;;
471 472 473 474 475 476
  --disable-user)
      linux_user="no" ;
      bsd_user="no" ;
      darwin_user="no"
  ;;
  --enable-user) ;;
477
  --disable-linux-user) linux_user="no"
478
  ;;
479 480 481 482 483
  --enable-linux-user) linux_user="yes"
  ;;
  --disable-darwin-user) darwin_user="no"
  ;;
  --enable-darwin-user) darwin_user="yes"
484
  ;;
B
blueswir1 已提交
485 486 487 488
  --disable-bsd-user) bsd_user="no"
  ;;
  --enable-bsd-user) bsd_user="yes"
  ;;
P
Paul Brook 已提交
489 490 491 492
  --enable-guest-base) guest_base="yes"
  ;;
  --disable-guest-base) guest_base="no"
  ;;
493 494
  --enable-uname-release=*) uname_release="$optarg"
  ;;
495 496
  --sparc_cpu=*)
  ;;
497 498 499 500
  --enable-werror) werror="yes"
  ;;
  --disable-werror) werror="no"
  ;;
B
balrog 已提交
501 502
  --disable-curses) curses="no"
  ;;
503 504
  --enable-curses) curses="yes"
  ;;
A
Alexander Graf 已提交
505 506
  --disable-curl) curl="no"
  ;;
507 508
  --enable-curl) curl="yes"
  ;;
509 510
  --disable-nptl) nptl="no"
  ;;
511 512
  --enable-nptl) nptl="yes"
  ;;
513 514
  --enable-mixemu) mixemu="yes"
  ;;
515 516
  --enable-io-thread) io_thread="yes"
  ;;
T
ths 已提交
517 518
  --disable-blobs) blobs="no"
  ;;
A
aliguori 已提交
519 520
  --kerneldir=*) kerneldir="$optarg"
  ;;
P
pbrook 已提交
521 522
  --with-pkgversion=*) pkgversion=" ($optarg)"
  ;;
523 524
  --disable-docs) build_docs="no"
  ;;
525 526
  *) echo "ERROR: unknown option $opt"; show_help="yes"
  ;;
B
bellard 已提交
527 528 529
  esac
done

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

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

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

666 667 668 669
if test ! -x "$(which cgcc 2>/dev/null)"; then
    sparse="no"
fi

B
bellard 已提交
670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694
#
# 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
695
fi
B
bellard 已提交
696 697


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

765 766 767 768 769 770 771 772 773 774
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 已提交
775 776 777 778 779 780 781
if test -z "$cross_prefix" ; then

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

787
if compile_prog "" "" ; then
B
bellard 已提交
788 789 790 791 792 793 794 795
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

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

fi

B
bellard 已提交
804 805
# host long bits test
hostlongbits="32"
806 807 808 809 810
case "$cpu" in
  x86_64|alpha|ia64|sparc64|ppc64)
    hostlongbits=64
  ;;
esac
B
bellard 已提交
811

812 813 814 815 816 817

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

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

828 829 830 831 832 833 834 835
  if compile_object ; then
    nptl=yes
  else
    if test "$nptl" = "yes" ; then
      feature_not_found "nptl"
    fi
    nptl=no
  fi
836 837
fi

838 839 840 841 842 843 844
##########################################
# zlib check

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

855 856 857 858
##########################################
# xen probe

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

B
bellard 已提交
872 873 874 875 876
##########################################
# SDL probe

sdl_too_old=no

877
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
878 879
  sdl=no
  cat > $TMPC << EOF
B
bellard 已提交
880 881 882 883
#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 已提交
884 885
  sdl_cflags=`sdl-config --cflags 2> /dev/null`
  sdl_libs=`sdl-config --libs 2> /dev/null`
886
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
887 888 889 890 891 892 893 894
    _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 已提交
895

J
Juan Quintela 已提交
896 897 898 899 900 901 902
    # 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
903
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
904 905 906 907 908 909
	:
      else
        sdl=no
      fi
    fi # static link
  fi # sdl compile test
910
fi
B
bellard 已提交
911

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

931 932
##########################################
# VNC TLS detection
933 934
if test "$vnc_tls" != "no" ; then
  cat > $TMPC <<EOF
935 936 937
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
938 939 940 941 942 943 944 945
  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"
946
    fi
947 948
    vnc_tls=no
  fi
949 950
fi

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

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

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

1013
##########################################
1014
# Sound support libraries probe
1015

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

1038
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1039 1040 1041 1042 1043
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);"
1044
    libs_softmmu="-lasound $libs_softmmu"
1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055
    ;;

    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"
1056
    libs_softmmu="$fmod_lib $libs_softmmu"
1057 1058 1059 1060
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1061
    libs_softmmu="-lesd $libs_softmmu"
1062
    audio_pt_int="yes"
1063
    ;;
M
malc 已提交
1064 1065 1066 1067

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

1072 1073 1074 1075
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

1076 1077 1078 1079 1080 1081 1082 1083 1084
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
    ;;

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

    sdl|wav)
B
blueswir1 已提交
1085 1086 1087
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

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

A
aurel32 已提交
1100 1101 1102
##########################################
# BrlAPI probe

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

B
balrog 已提交
1120 1121
##########################################
# curses probe
1122
curses_list="-lncurses -lcurses"
B
balrog 已提交
1123

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

A
Alexander Graf 已提交
1150 1151 1152
##########################################
# curl probe

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

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

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

1241
##########################################
1242
# pthread probe
1243
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1244

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

1258
if test "$pthread" = no; then
C
Christoph Hellwig 已提交
1259 1260 1261 1262 1263
  echo
  echo "Error: pthread check failed"
  echo "Make sure to have the pthread libs and headers installed."
  echo
  exit 1
1264 1265
fi

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

1279 1280 1281 1282 1283 1284 1285 1286 1287
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
int main(void) { preadv; }
EOF
preadv=no
1288
if compile_prog "" "" ; then
1289 1290 1291
  preadv=yes
fi

1292 1293 1294
##########################################
# fdt probe
if test "$fdt" = "yes" ; then
J
Juan Quintela 已提交
1295 1296 1297
  fdt=no
  fdt_libs="-lfdt"
  cat > $TMPC << EOF
1298 1299
int main(void) { return 0; }
EOF
1300
  if compile_prog "" "$fdt_libs" ; then
1301
    fdt=yes
J
Juan Quintela 已提交
1302
    libs_softmmu="$fdt_libs $libs_softmmu"
1303 1304 1305
  fi
fi

1306 1307 1308 1309 1310 1311
#
# 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
1312
cat > $TMPC << EOF
1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324
#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
1325
if compile_prog "" "" ; then
1326
  atfile=yes
1327 1328
fi

A
aurel32 已提交
1329
# Check for inotify functions when we are building linux-user
1330 1331 1332 1333 1334
# 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
1335
cat > $TMPC << EOF
1336 1337 1338 1339 1340 1341
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
1342
	return inotify_init();
1343 1344
}
EOF
1345
if compile_prog "" "" ; then
1346
  inotify=yes
1347 1348
fi

R
Riku Voipio 已提交
1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363
# 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
1364
if compile_prog "" "" ; then
R
Riku Voipio 已提交
1365 1366 1367
  utimens=yes
fi

R
Riku Voipio 已提交
1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381
# 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
1382
if compile_prog "" "" ; then
R
Riku Voipio 已提交
1383 1384 1385
  pipe2=yes
fi

1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401
# 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
1402
if compile_prog "" "" ; then
1403 1404 1405
  splice=yes
fi

1406
# Check if tools are available to build documentation.
1407 1408
if test "$build_docs" = "yes" -a \( ! -x "`which texi2html 2>/dev/null`" -o ! -x "`which pod2man 2>/dev/null`" \) ; then
  build_docs="no"
1409 1410
fi

1411 1412 1413 1414 1415 1416
# Search for bsawp_32 function
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
1417
if compile_prog "" "" ; then
1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428
  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
1429
if compile_prog "" "" ; then
1430 1431 1432
  bswap_h=yes
fi

A
aliguori 已提交
1433 1434 1435 1436 1437 1438 1439 1440
##########################################
# 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

1441
if compile_prog "" "" ; then
1442
  :
1443
elif compile_prog "" "-lrt" ; then
1444
  LIBS="-lrt $LIBS"
A
aliguori 已提交
1445 1446
fi

1447 1448 1449 1450 1451 1452 1453
# Determine what linker flags to use to force archive inclusion
check_linker_flags()
{
    w2=
    if test "$2" ; then
	w2=-Wl,$2
    fi
1454
    compile_prog "" "-Wl,$1 ${w2}"
1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477
}

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

1478 1479 1480 1481 1482
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaries" != yes -a \
        "$aix" != "yes" ; then
    libs_softmmu="-lutil $libs_softmmu"
fi

1483 1484 1485 1486
# End of CC checks
# After here, no more $cc or $ld runs

# default flags for all hosts
J
Juan Quintela 已提交
1487 1488
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
CFLAGS="-g $CFLAGS"
1489
if test "$debug" = "no" ; then
1490
  CFLAGS="-O2 $CFLAGS"
1491
fi
J
Juan Quintela 已提交
1492 1493
QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
1494 1495 1496
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"
1497
LDFLAGS="-g $LDFLAGS"
1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511

# 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 已提交
1512
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
1513 1514 1515 1516
fi

if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
1517
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
1518 1519 1520
    fi
fi

B
bellard 已提交
1521
if test "$mingw32" = "yes" ; then
P
pbrook 已提交
1522
  if test -z "$prefix" ; then
S
Stefan Weil 已提交
1523
      prefix="c:/Program Files/Qemu"
P
pbrook 已提交
1524 1525 1526 1527 1528
  fi
  mansuffix=""
  datasuffix=""
  docsuffix=""
  binsuffix=""
B
bellard 已提交
1529
else
P
pbrook 已提交
1530 1531 1532 1533 1534 1535 1536
  if test -z "$prefix" ; then
      prefix="/usr/local"
  fi
  mansuffix="/share/man"
  datasuffix="/share/qemu"
  docsuffix="/share/doc/qemu"
  binsuffix="/bin"
B
bellard 已提交
1537
fi
1538

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

1593
if test $sdl_too_old = "yes"; then
B
bellard 已提交
1594
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
1595
fi
B
bellard 已提交
1596

1597 1598
config_host_mak="config-host.mak"
config_host_h="config-host.h"
1599
config_host_ld="config-host.ld"
1600 1601 1602 1603 1604 1605 1606 1607 1608 1609

#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

1610
echo "CONFIG_QEMU_SHAREDIR=\"$prefix$datasuffix\"" >> $config_host_mak
1611

A
aurel32 已提交
1612
case "$cpu" in
1613
  i386|x86_64|alpha|cris|hppa|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
1614
    ARCH=$cpu
A
aurel32 已提交
1615
  ;;
1616
  armv4b|armv4l)
1617
    ARCH=arm
A
aurel32 已提交
1618 1619 1620 1621 1622 1623
  ;;
  *)
    echo "Unsupported CPU = $cpu"
    exit 1
  ;;
esac
1624
echo "ARCH=$ARCH" >> $config_host_mak
1625
if test "$debug_tcg" = "yes" ; then
1626
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
1627
fi
P
Paul Brook 已提交
1628
if test "$debug" = "yes" ; then
1629
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
P
Paul Brook 已提交
1630
fi
1631
if test "$strip_opt" = "yes" ; then
1632
  echo "STRIP_OPT=-s" >> $config_host_mak
1633
fi
B
bellard 已提交
1634
if test "$bigendian" = "yes" ; then
1635
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
1636
fi
1637
echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
B
bellard 已提交
1638
if test "$mingw32" = "yes" ; then
1639
  echo "CONFIG_WIN32=y" >> $config_host_mak
1640
else
J
Juan Quintela 已提交
1641
  echo "CONFIG_POSIX=y" >> $config_host_mak
B
bellard 已提交
1642
fi
1643

1644
if test "$darwin" = "yes" ; then
1645
  echo "CONFIG_DARWIN=y" >> $config_host_mak
1646
fi
M
malc 已提交
1647 1648

if test "$aix" = "yes" ; then
1649
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
1650 1651
fi

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

1774
# XXX: suppress that
B
bellard 已提交
1775
if [ "$bsd" = "yes" ] ; then
1776
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
1777 1778
fi

1779
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
1780

1781 1782 1783
# USB host support
case "$usb" in
linux)
1784
  echo "HOST_USB=linux" >> $config_host_mak
1785 1786
;;
bsd)
1787
  echo "HOST_USB=bsd" >> $config_host_mak
1788 1789
;;
*)
1790
  echo "HOST_USB=stub" >> $config_host_mak
1791 1792 1793
;;
esac

1794 1795
tools=
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
A
aliguori 已提交
1796
  tools="qemu-img\$(EXESUF) $tools"
B
bellard 已提交
1797
  if [ "$linux" = "yes" ] ; then
A
aliguori 已提交
1798
      tools="qemu-nbd\$(EXESUF) qemu-io\$(EXESUF) $tools"
B
bellard 已提交
1799
  fi
1800
fi
1801
echo "TOOLS=$tools" >> $config_host_mak
1802

1803
# Mac OS X ships with a broken assembler
A
Alexander Graf 已提交
1804
roms=
1805 1806
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
        "$targetos" != "Darwin" ; then
P
Paul Brook 已提交
1807
  roms="optionrom"
A
Alexander Graf 已提交
1808
fi
1809
echo "ROMS=$roms" >> $config_host_mak
A
Alexander Graf 已提交
1810

1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825
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 已提交
1826
  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
1827 1828 1829 1830
fi
echo "AR=$ar" >> $config_host_mak
echo "OBJCOPY=$objcopy" >> $config_host_mak
echo "LD=$ld" >> $config_host_mak
1831
echo "CFLAGS=$CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
1832
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
1833
echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
1834
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
1835 1836
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
J
Juan Quintela 已提交
1837
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
1838
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
1839 1840
echo "EXESUF=$EXESUF" >> $config_host_mak

1841 1842
echo "/* Automatically generated by configure - do not modify */" > $config_host_h

1843
/bin/sh $source_path/create_config < $config_host_mak >> $config_host_h
1844

1845 1846 1847
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 已提交
1848
  else
1849
    rm ${config_host_h}~
P
Paul Brook 已提交
1850 1851 1852
  fi
fi

1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864
# 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

1865
for target in $target_list; do
1866 1867 1868
target_dir="$target"
config_mak=$target_dir/config.mak
config_h=$target_dir/config.h
B
Blue Swirl 已提交
1869
target_arch2=`echo $target | cut -d '-' -f 1`
1870
target_bigendian="no"
1871 1872 1873 1874 1875
case "$target_arch2" in
  armeb|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|sh4eb|sparc|sparc64|sparc32plus)
  target_bigendian=yes
  ;;
esac
1876
target_softmmu="no"
B
bellard 已提交
1877
target_user_only="no"
1878 1879
target_linux_user="no"
target_darwin_user="no"
B
blueswir1 已提交
1880
target_bsd_user="no"
P
pbrook 已提交
1881
case "$target" in
B
Blue Swirl 已提交
1882
  ${target_arch2}-softmmu)
P
pbrook 已提交
1883 1884
    target_softmmu="yes"
    ;;
B
Blue Swirl 已提交
1885
  ${target_arch2}-linux-user)
P
pbrook 已提交
1886 1887 1888
    target_user_only="yes"
    target_linux_user="yes"
    ;;
B
Blue Swirl 已提交
1889
  ${target_arch2}-darwin-user)
P
pbrook 已提交
1890 1891 1892
    target_user_only="yes"
    target_darwin_user="yes"
    ;;
B
Blue Swirl 已提交
1893
  ${target_arch2}-bsd-user)
B
blueswir1 已提交
1894 1895 1896
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
P
pbrook 已提交
1897 1898 1899 1900 1901
  *)
    echo "ERROR: Target '$target' not recognised"
    exit 1
    ;;
esac
1902

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

1905 1906
test -f $config_h && mv $config_h ${config_h}~

1907
mkdir -p $target_dir
B
bellard 已提交
1908
mkdir -p $target_dir/fpu
B
bellard 已提交
1909
mkdir -p $target_dir/tcg
B
blueswir1 已提交
1910
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
B
bellard 已提交
1911 1912 1913
  mkdir -p $target_dir/nwfpe
fi

B
bellard 已提交
1914 1915 1916 1917 1918 1919
#
# 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

1920 1921

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

1923
echo "include ../config-host.mak" >> $config_mak
1924

P
pbrook 已提交
1925
bflt="no"
1926
elfload32="no"
1927
target_nptl="no"
B
Blue Swirl 已提交
1928
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
1929
echo "CONFIG_QEMU_PREFIX=\"$interp_prefix1\"" >> $config_mak
P
pbrook 已提交
1930
gdb_xml_files=""
A
aliguori 已提交
1931

1932
TARGET_ARCH="$target_arch2"
1933
TARGET_BASE_ARCH=""
1934
TARGET_ABI_DIR=""
1935

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

2100 2101 2102 2103
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
    ;;
2104 2105 2106
  *)
    echo "CONFIG_NOSOFTFLOAT=y" >> $config_mak
    ;;
2107 2108
esac

P
pbrook 已提交
2109
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
2110
  echo "TARGET_HAS_BFLT=y" >> $config_mak
P
pbrook 已提交
2111
fi
2112 2113
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
2114
  echo "CONFIG_USE_NPTL=y" >> $config_mak
2115
fi
2116 2117
# 32 bit ELF loader in addition to native 64 bit loader?
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
2118
  echo "TARGET_HAS_ELFLOAD32=y" >> $config_mak
2119
fi
P
Paul Brook 已提交
2120 2121 2122
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_mak
fi
B
blueswir1 已提交
2123
if test "$target_bsd_user" = "yes" ; then
2124
  echo "CONFIG_BSD_USER=y" >> $config_mak
B
blueswir1 已提交
2125
fi
2126

2127
# generate QEMU_CFLAGS/LDFLAGS for targets
2128

2129
cflags=""
2130
ldflags=""
2131

J
Juan Quintela 已提交
2132 2133 2134 2135 2136 2137 2138 2139
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"

2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 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
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

2181 2182 2183 2184 2185
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
2186 2187 2188
ia64)
  cflags="-mno-sdata $cflags"
;;
2189 2190
esac

2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201
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

2202 2203 2204 2205 2206 2207
if test "$target_softmmu" = "yes" -a \( \
        "$TARGET_ARCH" = "microblaze" -o \
        "$TARGET_ARCH" = "cris" \) ; then
  echo "CONFIG_NEED_MMU=y" >> $config_mak
fi

2208 2209 2210 2211 2212 2213 2214 2215
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"
2216
    echo "GPROF_CFLAGS=-p" >> $config_mak
2217 2218 2219
  fi
fi

2220
linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
2221
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
2222 2223 2224
  case "$ARCH" in
  i386)
    if test "$gprof" = "yes" -o "$static" = "yes" ; then
2225
      ldflags="$linker_script $ldflags"
2226 2227 2228 2229
    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!
2230
      ldflags="-Wl,-shared $ldflags"
2231 2232 2233 2234
    fi
    ;;
  sparc)
    # -static is used to avoid g1/g3 usage by the dynamic linker
2235
    ldflags="$linker_script -static $ldflags"
2236 2237
    ;;
  ia64)
2238
    ldflags="-Wl,-G0 $linker_script -static $ldflags"
2239 2240
    ;;
  x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64)
2241
    ldflags="$linker_script $ldflags"
2242 2243 2244 2245 2246 2247
    ;;
  esac
fi
if test "$target_softmmu" = "yes" ; then
  case "$ARCH" in
  ia64)
2248
    ldflags="-Wl,-G0 $linker_script -static $ldflags"
2249 2250 2251 2252
    ;;
  esac
fi

2253
echo "LDFLAGS+=$ldflags" >> $config_mak
2254
echo "QEMU_CFLAGS+=$cflags" >> $config_mak
2255

2256 2257 2258
echo "/* Automatically generated by configure - do not modify */" > $config_h
echo "#include \"../config-host.h\"" >> $config_h

2259
/bin/sh $source_path/create_config < $config_mak >> $config_h
2260

2261 2262 2263 2264 2265 2266 2267
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
2268

2269
done # for target in $targets
B
bellard 已提交
2270 2271 2272

# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
A
Alexander Graf 已提交
2273
    DIRS="tests tests/cris slirp audio block pc-bios/optionrom"
B
bellard 已提交
2274
    FILES="Makefile tests/Makefile"
2275
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
E
edgar_igl 已提交
2276
    FILES="$FILES tests/test-mmap.c"
2277 2278 2279 2280
    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 已提交
2281 2282 2283
    for dir in $DIRS ; do
            mkdir -p $dir
    done
B
bellard 已提交
2284
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
B
bellard 已提交
2285
    for f in $FILES ; do
B
bellard 已提交
2286 2287
        rm -f $f
        ln -s $source_path/$f $f
B
bellard 已提交
2288 2289
    done
fi
P
Paul Brook 已提交
2290 2291 2292 2293 2294 2295 2296

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 已提交
2297
  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" >> $d/config.mak
P
Paul Brook 已提交
2298
done