configure 61.8 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=""
J
Juan Quintela 已提交
184
docs=""
185
fdt=""
186
kvm=""
187
nptl=""
188
sdl=""
189
sparse="no"
190
vde=""
191
vnc_tls=""
192
vnc_sasl=""
193
xen=""
194
linux_aio=""
195

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

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

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

B
bellard 已提交
353
if [ "$bsd" = "yes" ] ; then
354
  if [ "$darwin" != "yes" ] ; then
355
    make="gmake"
356
    usb="bsd"
357
  fi
B
blueswir1 已提交
358
  bsd_user="yes"
B
bellard 已提交
359 360
fi

361 362
if test "$mingw32" = "yes" ; then
  EXESUF=".exe"
J
Juan Quintela 已提交
363
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
364
  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
365 366
fi

B
bellard 已提交
367
# find source path
P
pbrook 已提交
368
source_path=`dirname "$0"`
369 370
source_path_used="no"
workdir=`pwd`
P
pbrook 已提交
371
if [ -z "$source_path" ]; then
372
    source_path=$workdir
P
pbrook 已提交
373 374
else
    source_path=`cd "$source_path"; pwd`
B
bellard 已提交
375
fi
P
pbrook 已提交
376
[ -f "$workdir/vl.c" ] || source_path_used="yes"
B
bellard 已提交
377

378
werror=""
379

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

562 563
#
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
J
Juan Quintela 已提交
564
# QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
565
#
P
Paul Brook 已提交
566
host_guest_base="no"
567
case "$cpu" in
568 569
    sparc) case $sparc_cpu in
           v7|v8)
J
Juan Quintela 已提交
570
             QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
571 572
           ;;
           v8plus|v8plusa)
J
Juan Quintela 已提交
573
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
574 575
           ;;
           *) # sparc_cpu not defined in the command line
J
Juan Quintela 已提交
576
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
577 578
           esac
           LDFLAGS="-m32 $LDFLAGS"
J
Juan Quintela 已提交
579
           QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
580
           if test "$solaris" = "no" ; then
J
Juan Quintela 已提交
581
             QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
J
Juan Quintela 已提交
582
             helper_cflags="-ffixed-i0"
583
           fi
584
           ;;
585
    sparc64)
J
Juan Quintela 已提交
586
           QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
587
           LDFLAGS="-m64 $LDFLAGS"
J
Juan Quintela 已提交
588
           QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
589
           if test "$solaris" != "no" ; then
J
Juan Quintela 已提交
590
             QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
591
           fi
592
           ;;
593
    s390)
J
Juan Quintela 已提交
594
           QEMU_CFLAGS="-march=z900 $QEMU_CFLAGS"
595
           ;;
596
    i386)
J
Juan Quintela 已提交
597
           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
598
           LDFLAGS="-m32 $LDFLAGS"
J
Juan Quintela 已提交
599
           helper_cflags="-fomit-frame-pointer"
P
Paul Brook 已提交
600
           host_guest_base="yes"
601 602
           ;;
    x86_64)
J
Juan Quintela 已提交
603
           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
604
           LDFLAGS="-m64 $LDFLAGS"
P
Paul Brook 已提交
605 606 607 608
           host_guest_base="yes"
           ;;
    arm*)
           host_guest_base="yes"
609
           ;;
M
malc 已提交
610 611 612
    ppc*)
           host_guest_base="yes"
           ;;
613 614
esac

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

617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635
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 已提交
636
echo "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
637
echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
638
echo "  --make=MAKE              use specified make [$make]"
639
echo "  --install=INSTALL        use specified install [$install]"
640
echo "  --static                 enable static build [$static]"
641 642
echo "  --enable-debug-tcg       enable TCG debugging"
echo "  --disable-debug-tcg      disable TCG debugging (default)"
643
echo "  --enable-debug           enable common debug build options"
644 645
echo "  --enable-sparse          enable sparse checker"
echo "  --disable-sparse         disable sparse checker (default)"
646
echo "  --disable-strip          disable stripping binaries"
647
echo "  --disable-werror         disable compilation abort on warning"
648
echo "  --disable-sdl            disable SDL"
649
echo "  --enable-sdl             enable SDL"
650
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
651 652
echo "  --audio-drv-list=LIST    set audio drivers list:"
echo "                           Available drivers: $audio_possible_drivers"
M
malc 已提交
653 654
echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
echo "                           Available cards: $audio_possible_cards"
655
echo "  --enable-mixemu          enable mixer emulation"
656
echo "  --disable-xen            disable xen backend driver support"
657
echo "  --enable-xen             enable xen backend driver support"
A
aurel32 已提交
658
echo "  --disable-brlapi         disable BrlAPI"
659
echo "  --enable-brlapi          enable BrlAPI"
660
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
661
echo "  --enable-vnc-tls         enable TLS encryption for VNC server"
662
echo "  --disable-vnc-sasl       disable SASL encryption for VNC server"
663
echo "  --enable-vnc-sasl        enable SASL encryption for VNC server"
P
pbrook 已提交
664
echo "  --disable-curses         disable curses output"
665
echo "  --enable-curses          enable curses output"
A
Alexander Graf 已提交
666
echo "  --disable-curl           disable curl connectivity"
667
echo "  --enable-curl            enable curl connectivity"
668 669
echo "  --disable-fdt            disable fdt device tree"
echo "  --enable-fdt             enable fdt device tree"
L
Luiz Capitulino 已提交
670 671
echo "  --disable-check-utests   disable check unit-tests"
echo "  --enable-check-utests    enable check unit-tests"
B
balrog 已提交
672
echo "  --disable-bluez          disable bluez stack connectivity"
673
echo "  --enable-bluez           enable bluez stack connectivity"
A
aliguori 已提交
674
echo "  --disable-kvm            disable KVM acceleration support"
675
echo "  --enable-kvm             enable KVM acceleration support"
676
echo "  --disable-nptl           disable usermode NPTL support"
677
echo "  --enable-nptl            disable usermode NPTL support"
678 679
echo "  --enable-system          enable all system emulation targets"
echo "  --disable-system         disable all system emulation targets"
680 681
echo "  --enable-user            enable supported user emulation targets"
echo "  --disable-user           disable all user emulation targets"
682 683 684 685
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 已提交
686 687
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
P
Paul Brook 已提交
688 689 690
echo "  --enable-guest-base      enable GUEST_BASE support for usermode"
echo "                           emulation targets"
echo "  --disable-guest-base     disable GUEST_BASE support"
691 692
echo "  --enable-user-pie        build usermode emulation targets as PIE"
echo "  --disable-user-pie       do not build usermode emulation targets as PIE"
693 694
echo "  --fmod-lib               path to FMOD library"
echo "  --fmod-inc               path to FMOD includes"
B
blueswir1 已提交
695
echo "  --oss-lib                path to OSS library"
696
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
697
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
698
echo "  --disable-vde            disable support for vde network"
699
echo "  --enable-vde             enable support for vde network"
700 701
echo "  --disable-linux-aio      disable Linux AIO support"
echo "  --enable-linux-aio       enable Linux AIO support"
702
echo "  --enable-io-thread       enable IO thread"
T
ths 已提交
703
echo "  --disable-blobs          disable installing provided firmware blobs"
A
aliguori 已提交
704
echo "  --kerneldir=PATH         look for kernel includes in PATH"
705
echo ""
T
ths 已提交
706
echo "NOTE: The object files are built at the place where configure is launched"
707 708 709
exit 1
fi

B
bellard 已提交
710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734
#
# 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
735
fi
B
bellard 已提交
736 737


B
bellard 已提交
738 739
if test -z "$target_list" ; then
# these targets are portable
740
    if [ "$softmmu" = "yes" ] ; then
A
aurel32 已提交
741 742 743 744 745 746
        target_list="\
i386-softmmu \
x86_64-softmmu \
arm-softmmu \
cris-softmmu \
m68k-softmmu \
747
microblaze-softmmu \
A
aurel32 已提交
748 749 750 751 752 753 754 755 756 757
mips-softmmu \
mipsel-softmmu \
mips64-softmmu \
mips64el-softmmu \
ppc-softmmu \
ppcemb-softmmu \
ppc64-softmmu \
sh4-softmmu \
sh4eb-softmmu \
sparc-softmmu \
758
sparc64-softmmu \
A
aurel32 已提交
759
"
760
    fi
B
bellard 已提交
761
# the following are Linux specific
762
    if [ "$linux_user" = "yes" ] ; then
A
aurel32 已提交
763 764 765 766 767 768 769 770
        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 \
771
microblaze-linux-user \
A
aurel32 已提交
772 773 774 775 776 777 778 779 780 781 782
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 \
"
783 784 785
    fi
# the following are Darwin specific
    if [ "$darwin_user" = "yes" ] ; then
M
malc 已提交
786
        target_list="$target_list i386-darwin-user ppc-darwin-user "
B
bellard 已提交
787
    fi
B
blueswir1 已提交
788 789 790
# the following are BSD specific
    if [ "$bsd_user" = "yes" ] ; then
        target_list="${target_list}\
791 792 793
i386-bsd-user \
x86_64-bsd-user \
sparc-bsd-user \
B
blueswir1 已提交
794 795 796
sparc64-bsd-user \
"
    fi
797
else
798
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
B
bellard 已提交
799
fi
800 801 802 803
if test -z "$target_list" ; then
    echo "No targets enabled"
    exit 1
fi
B
bellard 已提交
804

805 806 807 808 809 810 811 812 813 814
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 已提交
815 816 817 818 819 820 821
if test -z "$cross_prefix" ; then

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

827
if compile_prog "" "" ; then
B
bellard 已提交
828 829 830 831 832 833 834 835
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
836 837 838 839 840
case "$cpu" in
  armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
    bigendian=yes
  ;;
esac
B
bellard 已提交
841 842 843

fi

B
bellard 已提交
844 845
# host long bits test
hostlongbits="32"
846 847 848 849 850
case "$cpu" in
  x86_64|alpha|ia64|sparc64|ppc64)
    hostlongbits=64
  ;;
esac
B
bellard 已提交
851

852 853 854 855 856 857

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

if test "$nptl" != "no" ; then
  cat > $TMPC <<EOF
858
#include <sched.h>
P
pbrook 已提交
859
#include <linux/futex.h>
860 861 862 863 864 865 866 867
void foo()
{
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
}
EOF

868 869 870 871 872 873 874 875
  if compile_object ; then
    nptl=yes
  else
    if test "$nptl" = "yes" ; then
      feature_not_found "nptl"
    fi
    nptl=no
  fi
876 877
fi

878 879 880 881 882 883 884
##########################################
# zlib check

cat > $TMPC << EOF
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
885
if compile_prog "" "-lz" ; then
886 887 888 889 890 891 892 893 894
    :
else
    echo
    echo "Error: zlib check failed"
    echo "Make sure to have the zlib libs and headers installed."
    echo
    exit 1
fi

895 896 897
##########################################
# xen probe

898
if test "$xen" != "no" ; then
899 900
  xen_libs="-lxenstore -lxenctrl -lxenguest"
  cat > $TMPC <<EOF
901 902
#include <xenctrl.h>
#include <xs.h>
903
int main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
904
EOF
905
  if compile_prog "" "$xen_libs" ; then
906
    xen=yes
J
Juan Quintela 已提交
907
    libs_softmmu="$xen_libs $libs_softmmu"
908
  else
909 910 911 912
    if test "$xen" = "yes" ; then
      feature_not_found "xen"
    fi
    xen=no
913
  fi
914 915
fi

916 917 918 919 920 921 922 923 924 925 926 927 928
##########################################
# Sparse probe
if test "$sparse" != "no" ; then
  if test -x "$(which cgcc 2>/dev/null)"; then
    sparse=yes
  else
    if test "$sparse" = "yes" ; then
      feature_not_found "sparse"
    fi
    sparse=no
  fi
fi

B
bellard 已提交
929 930 931 932 933
##########################################
# SDL probe

sdl_too_old=no

934
if test "$sdl" != "no" ; then
J
Juan Quintela 已提交
935
  cat > $TMPC << EOF
B
bellard 已提交
936 937 938 939
#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 已提交
940 941
  sdl_cflags=`sdl-config --cflags 2> /dev/null`
  sdl_libs=`sdl-config --libs 2> /dev/null`
942
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
943 944 945 946 947 948 949 950
    _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 已提交
951

J
Juan Quintela 已提交
952 953 954 955 956 957 958
    # 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
959
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
960 961 962 963 964
	:
      else
        sdl=no
      fi
    fi # static link
965 966 967 968 969
  else # sdl not found
    if test "$sdl" = "yes" ; then
      feature_not_found "sdl"
    fi
    sdl=no
J
Juan Quintela 已提交
970
  fi # sdl compile test
971
fi
B
bellard 已提交
972

973
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
974
  cat > $TMPC <<EOF
975 976 977 978 979 980 981 982
#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
983
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
984 985
    sdl_libs="$sdl_libs -lX11"
  fi
986 987 988
  if test "$mingw32" = "yes" ; then
    sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
  fi
J
Juan Quintela 已提交
989
  libs_softmmu="$sdl_libs $libs_softmmu"
990 991
fi

992 993
##########################################
# VNC TLS detection
994 995
if test "$vnc_tls" != "no" ; then
  cat > $TMPC <<EOF
996 997 998
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
999 1000 1001 1002 1003 1004 1005 1006
  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"
1007
    fi
1008 1009
    vnc_tls=no
  fi
1010 1011
fi

1012 1013
##########################################
# VNC SASL detection
J
Juan Quintela 已提交
1014
if test "$vnc_sasl" != "no" ; then
1015
  cat > $TMPC <<EOF
1016 1017 1018 1019
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
1020 1021 1022 1023 1024 1025 1026 1027 1028
  # 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"
1029
    fi
1030 1031
    vnc_sasl=no
  fi
1032 1033
fi

1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
1045
if compile_prog "" "" ; then
1046 1047 1048
   fnmatch="yes"
fi

1049 1050
##########################################
# vde libraries probe
1051
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
1052
  vde_libs="-lvdeplug"
1053 1054
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
1055 1056 1057 1058 1059 1060
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
    vde_open("", "", &a);
    return 0;
}
1061
EOF
1062
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
1063
    vde=yes
1064 1065
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
1066 1067 1068 1069 1070
  else
    if test "$vde" = "yes" ; then
      feature_not_found "vde"
    fi
    vde=no
J
Juan Quintela 已提交
1071
  fi
1072 1073
fi

1074
##########################################
1075
# Sound support libraries probe
1076

1077 1078 1079 1080 1081 1082 1083 1084 1085 1086
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
1087
EOF
1088
    if compile_prog "$cfl" "$lib" ; then
1089 1090 1091 1092 1093 1094 1095 1096 1097 1098
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

1099
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1100 1101 1102 1103 1104
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);"
1105
    libs_softmmu="-lasound $libs_softmmu"
1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116
    ;;

    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"
1117
    libs_softmmu="$fmod_lib $libs_softmmu"
1118 1119 1120 1121
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1122
    libs_softmmu="-lesd $libs_softmmu"
1123
    audio_pt_int="yes"
1124
    ;;
M
malc 已提交
1125 1126 1127 1128

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

1133 1134 1135 1136
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

1137 1138 1139 1140 1141 1142 1143 1144 1145
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
    ;;

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

    sdl|wav)
B
blueswir1 已提交
1146 1147 1148
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

M
malc 已提交
1149
    *)
M
malc 已提交
1150
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
M
malc 已提交
1151 1152 1153 1154 1155 1156 1157
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
1158 1159
    esac
done
1160

A
aurel32 已提交
1161 1162 1163
##########################################
# BrlAPI probe

1164
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
1165 1166
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
1167 1168 1169
#include <brlapi.h>
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
1170
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
1171
    brlapi=yes
1172
    libs_softmmu="$brlapi_libs $libs_softmmu"
1173 1174 1175 1176 1177
  else
    if test "$brlapi" = "yes" ; then
      feature_not_found "brlapi"
    fi
    brlapi=no
J
Juan Quintela 已提交
1178 1179
  fi
fi
A
aurel32 已提交
1180

B
balrog 已提交
1181 1182
##########################################
# curses probe
1183
curses_list="-lncurses -lcurses"
B
balrog 已提交
1184

1185 1186
if test "$curses" != "no" ; then
  curses_found=no
B
balrog 已提交
1187 1188
  cat > $TMPC << EOF
#include <curses.h>
1189 1190 1191 1192
#ifdef __OpenBSD__
#define resize_term resizeterm
#endif
int main(void) { resize_term(0, 0); return curses_version(); }
B
balrog 已提交
1193
EOF
1194 1195
  for curses_lib in $curses_list; do
    if compile_prog "" "$curses_lib" ; then
1196
      curses_found=yes
1197 1198 1199 1200
      libs_softmmu="$curses_lib $libs_softmmu"
      break
    fi
  done
1201 1202 1203 1204 1205 1206 1207 1208
  if test "$curses_found" = "yes" ; then
    curses=yes
  else
    if test "$curses" = "yes" ; then
      feature_not_found "curses"
    fi
    curses=no
  fi
1209
fi
B
balrog 已提交
1210

A
Alexander Graf 已提交
1211 1212 1213
##########################################
# curl probe

1214
if test "$curl" != "no" ; then
A
Alexander Graf 已提交
1215 1216 1217 1218
  cat > $TMPC << EOF
#include <curl/curl.h>
int main(void) { return curl_easy_init(); }
EOF
J
Juan Quintela 已提交
1219
  curl_cflags=`curl-config --cflags 2>/dev/null`
1220
  curl_libs=`curl-config --libs 2>/dev/null`
J
Juan Quintela 已提交
1221
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
1222
    curl=yes
1223 1224
    libs_tools="$curl_libs $libs_tools"
    libs_softmmu="$curl_libs $libs_softmmu"
1225 1226 1227 1228 1229
  else
    if test "$curl" = "yes" ; then
      feature_not_found "curl"
    fi
    curl=no
A
Alexander Graf 已提交
1230 1231 1232
  fi
fi # test "$curl"

L
Luiz Capitulino 已提交
1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252
##########################################
# check framework probe

if test "$check_utests" != "no" ; then
  cat > $TMPC << EOF
#include <check.h>
int main(void) { suite_create("qemu test"); return 0; }
EOF
  check_libs=`pkg-config --libs check`
  if compile_prog "" $check_libs ; then
    check_utests=yes
    libs_tools="$check_libs $libs_tools"
  else
    if test "$check_utests" = "yes" ; then
      feature_not_found "check"
    fi
    check_utests=no
  fi
fi # test "$check_utests"

B
balrog 已提交
1253 1254
##########################################
# bluez support probe
1255
if test "$bluez" != "no" ; then
1256 1257 1258 1259
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
1260 1261
  bluez_cflags=`pkg-config --cflags bluez 2> /dev/null`
  bluez_libs=`pkg-config --libs bluez 2> /dev/null`
1262
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1263
    bluez=yes
1264
    libs_softmmu="$bluez_libs $libs_softmmu"
1265
  else
1266 1267 1268
    if test "$bluez" = "yes" ; then
      feature_not_found "bluez"
    fi
1269 1270
    bluez="no"
  fi
B
balrog 已提交
1271 1272
fi

A
aliguori 已提交
1273 1274
##########################################
# kvm probe
1275
if test "$kvm" != "no" ; then
A
aliguori 已提交
1276 1277
    cat > $TMPC <<EOF
#include <linux/kvm.h>
1278
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
A
aliguori 已提交
1279 1280
#error Invalid KVM version
#endif
1281 1282 1283 1284 1285 1286 1287 1288 1289
#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 已提交
1290 1291
int main(void) { return 0; }
EOF
A
aliguori 已提交
1292 1293
  if test "$kerneldir" != "" ; then
      kvm_cflags=-I"$kerneldir"/include
1294 1295 1296
      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 已提交
1297 1298
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
1299 1300 1301
        elif test -d "$kerneldir/arch/$cpu/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
      fi
A
aliguori 已提交
1302 1303 1304
  else
      kvm_cflags=""
  fi
1305
  if compile_prog "$kvm_cflags" "" ; then
1306
    kvm=yes
A
aliguori 已提交
1307
  else
1308 1309 1310 1311
    if test "$kvm" = "yes" ; then
      if [ -x "`which awk 2>/dev/null`" ] && \
         [ -x "`which grep 2>/dev/null`" ]; then
        kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \
1312 1313
	| grep "error: " \
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
1314 1315 1316 1317 1318
        if test "$kvmerr" != "" ; then
          echo -e "${kvmerr}\n\
      NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
  recent kvm-kmod from http://sourceforge.net/projects/kvm."
        fi
1319
      fi
1320
      feature_not_found "kvm"
1321
    fi
1322
    kvm=no
A
aliguori 已提交
1323 1324 1325
  fi
fi

1326
##########################################
1327
# pthread probe
1328
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1329

C
Christoph Hellwig 已提交
1330
pthread=no
1331
cat > $TMPC << EOF
1332
#include <pthread.h>
1333
int main(void) { pthread_create(0,0,0,0); return 0; }
1334
EOF
C
Christoph Hellwig 已提交
1335 1336 1337 1338 1339 1340 1341
for pthread_lib in $PTHREADLIBS_LIST; do
  if compile_prog "" "$pthread_lib" ; then
    pthread=yes
    LIBS="$pthread_lib $LIBS"
    break
  fi
done
1342

1343
if test "$mingw32" != yes -a "$pthread" = no; then
C
Christoph Hellwig 已提交
1344 1345 1346 1347 1348
  echo
  echo "Error: pthread check failed"
  echo "Make sure to have the pthread libs and headers installed."
  echo
  exit 1
1349 1350
fi

1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367
##########################################
# linux-aio probe
AIOLIBS=""

if test "$linux_aio" != "no" ; then
  cat > $TMPC <<EOF
#include <libaio.h>
#include <sys/eventfd.h>
int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
EOF
  if compile_prog "" "-laio" ; then
    linux_aio=yes
    LIBS="$LIBS -laio"
  else
    if test "$linux_aio" = "yes" ; then
      feature_not_found "linux AIO"
    fi
1368
    linux_aio=no
1369 1370 1371
  fi
fi

A
aliguori 已提交
1372 1373 1374
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
1375
#include <sys/types.h>
A
aliguori 已提交
1376
#include <sys/uio.h>
B
blueswir1 已提交
1377
#include <unistd.h>
A
aliguori 已提交
1378 1379 1380
int main(void) { struct iovec iov; return 0; }
EOF
iovec=no
1381
if compile_prog "" "" ; then
A
aliguori 已提交
1382 1383 1384
  iovec=yes
fi

1385 1386 1387 1388 1389 1390 1391 1392 1393
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
int main(void) { preadv; }
EOF
preadv=no
1394
if compile_prog "" "" ; then
1395 1396 1397
  preadv=yes
fi

1398 1399
##########################################
# fdt probe
1400
if test "$fdt" != "no" ; then
J
Juan Quintela 已提交
1401 1402
  fdt_libs="-lfdt"
  cat > $TMPC << EOF
1403 1404
int main(void) { return 0; }
EOF
1405
  if compile_prog "" "$fdt_libs" ; then
1406
    fdt=yes
J
Juan Quintela 已提交
1407
    libs_softmmu="$fdt_libs $libs_softmmu"
1408 1409 1410 1411 1412
  else
    if test "$fdt" = "yes" ; then
      feature_not_found "fdt"
    fi
    fdt=no
1413 1414 1415
  fi
fi

1416 1417 1418 1419 1420 1421
#
# 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
1422
cat > $TMPC << EOF
1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434
#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
1435
if compile_prog "" "" ; then
1436
  atfile=yes
1437 1438
fi

A
aurel32 已提交
1439
# Check for inotify functions when we are building linux-user
1440 1441 1442 1443 1444
# 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
1445
cat > $TMPC << EOF
1446 1447 1448 1449 1450 1451
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
1452
	return inotify_init();
1453 1454
}
EOF
1455
if compile_prog "" "" ; then
1456
  inotify=yes
1457 1458
fi

R
Riku Voipio 已提交
1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473
# 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
1474
if compile_prog "" "" ; then
R
Riku Voipio 已提交
1475 1476 1477
  utimens=yes
fi

R
Riku Voipio 已提交
1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491
# 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
1492
if compile_prog "" "" ; then
R
Riku Voipio 已提交
1493 1494 1495
  pipe2=yes
fi

1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511
# 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
1512
if compile_prog "" "" ; then
1513 1514 1515
  splice=yes
fi

R
Riku Voipio 已提交
1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530
# check if eventfd is supported
eventfd=no
cat > $TMPC << EOF
#include <sys/eventfd.h>

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

1531
# Check if tools are available to build documentation.
J
Juan Quintela 已提交
1532
if test "$docs" != "no" ; then
1533 1534
  if test -x "`which texi2html 2>/dev/null`" -a \
          -x "`which pod2man 2>/dev/null`" ; then
J
Juan Quintela 已提交
1535
    docs=yes
1536
  else
J
Juan Quintela 已提交
1537 1538
    if test "$docs" = "yes" ; then
      feature_not_found "docs"
1539
    fi
J
Juan Quintela 已提交
1540
    docs=no
1541
  fi
1542 1543
fi

1544 1545 1546 1547 1548 1549
# Search for bsawp_32 function
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
1550
if compile_prog "" "" ; then
1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561
  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
1562
if compile_prog "" "" ; then
1563 1564 1565
  bswap_h=yes
fi

A
aliguori 已提交
1566 1567 1568 1569 1570 1571 1572 1573
##########################################
# 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

1574
if compile_prog "" "" ; then
1575
  :
1576
elif compile_prog "" "-lrt" ; then
1577
  LIBS="-lrt $LIBS"
A
aliguori 已提交
1578 1579
fi

1580 1581 1582 1583 1584 1585 1586
# Determine what linker flags to use to force archive inclusion
check_linker_flags()
{
    w2=
    if test "$2" ; then
	w2=-Wl,$2
    fi
1587
    compile_prog "" "-Wl,$1 ${w2}"
1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598
}

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
1599
    arlibs_begin="-Wl,-z,allextract"
1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610
    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

1611
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
1612 1613 1614 1615
        "$aix" != "yes" ; then
    libs_softmmu="-lutil $libs_softmmu"
fi

1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627
##########################################
# check if the compiler defines offsetof

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

1628 1629 1630 1631
# End of CC checks
# After here, no more $cc or $ld runs

# default flags for all hosts
J
Juan Quintela 已提交
1632 1633
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
CFLAGS="-g $CFLAGS"
1634
if test "$debug" = "no" ; then
1635
  CFLAGS="-O2 $CFLAGS"
1636
fi
J
Juan Quintela 已提交
1637 1638
QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
1639 1640 1641
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"
1642
LDFLAGS="-g $LDFLAGS"
1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656

# 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 已提交
1657
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
1658 1659 1660 1661
fi

if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
1662
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
1663 1664 1665
    fi
fi

B
bellard 已提交
1666
if test "$mingw32" = "yes" ; then
P
pbrook 已提交
1667
  if test -z "$prefix" ; then
S
Stefan Weil 已提交
1668
      prefix="c:/Program Files/Qemu"
P
pbrook 已提交
1669 1670 1671 1672 1673
  fi
  mansuffix=""
  datasuffix=""
  docsuffix=""
  binsuffix=""
B
bellard 已提交
1674
else
P
pbrook 已提交
1675 1676 1677 1678 1679 1680 1681
  if test -z "$prefix" ; then
      prefix="/usr/local"
  fi
  mansuffix="/share/man"
  datasuffix="/share/qemu"
  docsuffix="/share/doc/qemu"
  binsuffix="/bin"
B
bellard 已提交
1682
fi
1683

B
bellard 已提交
1684
echo "Install prefix    $prefix"
P
pbrook 已提交
1685 1686
echo "BIOS directory    $prefix$datasuffix"
echo "binary directory  $prefix$binsuffix"
B
bellard 已提交
1687
if test "$mingw32" = "no" ; then
P
pbrook 已提交
1688
echo "Manual directory  $prefix$mansuffix"
B
bellard 已提交
1689
echo "ELF interp prefix $interp_prefix"
B
bellard 已提交
1690
fi
1691
echo "Source path       $source_path"
B
bellard 已提交
1692
echo "C compiler        $cc"
B
bellard 已提交
1693
echo "Host C compiler   $host_cc"
1694
echo "CFLAGS            $CFLAGS"
J
Juan Quintela 已提交
1695
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
1696
echo "LDFLAGS           $LDFLAGS"
B
bellard 已提交
1697
echo "make              $make"
1698
echo "install           $install"
B
bellard 已提交
1699
echo "host CPU          $cpu"
B
bellard 已提交
1700
echo "host big endian   $bigendian"
1701
echo "target list       $target_list"
1702
echo "tcg debug enabled $debug_tcg"
B
bellard 已提交
1703
echo "gprof enabled     $gprof"
1704
echo "sparse enabled    $sparse"
1705
echo "strip binaries    $strip_opt"
1706
echo "profiler          $profiler"
B
bellard 已提交
1707
echo "static build      $static"
1708
echo "-Werror enabled   $werror"
1709 1710 1711
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
1712
echo "SDL support       $sdl"
B
balrog 已提交
1713
echo "curses support    $curses"
A
Alexander Graf 已提交
1714
echo "curl support      $curl"
L
Luiz Capitulino 已提交
1715
echo "check support     $check_utests"
B
bellard 已提交
1716
echo "mingw32 support   $mingw32"
M
malc 已提交
1717 1718
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
1719
echo "Mixer emulation   $mixemu"
1720
echo "VNC TLS support   $vnc_tls"
1721
echo "VNC SASL support  $vnc_sasl"
1722 1723 1724
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
1725
echo "xen support       $xen"
A
aurel32 已提交
1726
echo "brlapi support    $brlapi"
1727
echo "bluez  support    $bluez"
J
Juan Quintela 已提交
1728
echo "Documentation     $docs"
1729 1730
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
1731
echo "NPTL support      $nptl"
P
Paul Brook 已提交
1732
echo "GUEST_BASE        $guest_base"
1733
echo "PIE user targets  $user_pie"
1734
echo "vde support       $vde"
1735
echo "IO thread         $io_thread"
1736
echo "Linux AIO support $linux_aio"
T
ths 已提交
1737
echo "Install blobs     $blobs"
1738
echo "KVM support       $kvm"
1739
echo "fdt support       $fdt"
1740
echo "preadv support    $preadv"
B
bellard 已提交
1741

1742
if test $sdl_too_old = "yes"; then
B
bellard 已提交
1743
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
1744
fi
B
bellard 已提交
1745

1746 1747
config_host_mak="config-host.mak"
config_host_h="config-host.h"
1748
config_host_ld="config-host.ld"
1749 1750 1751 1752 1753 1754 1755 1756 1757 1758

#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

1759
echo "CONFIG_QEMU_SHAREDIR=\"$prefix$datasuffix\"" >> $config_host_mak
1760

A
aurel32 已提交
1761
case "$cpu" in
1762
  i386|x86_64|alpha|cris|hppa|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
1763
    ARCH=$cpu
A
aurel32 已提交
1764
  ;;
1765
  armv4b|armv4l)
1766
    ARCH=arm
A
aurel32 已提交
1767 1768 1769 1770 1771 1772
  ;;
  *)
    echo "Unsupported CPU = $cpu"
    exit 1
  ;;
esac
1773
echo "ARCH=$ARCH" >> $config_host_mak
1774
if test "$debug_tcg" = "yes" ; then
1775
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
1776
fi
P
Paul Brook 已提交
1777
if test "$debug" = "yes" ; then
1778
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
P
Paul Brook 已提交
1779
fi
1780
if test "$strip_opt" = "yes" ; then
1781
  echo "STRIP_OPT=-s" >> $config_host_mak
1782
fi
B
bellard 已提交
1783
if test "$bigendian" = "yes" ; then
1784
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
1785
fi
1786
echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
B
bellard 已提交
1787
if test "$mingw32" = "yes" ; then
1788
  echo "CONFIG_WIN32=y" >> $config_host_mak
1789
else
J
Juan Quintela 已提交
1790
  echo "CONFIG_POSIX=y" >> $config_host_mak
B
bellard 已提交
1791
fi
1792

1793
if test "$darwin" = "yes" ; then
1794
  echo "CONFIG_DARWIN=y" >> $config_host_mak
1795
fi
M
malc 已提交
1796 1797

if test "$aix" = "yes" ; then
1798
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
1799 1800
fi

B
bellard 已提交
1801
if test "$solaris" = "yes" ; then
1802
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
1803
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
T
ths 已提交
1804
  if test "$needs_libsunmath" = "yes" ; then
1805
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
T
ths 已提交
1806
  fi
B
bellard 已提交
1807
fi
1808
if test "$static" = "yes" ; then
1809
  echo "CONFIG_STATIC=y" >> $config_host_mak
1810
  LDFLAGS="-static $LDFLAGS"
B
bellard 已提交
1811
fi
1812
if test $profiler = "yes" ; then
1813
  echo "CONFIG_PROFILER=y" >> $config_host_mak
1814
fi
B
bellard 已提交
1815
if test "$slirp" = "yes" ; then
1816
  echo "CONFIG_SLIRP=y" >> $config_host_mak
1817
  CFLAGS="-I\$(SRC_PATH)/slirp $CFLAGS"
B
bellard 已提交
1818
fi
1819
if test "$vde" = "yes" ; then
1820
  echo "CONFIG_VDE=y" >> $config_host_mak
1821
fi
M
malc 已提交
1822
for card in $audio_card_list; do
P
pbrook 已提交
1823
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1824
    echo "$def=y" >> $config_host_mak
M
malc 已提交
1825
done
1826
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
M
malc 已提交
1827
for drv in $audio_drv_list; do
P
pbrook 已提交
1828
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1829
    echo "$def=y" >> $config_host_mak
M
malc 已提交
1830
    if test "$drv" = "fmod"; then
1831
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
M
malc 已提交
1832 1833
    fi
done
1834 1835 1836
if test "$audio_pt_int" = "yes" ; then
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
fi
1837
if test "$mixemu" = "yes" ; then
1838
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
1839
fi
1840
if test "$vnc_tls" = "yes" ; then
1841
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
1842
  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
1843
fi
1844
if test "$vnc_sasl" = "yes" ; then
1845
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
1846
  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
1847
fi
1848
if test "$fnmatch" = "yes" ; then
1849
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
1850
fi
1851
qemu_version=`head $source_path/VERSION`
1852
echo "VERSION=$qemu_version" >>$config_host_mak
1853
echo "PKGVERSION=$pkgversion" >>$config_host_mak
1854
echo "SRC_PATH=$source_path" >> $config_host_mak
P
pbrook 已提交
1855
if [ "$source_path_used" = "yes" ]; then
1856
  echo "VPATH=$source_path" >> $config_host_mak
P
pbrook 已提交
1857
fi
1858
echo "TARGET_DIRS=$target_list" >> $config_host_mak
J
Juan Quintela 已提交
1859
if [ "$docs" = "yes" ] ; then
1860
  echo "BUILD_DOCS=yes" >> $config_host_mak
1861
fi
1862
if test "$sdl" = "yes" ; then
1863
  echo "CONFIG_SDL=y" >> $config_host_mak
1864
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
1865 1866
fi
if test "$cocoa" = "yes" ; then
1867
  echo "CONFIG_COCOA=y" >> $config_host_mak
B
balrog 已提交
1868 1869
fi
if test "$curses" = "yes" ; then
1870
  echo "CONFIG_CURSES=y" >> $config_host_mak
1871
fi
1872
if test "$atfile" = "yes" ; then
1873
  echo "CONFIG_ATFILE=y" >> $config_host_mak
1874
fi
R
Riku Voipio 已提交
1875
if test "$utimens" = "yes" ; then
1876
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
R
Riku Voipio 已提交
1877
fi
R
Riku Voipio 已提交
1878
if test "$pipe2" = "yes" ; then
1879
  echo "CONFIG_PIPE2=y" >> $config_host_mak
R
Riku Voipio 已提交
1880
fi
1881
if test "$splice" = "yes" ; then
1882
  echo "CONFIG_SPLICE=y" >> $config_host_mak
1883
fi
R
Riku Voipio 已提交
1884 1885 1886
if test "$eventfd" = "yes" ; then
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
fi
1887
if test "$inotify" = "yes" ; then
1888
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
1889
fi
1890 1891 1892 1893 1894 1895
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 已提交
1896
if test "$curl" = "yes" ; then
1897
  echo "CONFIG_CURL=y" >> $config_host_mak
J
Juan Quintela 已提交
1898
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
A
Alexander Graf 已提交
1899
fi
A
aurel32 已提交
1900
if test "$brlapi" = "yes" ; then
1901
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
A
aurel32 已提交
1902
fi
B
balrog 已提交
1903
if test "$bluez" = "yes" ; then
1904
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
1905
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
B
balrog 已提交
1906
fi
1907
if test "$xen" = "yes" ; then
J
Juan Quintela 已提交
1908
  echo "CONFIG_XEN=y" >> $config_host_mak
1909
fi
1910
if test "$io_thread" = "yes" ; then
1911
  echo "CONFIG_IOTHREAD=y" >> $config_host_mak
1912
fi
1913 1914 1915
if test "$linux_aio" = "yes" ; then
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
fi
T
ths 已提交
1916
if test "$blobs" = "yes" ; then
1917
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
T
ths 已提交
1918
fi
A
aliguori 已提交
1919
if test "$iovec" = "yes" ; then
1920
  echo "CONFIG_IOVEC=y" >> $config_host_mak
A
aliguori 已提交
1921
fi
1922
if test "$preadv" = "yes" ; then
1923
  echo "CONFIG_PREADV=y" >> $config_host_mak
1924
fi
1925
if test "$fdt" = "yes" ; then
1926
  echo "CONFIG_FDT=y" >> $config_host_mak
1927
fi
1928 1929 1930
if test "$need_offsetof" = "yes" ; then
  echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
fi
1931

1932
# XXX: suppress that
B
bellard 已提交
1933
if [ "$bsd" = "yes" ] ; then
1934
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
1935 1936
fi

1937
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
1938

1939 1940 1941
# USB host support
case "$usb" in
linux)
1942
  echo "HOST_USB=linux" >> $config_host_mak
1943 1944
;;
bsd)
1945
  echo "HOST_USB=bsd" >> $config_host_mak
1946 1947
;;
*)
1948
  echo "HOST_USB=stub" >> $config_host_mak
1949 1950 1951
;;
esac

1952 1953
tools=
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
A
aliguori 已提交
1954
  tools="qemu-img\$(EXESUF) $tools"
B
bellard 已提交
1955
  if [ "$linux" = "yes" ] ; then
A
aliguori 已提交
1956
      tools="qemu-nbd\$(EXESUF) qemu-io\$(EXESUF) $tools"
L
Luiz Capitulino 已提交
1957
    if [ "$check_utests" = "yes" ]; then
L
Luiz Capitulino 已提交
1958
      tools="check-qint check-qstring check-qdict $tools"
L
Luiz Capitulino 已提交
1959
    fi
1960 1961
  elif test "$mingw32" = "yes" ; then
      tools="qemu-io\$(EXESUF) $tools"
B
bellard 已提交
1962
  fi
1963
fi
1964
echo "TOOLS=$tools" >> $config_host_mak
1965

1966
# Mac OS X ships with a broken assembler
A
Alexander Graf 已提交
1967
roms=
1968 1969
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
        "$targetos" != "Darwin" ; then
P
Paul Brook 已提交
1970
  roms="optionrom"
A
Alexander Graf 已提交
1971
fi
1972
echo "ROMS=$roms" >> $config_host_mak
A
Alexander Graf 已提交
1973

1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988
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 已提交
1989
  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
1990 1991 1992 1993
fi
echo "AR=$ar" >> $config_host_mak
echo "OBJCOPY=$objcopy" >> $config_host_mak
echo "LD=$ld" >> $config_host_mak
1994
echo "CFLAGS=$CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
1995
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
1996
echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
1997
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
1998 1999
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
J
Juan Quintela 已提交
2000
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
2001
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
2002 2003
echo "EXESUF=$EXESUF" >> $config_host_mak

2004 2005
echo "/* Automatically generated by configure - do not modify */" > $config_host_h

2006
/bin/sh $source_path/create_config < $config_host_mak >> $config_host_h
2007

2008 2009 2010
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 已提交
2011
  else
2012
    rm ${config_host_h}~
P
Paul Brook 已提交
2013 2014 2015
  fi
fi

2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027
# 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

2028
for target in $target_list; do
2029 2030 2031
target_dir="$target"
config_mak=$target_dir/config.mak
config_h=$target_dir/config.h
B
Blue Swirl 已提交
2032
target_arch2=`echo $target | cut -d '-' -f 1`
2033
target_bigendian="no"
2034 2035 2036 2037 2038
case "$target_arch2" in
  armeb|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|sh4eb|sparc|sparc64|sparc32plus)
  target_bigendian=yes
  ;;
esac
2039
target_softmmu="no"
B
bellard 已提交
2040
target_user_only="no"
2041 2042
target_linux_user="no"
target_darwin_user="no"
B
blueswir1 已提交
2043
target_bsd_user="no"
P
pbrook 已提交
2044
case "$target" in
B
Blue Swirl 已提交
2045
  ${target_arch2}-softmmu)
P
pbrook 已提交
2046 2047
    target_softmmu="yes"
    ;;
B
Blue Swirl 已提交
2048
  ${target_arch2}-linux-user)
P
pbrook 已提交
2049 2050 2051
    target_user_only="yes"
    target_linux_user="yes"
    ;;
B
Blue Swirl 已提交
2052
  ${target_arch2}-darwin-user)
P
pbrook 已提交
2053 2054 2055
    target_user_only="yes"
    target_darwin_user="yes"
    ;;
B
Blue Swirl 已提交
2056
  ${target_arch2}-bsd-user)
B
blueswir1 已提交
2057 2058 2059
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
P
pbrook 已提交
2060 2061 2062 2063 2064
  *)
    echo "ERROR: Target '$target' not recognised"
    exit 1
    ;;
esac
2065

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

2068 2069
test -f $config_h && mv $config_h ${config_h}~

2070
mkdir -p $target_dir
B
bellard 已提交
2071
mkdir -p $target_dir/fpu
B
bellard 已提交
2072
mkdir -p $target_dir/tcg
G
Gerd Hoffmann 已提交
2073
mkdir -p $target_dir/ide
B
blueswir1 已提交
2074
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
B
bellard 已提交
2075 2076 2077
  mkdir -p $target_dir/nwfpe
fi

B
bellard 已提交
2078 2079 2080 2081 2082 2083
#
# 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

2084 2085

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

2087
echo "include ../config-host.mak" >> $config_mak
2088

P
pbrook 已提交
2089
bflt="no"
2090
elfload32="no"
2091
target_nptl="no"
B
Blue Swirl 已提交
2092
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
2093
echo "CONFIG_QEMU_PREFIX=\"$interp_prefix1\"" >> $config_mak
P
pbrook 已提交
2094
gdb_xml_files=""
A
aliguori 已提交
2095

2096
TARGET_ARCH="$target_arch2"
2097
TARGET_BASE_ARCH=""
2098
TARGET_ABI_DIR=""
2099

B
Blue Swirl 已提交
2100
case "$target_arch2" in
A
aurel32 已提交
2101
  i386)
P
Paul Brook 已提交
2102
    target_phys_bits=32
A
aurel32 已提交
2103 2104
  ;;
  x86_64)
2105
    TARGET_BASE_ARCH=i386
P
Paul Brook 已提交
2106
    target_phys_bits=64
A
aurel32 已提交
2107 2108
  ;;
  alpha)
P
Paul Brook 已提交
2109
    target_phys_bits=64
A
aurel32 已提交
2110 2111
  ;;
  arm|armeb)
J
Juan Quintela 已提交
2112
    TARGET_ARCH=arm
A
aurel32 已提交
2113
    bflt="yes"
2114
    target_nptl="yes"
P
pbrook 已提交
2115
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
P
Paul Brook 已提交
2116
    target_phys_bits=32
A
aurel32 已提交
2117 2118
  ;;
  cris)
E
edgar_igl 已提交
2119
    target_nptl="yes"
P
Paul Brook 已提交
2120
    target_phys_bits=32
A
aurel32 已提交
2121 2122 2123
  ;;
  m68k)
    bflt="yes"
P
pbrook 已提交
2124
    gdb_xml_files="cf-core.xml cf-fp.xml"
P
Paul Brook 已提交
2125
    target_phys_bits=32
A
aurel32 已提交
2126
  ;;
2127 2128 2129 2130 2131
  microblaze)
    bflt="yes"
    target_nptl="yes"
    target_phys_bits=32
  ;;
J
Juan Quintela 已提交
2132
  mips|mipsel)
J
Juan Quintela 已提交
2133
    TARGET_ARCH=mips
2134
    echo "TARGET_ABI_MIPSO32=y" >> $config_mak
P
Paul Brook 已提交
2135
    target_nptl="yes"
P
Paul Brook 已提交
2136
    target_phys_bits=64
A
aurel32 已提交
2137 2138
  ;;
  mipsn32|mipsn32el)
J
Juan Quintela 已提交
2139
    TARGET_ARCH=mipsn32
2140
    TARGET_BASE_ARCH=mips
2141
    echo "TARGET_ABI_MIPSN32=y" >> $config_mak
P
Paul Brook 已提交
2142
    target_phys_bits=64
A
aurel32 已提交
2143 2144
  ;;
  mips64|mips64el)
J
Juan Quintela 已提交
2145
    TARGET_ARCH=mips64
2146
    TARGET_BASE_ARCH=mips
2147
    echo "TARGET_ABI_MIPSN64=y" >> $config_mak
P
Paul Brook 已提交
2148
    target_phys_bits=64
A
aurel32 已提交
2149 2150
  ;;
  ppc)
2151
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2152
    target_phys_bits=32
2153
    target_nptl="yes"
A
aurel32 已提交
2154 2155
  ;;
  ppcemb)
2156
    TARGET_BASE_ARCH=ppc
2157
    TARGET_ABI_DIR=ppc
2158
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2159
    target_phys_bits=64
2160
    target_nptl="yes"
A
aurel32 已提交
2161 2162
  ;;
  ppc64)
2163
    TARGET_BASE_ARCH=ppc
2164
    TARGET_ABI_DIR=ppc
2165
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2166
    target_phys_bits=64
A
aurel32 已提交
2167 2168
  ;;
  ppc64abi32)
J
Juan Quintela 已提交
2169
    TARGET_ARCH=ppc64
2170
    TARGET_BASE_ARCH=ppc
2171
    TARGET_ABI_DIR=ppc
2172
    echo "TARGET_ABI32=y" >> $config_mak
2173
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2174
    target_phys_bits=64
A
aurel32 已提交
2175 2176
  ;;
  sh4|sh4eb)
J
Juan Quintela 已提交
2177
    TARGET_ARCH=sh4
A
aurel32 已提交
2178
    bflt="yes"
A
aurel32 已提交
2179
    target_nptl="yes"
P
Paul Brook 已提交
2180
    target_phys_bits=32
A
aurel32 已提交
2181 2182
  ;;
  sparc)
P
Paul Brook 已提交
2183
    target_phys_bits=64
A
aurel32 已提交
2184 2185
  ;;
  sparc64)
2186
    TARGET_BASE_ARCH=sparc
A
aurel32 已提交
2187
    elfload32="yes"
P
Paul Brook 已提交
2188
    target_phys_bits=64
A
aurel32 已提交
2189 2190
  ;;
  sparc32plus)
J
Juan Quintela 已提交
2191
    TARGET_ARCH=sparc64
2192
    TARGET_BASE_ARCH=sparc
2193
    TARGET_ABI_DIR=sparc
2194
    echo "TARGET_ABI32=y" >> $config_mak
P
Paul Brook 已提交
2195
    target_phys_bits=64
A
aurel32 已提交
2196 2197 2198 2199 2200 2201
  ;;
  *)
    echo "Unsupported target CPU"
    exit 1
  ;;
esac
J
Juan Quintela 已提交
2202
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_mak
2203 2204
target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
echo "TARGET_$target_arch_name=y" >> $config_mak
J
Juan Quintela 已提交
2205
echo "TARGET_ARCH2=$target_arch2" >> $config_mak
2206
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
2207 2208 2209 2210
if [ "$TARGET_BASE_ARCH" = "" ]; then
  TARGET_BASE_ARCH=$TARGET_ARCH
fi
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_mak
2211 2212 2213 2214
if [ "$TARGET_ABI_DIR" = "" ]; then
  TARGET_ABI_DIR=$TARGET_ARCH
fi
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_mak
P
Paul Brook 已提交
2215 2216 2217
if [ $target_phys_bits -lt $hostlongbits ] ; then
  target_phys_bits=$hostlongbits
fi
J
Juan Quintela 已提交
2218 2219 2220 2221 2222 2223
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 已提交
2224
case "$target_arch2" in
A
Alexander Graf 已提交
2225
  i386|x86_64|ppcemb|ppc|ppc64)
J
Juan Quintela 已提交
2226 2227 2228 2229
    # 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 已提交
2230
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
J
Juan Quintela 已提交
2231 2232 2233 2234 2235 2236
      \( "$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
2237
echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_mak
B
bellard 已提交
2238
if test "$target_bigendian" = "yes" ; then
2239
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_mak
B
bellard 已提交
2240
fi
2241
if test "$target_softmmu" = "yes" ; then
2242
  echo "CONFIG_SOFTMMU=y" >> $config_mak
J
Juan Quintela 已提交
2243
  echo "LIBS+=$libs_softmmu" >> $config_mak
2244 2245
  echo "HWLIB=../libhw$target_phys_bits/libqemuhw$target_phys_bits.a" >> $config_mak
  echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
B
bellard 已提交
2246
fi
B
bellard 已提交
2247
if test "$target_user_only" = "yes" ; then
2248
  echo "CONFIG_USER_ONLY=y" >> $config_mak
B
bellard 已提交
2249
fi
2250
if test "$target_linux_user" = "yes" ; then
2251
  echo "CONFIG_LINUX_USER=y" >> $config_mak
2252 2253
fi
if test "$target_darwin_user" = "yes" ; then
2254
  echo "CONFIG_DARWIN_USER=y" >> $config_mak
2255
fi
P
pbrook 已提交
2256 2257 2258 2259 2260 2261 2262
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
2263

2264 2265 2266 2267
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
    ;;
2268 2269 2270
  *)
    echo "CONFIG_NOSOFTFLOAT=y" >> $config_mak
    ;;
2271 2272
esac

P
pbrook 已提交
2273
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
2274
  echo "TARGET_HAS_BFLT=y" >> $config_mak
P
pbrook 已提交
2275
fi
2276 2277
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
2278
  echo "CONFIG_USE_NPTL=y" >> $config_mak
2279
fi
2280 2281
# 32 bit ELF loader in addition to native 64 bit loader?
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
2282
  echo "TARGET_HAS_ELFLOAD32=y" >> $config_mak
2283
fi
P
Paul Brook 已提交
2284 2285 2286
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_mak
fi
B
blueswir1 已提交
2287
if test "$target_bsd_user" = "yes" ; then
2288
  echo "CONFIG_BSD_USER=y" >> $config_mak
B
blueswir1 已提交
2289
fi
2290

2291
# generate QEMU_CFLAGS/LDFLAGS for targets
2292

2293
cflags=""
2294
ldflags=""
2295

J
Juan Quintela 已提交
2296 2297 2298 2299 2300 2301 2302 2303
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"

2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344
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

2345 2346 2347 2348 2349
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
2350 2351 2352
ia64)
  cflags="-mno-sdata $cflags"
;;
2353 2354
esac

2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365
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

2366
if test "$target_user_only" = "yes" -a "$static" = "no" -a \
2367
	"$user_pie" = "yes" ; then
2368 2369 2370 2371
  cflags="-fpie $cflags"
  ldflags="-pie $ldflags"
fi

2372 2373 2374 2375 2376 2377
if test "$target_softmmu" = "yes" -a \( \
        "$TARGET_ARCH" = "microblaze" -o \
        "$TARGET_ARCH" = "cris" \) ; then
  echo "CONFIG_NEED_MMU=y" >> $config_mak
fi

2378 2379 2380 2381 2382 2383 2384 2385
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"
2386
    echo "GPROF_CFLAGS=-p" >> $config_mak
2387 2388 2389
  fi
fi

2390
linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
2391
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
2392 2393 2394
  case "$ARCH" in
  sparc)
    # -static is used to avoid g1/g3 usage by the dynamic linker
2395
    ldflags="$linker_script -static $ldflags"
2396 2397
    ;;
  ia64)
2398
    ldflags="-Wl,-G0 $linker_script -static $ldflags"
2399
    ;;
2400
  i386|x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64)
2401
    ldflags="$linker_script $ldflags"
2402 2403 2404 2405 2406 2407
    ;;
  esac
fi
if test "$target_softmmu" = "yes" ; then
  case "$ARCH" in
  ia64)
2408
    ldflags="-Wl,-G0 $linker_script -static $ldflags"
2409 2410 2411 2412
    ;;
  esac
fi

2413
echo "LDFLAGS+=$ldflags" >> $config_mak
2414
echo "QEMU_CFLAGS+=$cflags" >> $config_mak
2415

2416 2417 2418
echo "/* Automatically generated by configure - do not modify */" > $config_h
echo "#include \"../config-host.h\"" >> $config_h

2419
/bin/sh $source_path/create_config < $config_mak >> $config_h
2420

2421 2422 2423 2424 2425 2426 2427
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
2428

2429
done # for target in $targets
B
bellard 已提交
2430 2431 2432

# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
A
Alexander Graf 已提交
2433
    DIRS="tests tests/cris slirp audio block pc-bios/optionrom"
2434
    DIRS="$DIRS roms/pcbios roms/seabios roms/vgabios"
B
bellard 已提交
2435
    FILES="Makefile tests/Makefile"
2436
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
E
edgar_igl 已提交
2437
    FILES="$FILES tests/test-mmap.c"
2438
    FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps pc-bios/video.x"
2439
    FILES="$FILES roms/pcbios/Makefile roms/seabios/Makefile roms/vgabios/Makefile"
2440 2441 2442
    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 已提交
2443 2444 2445
    for dir in $DIRS ; do
            mkdir -p $dir
    done
B
bellard 已提交
2446
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
B
bellard 已提交
2447
    for f in $FILES ; do
B
bellard 已提交
2448 2449
        rm -f $f
        ln -s $source_path/$f $f
B
bellard 已提交
2450 2451
    done
fi
P
Paul Brook 已提交
2452

2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466
# temporary config to build submodules
for rom in seabios vgabios pcbios; do
    config_mak=roms/$rom/config.mak
    echo "# Automatically generated by configure - do not modify" >> $config_mak
    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
    echo "CC=$cc" >> $config_mak
    echo "BCC=bcc" >> $config_mak
    echo "CPP=${cross_prefix}cpp" >> $config_mak
    echo "OBJCOPY=objcopy" >> $config_mak
    echo "IASL=iasl" >> $config_mak
    echo "HOST_CC=$host_cc" >> $config_mak
    echo "LD=$ld" >> $config_mak
done

P
Paul Brook 已提交
2467 2468 2469 2470 2471 2472
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 已提交
2473
  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" >> $d/config.mak
P
Paul Brook 已提交
2474
done