Blame view

configure 55.3 KB
bellard authored
1
2
#!/bin/sh
#
bellard authored
3
# qemu configure script (c) 2003 Fabrice Bellard
bellard authored
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
bellard authored
14
15
16
17
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
18
TMPI="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.i"
19
TMPSDLLOG="${TMPDIR1}/qemu-conf-sdl-$$-${RANDOM}.log"
bellard authored
20
21
trap "rm -f $TMPC $TMPO $TMPE $TMPS $TMPI $TMPSDLLOG; exit" 0 2 3 15
22
bellard authored
23
# default parameters
bellard authored
24
prefix=""
25
interp_prefix="/usr/gnemul/qemu-%M"
bellard authored
26
static="no"
bellard authored
27
28
cross_prefix=""
cc="gcc"
29
audio_drv_list=""
30
31
audio_card_list="ac97 es1370 sb16"
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus"
bellard authored
32
33
34
host_cc="gcc"
ar="ar"
make="make"
35
install="install"
bellard authored
36
strip="strip"
37
38
objcopy="objcopy"
ld="ld"
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
  --cc=*) cc="$optarg"
  ;;
  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}"
strip="${cross_prefix}${strip}"
58
59
objcopy="${cross_prefix}${objcopy}"
ld="${cross_prefix}${ld}"
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86

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

if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
  : 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
  $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null
}

if check_define __i386__ ; then
  cpu="i386"
elif check_define __x86_64__ ; then
  cpu="x86_64"
blueswir1 authored
87
88
89
90
91
92
93
94
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
malc authored
95
96
97
98
99
100
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
101
else
malc authored
102
  cpu=`uname -m`
103
104
fi
bellard authored
105
target_list=""
bellard authored
106
107
case "$cpu" in
  i386|i486|i586|i686|i86pc|BePC)
108
    cpu="i386"
bellard authored
109
  ;;
aurel32 authored
110
111
112
113
114
115
  x86_64|amd64)
    cpu="x86_64"
  ;;
  alpha)
    cpu="alpha"
  ;;
116
  armv*b)
117
118
    cpu="armv4b"
  ;;
119
  armv*l)
bellard authored
120
121
    cpu="armv4l"
  ;;
aurel32 authored
122
123
  cris)
    cpu="cris"
bellard authored
124
  ;;
aurel32 authored
125
126
127
  parisc|parisc64)
    cpu="hppa"
  ;;
aurel32 authored
128
129
130
131
132
  ia64)
    cpu="ia64"
  ;;
  m68k)
    cpu="m68k"
bellard authored
133
  ;;
134
135
136
  microblaze)
    cpu="microblaze"
  ;;
bellard authored
137
138
139
  mips)
    cpu="mips"
  ;;
ths authored
140
141
142
  mips64)
    cpu="mips64"
  ;;
malc authored
143
144
145
146
147
  ppc)
    cpu="ppc"
  ;;
  ppc64)
    cpu="ppc64"
148
  ;;
ths authored
149
  s390*)
bellard authored
150
151
    cpu="s390"
  ;;
152
  sparc|sun4[cdmuv])
153
154
155
156
157
    cpu="sparc"
  ;;
  sparc64)
    cpu="sparc64"
  ;;
bellard authored
158
159
160
161
162
  *)
    cpu="unknown"
  ;;
esac
gprof="no"
163
debug_tcg="no"
Paul Brook authored
164
debug="no"
165
sparse="no"
166
strip_opt="yes"
bellard authored
167
bigendian="no"
168
169
mingw32="no"
EXESUF=""
bellard authored
170
slirp="yes"
171
vde="yes"
172
173
fmod_lib=""
fmod_inc=""
blueswir1 authored
174
oss_lib=""
175
vnc_tls="yes"
176
vnc_sasl="yes"
177
bsd="no"
bellard authored
178
linux="no"
179
solaris="no"
bellard authored
180
kqemu="no"
181
profiler="no"
182
cocoa="no"
183
softmmu="yes"
184
185
linux_user="no"
darwin_user="no"
186
bsd_user="no"
187
guest_base=""
188
build_docs="yes"
189
uname_release=""
balrog authored
190
curses="yes"
191
curl="yes"
192
pthread="yes"
193
aio="yes"
194
io_thread="no"
195
nptl="yes"
196
mixemu="no"
197
bluez="yes"
198
kvm="no"
199
kerneldir=""
malc authored
200
aix="no"
201
blobs="yes"
202
fdt="yes"
203
sdl="yes"
204
sdl_x11="no"
205
xen="yes"
pbrook authored
206
pkgversion=""
bellard authored
207
208

# OS specific
209
210
211
212
if check_define __linux__ ; then
  targetos="Linux"
elif check_define _WIN32 ; then
  targetos='MINGW32'
213
214
215
216
elif check_define __OpenBSD__ ; then
  targetos='OpenBSD'
elif check_define __sun__ ; then
  targetos='SunOS'
217
218
219
else
  targetos=`uname -s`
fi
bellard authored
220
case $targetos in
221
222
CYGWIN*)
mingw32="yes"
223
OS_CFLAGS="-mno-cygwin"
224
225
226
if [ "$cpu" = "i386" ] ; then
    kqemu="yes"
fi
227
audio_possible_drivers="sdl"
228
;;
229
230
MINGW32*)
mingw32="yes"
231
232
233
if [ "$cpu" = "i386" ] ; then
    kqemu="yes"
fi
234
audio_possible_drivers="dsound sdl fmod"
235
;;
236
GNU/kFreeBSD)
237
audio_drv_list="oss"
238
audio_possible_drivers="oss sdl esd pa"
239
240
241
242
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
    kqemu="yes"
fi
;;
bellard authored
243
244
FreeBSD)
bsd="yes"
245
audio_drv_list="oss"
246
audio_possible_drivers="oss sdl esd pa"
bellard authored
247
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard authored
248
249
    kqemu="yes"
fi
bellard authored
250
;;
251
252
253
254
255
256
257
258
259
DragonFly)
bsd="yes"
audio_drv_list="oss"
audio_possible_drivers="oss sdl esd pa"
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
    kqemu="yes"
fi
aio="no"
;;
bellard authored
260
261
NetBSD)
bsd="yes"
262
audio_drv_list="oss"
263
audio_possible_drivers="oss sdl esd"
264
oss_lib="-lossaudio"
bellard authored
265
266
267
;;
OpenBSD)
bsd="yes"
268
openbsd="yes"
269
audio_drv_list="oss"
270
audio_possible_drivers="oss sdl esd"
blueswir1 authored
271
oss_lib="-lossaudio"
bellard authored
272
;;
273
274
275
Darwin)
bsd="yes"
darwin="yes"
276
# 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
277
278
279
if [ "$cpu" = "i386" ] ; then
    is_x86_64=`sysctl -n hw.optional.x86_64`
    [ "$is_x86_64" = "1" ] && cpu=x86_64
280
281
282
283
284
285
286
fi
if [ "$cpu" = "x86_64" ] ; then
    OS_CFLAGS="-arch x86_64"
    LDFLAGS="-arch x86_64"
else
    OS_CFLAGS="-mdynamic-no-pic"
fi
287
darwin_user="yes"
288
cocoa="yes"
289
audio_drv_list="coreaudio"
290
audio_possible_drivers="coreaudio sdl fmod"
291
OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
292
;;
bellard authored
293
SunOS)
294
295
296
    solaris="yes"
    make="gmake"
    install="ginstall"
297
    needs_libsunmath="no"
298
    solarisrev=`uname -r | cut -f2 -d.`
299
300
301
302
303
304
    # 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
305
    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
306
307
308
309
310
311
312
313
314
315
316
317
        if test "$solarisrev" -le 9 ; then
            if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
                needs_libsunmath="yes"
            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
        fi
        if test "$solarisrev" -ge 9 ; then
318
319
            kqemu="yes"
        fi
ths authored
320
    fi
321
    if test -f /usr/include/sys/soundcard.h ; then
322
        audio_drv_list="oss"
323
    fi
324
    audio_possible_drivers="oss sdl"
325
    OS_CFLAGS=-std=gnu99
ths authored
326
;;
malc authored
327
328
329
330
AIX)
aix="yes"
make="gmake"
;;
331
*)
332
audio_drv_list="oss"
malc authored
333
audio_possible_drivers="oss alsa sdl esd pa"
bellard authored
334
linux="yes"
335
linux_user="yes"
336
usb="linux"
337
kvm="yes"
bellard authored
338
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard authored
339
    kqemu="yes"
340
    audio_possible_drivers="$audio_possible_drivers fmod"
bellard authored
341
fi
342
;;
bellard authored
343
344
esac
bellard authored
345
if [ "$bsd" = "yes" ] ; then
346
  if [ "$darwin" != "yes" ] ; then
347
    make="gmake"
348
    usb="bsd"
349
  fi
350
  bsd_user="yes"
bellard authored
351
352
fi
bellard authored
353
# find source path
pbrook authored
354
source_path=`dirname "$0"`
355
356
source_path_used="no"
workdir=`pwd`
pbrook authored
357
if [ -z "$source_path" ]; then
358
    source_path=$workdir
pbrook authored
359
360
else
    source_path=`cd "$source_path"; pwd`
bellard authored
361
fi
362
[ -f "$workdir/vl.c" ] || source_path_used="yes"
bellard authored
363
364
werror=""
365
bellard authored
366
for opt do
pbrook authored
367
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard authored
368
  case "$opt" in
369
370
  --help|-h) show_help=yes
  ;;
371
  --prefix=*) prefix="$optarg"
bellard authored
372
  ;;
373
  --interp-prefix=*) interp_prefix="$optarg"
bellard authored
374
  ;;
375
  --source-path=*) source_path="$optarg"
pbrook authored
376
  source_path_used="yes"
bellard authored
377
  ;;
378
  --cross-prefix=*)
bellard authored
379
  ;;
380
  --cc=*)
bellard authored
381
  ;;
382
  --host-cc=*) host_cc="$optarg"
bellard authored
383
  ;;
384
  --make=*) make="$optarg"
bellard authored
385
  ;;
386
387
  --install=*) install="$optarg"
  ;;
388
  --extra-cflags=*) EXTRA_CFLAGS="$optarg"
bellard authored
389
  ;;
390
  --extra-ldflags=*) EXTRA_LDFLAGS="$optarg"
bellard authored
391
  ;;
392
  --cpu=*) cpu="$optarg"
bellard authored
393
  ;;
394
  --target-list=*) target_list="$optarg"
bellard authored
395
  ;;
bellard authored
396
397
  --enable-gprof) gprof="yes"
  ;;
bellard authored
398
399
  --static) static="yes"
  ;;
400
401
  --disable-sdl) sdl="no"
  ;;
402
  --fmod-lib=*) fmod_lib="$optarg"
403
  ;;
404
405
  --fmod-inc=*) fmod_inc="$optarg"
  ;;
blueswir1 authored
406
407
  --oss-lib=*) oss_lib="$optarg"
  ;;
408
  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
409
  ;;
410
  --audio-drv-list=*) audio_drv_list="$optarg"
411
  ;;
412
413
414
415
  --enable-debug-tcg) debug_tcg="yes"
  ;;
  --disable-debug-tcg) debug_tcg="no"
  ;;
Paul Brook authored
416
417
418
419
420
421
  --enable-debug)
      # Enable debugging options that aren't excessively noisy
      debug_tcg="yes"
      debug="yes"
      strip_opt="no"
  ;;
422
423
424
425
  --enable-sparse) sparse="yes"
  ;;
  --disable-sparse) sparse="no"
  ;;
426
427
  --disable-strip) strip_opt="no"
  ;;
428
429
  --disable-vnc-tls) vnc_tls="no"
  ;;
430
431
  --disable-vnc-sasl) vnc_sasl="no"
  ;;
bellard authored
432
  --disable-slirp) slirp="no"
433
  ;;
434
  --disable-vde) vde="no"
435
  ;;
bellard authored
436
  --disable-kqemu) kqemu="no"
437
  ;;
438
439
  --disable-xen) xen="no"
  ;;
aurel32 authored
440
441
  --disable-brlapi) brlapi="no"
  ;;
442
443
  --disable-bluez) bluez="no"
  ;;
aliguori authored
444
445
  --disable-kvm) kvm="no"
  ;;
446
447
  --enable-profiler) profiler="yes"
  ;;
448
449
450
451
  --enable-cocoa)
      cocoa="yes" ;
      sdl="no" ;
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
452
  ;;
453
  --disable-system) softmmu="no"
454
  ;;
455
  --enable-system) softmmu="yes"
456
  ;;
457
  --disable-linux-user) linux_user="no"
458
  ;;
459
460
461
462
463
  --enable-linux-user) linux_user="yes"
  ;;
  --disable-darwin-user) darwin_user="no"
  ;;
  --enable-darwin-user) darwin_user="yes"
464
  ;;
465
466
467
468
  --disable-bsd-user) bsd_user="no"
  ;;
  --enable-bsd-user) bsd_user="yes"
  ;;
469
470
471
472
  --enable-guest-base) guest_base="yes"
  ;;
  --disable-guest-base) guest_base="no"
  ;;
473
474
  --enable-uname-release=*) uname_release="$optarg"
  ;;
475
476
477
478
  --sparc_cpu=*)
      sparc_cpu="$optarg"
      case $sparc_cpu in
        v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
479
                 target_arch2="sparc"; cpu="sparc" ;;
480
        v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
481
                 target_arch2="sparc"; cpu="sparc" ;;
482
        v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
483
                 target_arch2="sparc64"; cpu="sparc64" ;;
484
485
486
        *)     echo "undefined SPARC architecture. Exiting";exit 1;;
      esac
  ;;
487
488
489
490
  --enable-werror) werror="yes"
  ;;
  --disable-werror) werror="no"
  ;;
balrog authored
491
492
  --disable-curses) curses="no"
  ;;
493
494
  --disable-curl) curl="no"
  ;;
495
496
  --disable-nptl) nptl="no"
  ;;
497
498
  --enable-mixemu) mixemu="yes"
  ;;
499
500
  --disable-pthread) pthread="no"
  ;;
501
502
  --disable-aio) aio="no"
  ;;
503
504
  --enable-io-thread) io_thread="yes"
  ;;
505
506
  --disable-blobs) blobs="no"
  ;;
507
508
  --kerneldir=*) kerneldir="$optarg"
  ;;
pbrook authored
509
510
  --with-pkgversion=*) pkgversion=" ($optarg)"
  ;;
511
512
  --disable-docs) build_docs="no"
  ;;
513
514
  *) echo "ERROR: unknown option $opt"; show_help="yes"
  ;;
bellard authored
515
516
517
  esac
done
518
# default flags for all hosts
Paul Brook authored
519
520
521
522
CFLAGS="$CFLAGS -g -fno-strict-aliasing"
if test "$debug" = "no" ; then
  CFLAGS="$CFLAGS -O2"
fi
523
CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls"
524
LDFLAGS="$LDFLAGS -g"
Blue Swirl authored
525
526
527
528
529
530
531
532
533
534
535
536
537

# 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
538
if test "$werror" = "yes" ; then
Blue Swirl authored
539
    CFLAGS="$CFLAGS -Werror"
540
fi
541
542
543
544
545
if test "$solaris" = "no" ; then
    if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
        LDFLAGS="$LDFLAGS -Wl,--warn-common"
    fi
546
547
fi
548
549
550
551
#
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
#
552
host_guest_base="no"
553
case "$cpu" in
554
555
556
557
558
559
560
    sparc) if test -z "$sparc_cpu" ; then
               ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
               ARCH_LDFLAGS="-m32"
           else
               ARCH_CFLAGS="${SP_CFLAGS}"
               ARCH_LDFLAGS="${SP_LDFLAGS}"
           fi
561
562
563
564
           ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g2 -ffixed-g3"
           if test "$solaris" = "no" ; then
               ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g1 -ffixed-g6"
           fi
565
566
567
568
569
570
571
572
           ;;
    sparc64) if test -z "$sparc_cpu" ; then
               ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
               ARCH_LDFLAGS="-m64"
           else
               ARCH_CFLAGS="${SP_CFLAGS}"
               ARCH_LDFLAGS="${SP_LDFLAGS}"
           fi
573
574
575
576
577
           if test "$solaris" = "no" ; then
               ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g5 -ffixed-g6 -ffixed-g7"
           else
               ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g1 -ffixed-g5 -ffixed-g6 -ffixed-g7"
           fi
578
           ;;
579
580
581
    s390)
           ARCH_CFLAGS="-march=z900"
           ;;
582
583
584
    i386)
           ARCH_CFLAGS="-m32"
           ARCH_LDFLAGS="-m32"
585
           host_guest_base="yes"
586
587
588
589
           ;;
    x86_64)
           ARCH_CFLAGS="-m64"
           ARCH_LDFLAGS="-m64"
590
591
592
593
           host_guest_base="yes"
           ;;
    arm*)
           host_guest_base="yes"
594
           ;;
malc authored
595
596
597
    ppc*)
           host_guest_base="yes"
           ;;
598
599
esac
600
601
[ -z "$guest_base" ] && guest_base="$host_guest_base"
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
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 "kqemu kernel acceleration support:"
echo "  --disable-kqemu          disable kqemu support"
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."
624
625
echo "  --extra-cflags=CFLAGS    append extra C compiler flags CFLAGS"
echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
626
echo "  --make=MAKE              use specified make [$make]"
627
echo "  --install=INSTALL        use specified install [$install]"
628
echo "  --static                 enable static build [$static]"
629
630
echo "  --enable-debug-tcg       enable TCG debugging"
echo "  --disable-debug-tcg      disable TCG debugging (default)"
631
echo "  --enable-debug           enable common debug build options"
632
633
echo "  --enable-sparse          enable sparse checker"
echo "  --disable-sparse         disable sparse checker (default)"
634
echo "  --disable-strip          disable stripping binaries"
635
echo "  --disable-werror         disable compilation abort on warning"
636
echo "  --disable-sdl            disable SDL"
637
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
638
639
echo "  --audio-drv-list=LIST    set audio drivers list:"
echo "                           Available drivers: $audio_possible_drivers"
640
641
echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
echo "                           Available cards: $audio_possible_cards"
642
echo "  --enable-mixemu          enable mixer emulation"
643
echo "  --disable-xen            disable xen backend driver support"
aurel32 authored
644
echo "  --disable-brlapi         disable BrlAPI"
645
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
646
echo "  --disable-vnc-sasl       disable SASL encryption for VNC server"
647
echo "  --disable-curses         disable curses output"
648
echo "  --disable-curl           disable curl connectivity"
649
echo "  --disable-bluez          disable bluez stack connectivity"
aliguori authored
650
echo "  --disable-kvm            disable KVM acceleration support"
651
echo "  --disable-nptl           disable usermode NPTL support"
652
653
echo "  --enable-system          enable all system emulation targets"
echo "  --disable-system         disable all system emulation targets"
654
655
656
657
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"
658
659
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
660
661
662
echo "  --enable-guest-base      enable GUEST_BASE support for usermode"
echo "                           emulation targets"
echo "  --disable-guest-base     disable GUEST_BASE support"
663
664
echo "  --fmod-lib               path to FMOD library"
echo "  --fmod-inc               path to FMOD includes"
blueswir1 authored
665
echo "  --oss-lib                path to OSS library"
666
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
667
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
668
echo "  --disable-vde            disable support for vde network"
669
echo "  --disable-pthread        disable pthread support"
670
echo "  --disable-aio            disable AIO support"
671
echo "  --enable-io-thread       enable IO thread"
672
echo "  --disable-blobs          disable installing provided firmware blobs"
673
echo "  --kerneldir=PATH         look for kernel includes in PATH"
674
echo ""
ths authored
675
echo "NOTE: The object files are built at the place where configure is launched"
676
677
678
exit 1
fi
679
if test "$mingw32" = "yes" ; then
bellard authored
680
    linux="no"
681
    EXESUF=".exe"
bellard authored
682
    oss="no"
aliguori authored
683
    linux_user="no"
684
    bsd_user="no"
685
    OS_CFLAGS="$OS_CFLAGS -DWIN32_LEAN_AND_MEAN -DWINVER=0x501"
aliguori authored
686
687
fi
688
689
690
691
if test ! -x "$(which cgcc 2>/dev/null)"; then
    sparse="no"
fi
bellard authored
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
#
# 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
717
fi
bellard authored
718
719
bellard authored
720
721
if test -z "$target_list" ; then
# these targets are portable
722
    if [ "$softmmu" = "yes" ] ; then
aurel32 authored
723
724
725
726
727
728
        target_list="\
i386-softmmu \
x86_64-softmmu \
arm-softmmu \
cris-softmmu \
m68k-softmmu \
729
microblaze-softmmu \
aurel32 authored
730
731
732
733
734
735
736
737
738
739
mips-softmmu \
mipsel-softmmu \
mips64-softmmu \
mips64el-softmmu \
ppc-softmmu \
ppcemb-softmmu \
ppc64-softmmu \
sh4-softmmu \
sh4eb-softmmu \
sparc-softmmu \
740
sparc64-softmmu \
aurel32 authored
741
"
742
    fi
bellard authored
743
# the following are Linux specific
744
    if [ "$linux_user" = "yes" ] ; then
aurel32 authored
745
746
747
748
749
750
751
752
        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 \
753
microblaze-linux-user \
aurel32 authored
754
755
756
757
758
759
760
761
762
763
764
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 \
"
765
766
767
    fi
# the following are Darwin specific
    if [ "$darwin_user" = "yes" ] ; then
malc authored
768
        target_list="$target_list i386-darwin-user ppc-darwin-user "
bellard authored
769
    fi
770
771
772
# the following are BSD specific
    if [ "$bsd_user" = "yes" ] ; then
        target_list="${target_list}\
773
774
775
i386-bsd-user \
x86_64-bsd-user \
sparc-bsd-user \
776
777
778
sparc64-bsd-user \
"
    fi
779
else
780
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard authored
781
fi
782
783
784
785
if test -z "$target_list" ; then
    echo "No targets enabled"
    exit 1
fi
bellard authored
786
bellard authored
787
788
789
790
791
792
793
if test -z "$cross_prefix" ; then

# ---
# big/little endian test
cat > $TMPC << EOF
#include <inttypes.h>
int main(int argc, char ** argv){
794
795
        volatile uint32_t i=0x01234567;
        return (*((uint8_t*)(&i))) == 0x67;
bellard authored
796
797
798
}
EOF
799
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
bellard authored
800
801
802
803
804
805
806
807
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
aurel32 authored
808
if test "$cpu" = "armv4b" \
aurel32 authored
809
     -o "$cpu" = "hppa" \
aurel32 authored
810
811
812
     -o "$cpu" = "m68k" \
     -o "$cpu" = "mips" \
     -o "$cpu" = "mips64" \
malc authored
813
814
     -o "$cpu" = "ppc" \
     -o "$cpu" = "ppc64" \
aurel32 authored
815
816
817
     -o "$cpu" = "s390" \
     -o "$cpu" = "sparc" \
     -o "$cpu" = "sparc64"; then
bellard authored
818
819
820
821
822
    bigendian="yes"
fi

fi
823
824
# host long bits test
hostlongbits="32"
aurel32 authored
825
826
827
if test "$cpu" = "x86_64" \
     -o "$cpu" = "alpha" \
     -o "$cpu" = "ia64" \
malc authored
828
829
     -o "$cpu" = "sparc64" \
     -o "$cpu" = "ppc64"; then
830
831
832
    hostlongbits="64"
fi
833
834
835
# Check host NPTL support
cat > $TMPC <<EOF
#include <sched.h>
pbrook authored
836
#include <linux/futex.h>
837
838
839
840
841
842
843
844
void foo()
{
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
}
EOF
845
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
846
847
848
849
850
  :
else
   nptl="no"
fi
bellard authored
851
##########################################
852
853
854
855
856
857
# zlib check

cat > $TMPC << EOF
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
858
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz > /dev/null 2> /dev/null ; then
859
860
861
862
863
864
865
866
867
868
    :
else
    echo
    echo "Error: zlib check failed"
    echo "Make sure to have the zlib libs and headers installed."
    echo
    exit 1
fi

##########################################
869
870
871
872
873
874
# xen probe

if test "$xen" = "yes" ; then
cat > $TMPC <<EOF
#include <xenctrl.h>
#include <xs.h>
875
int main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
876
EOF
877
   if $cc $CFLAGS $ARCH_CFLAGS -c -o $TMPO $TMPC $LDFLAGS -lxenstore -lxenctrl 2> /dev/null > /dev/null ; then
878
879
880
881
882
883
884
      :
   else
      xen="no"
   fi
fi

##########################################
bellard authored
885
886
887
888
# SDL probe

sdl_too_old=no
889
if test "$sdl" = "yes" ; then
890
891
892
893
    sdl_config="sdl-config"
    sdl=no
    sdl_static=no
bellard authored
894
895
896
897
898
cat > $TMPC << EOF
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
899
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` > $TMPSDLLOG 2>&1 ; then
aliguori authored
900
901
902
903
904
905
        _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
906
            fi
aliguori authored
907
        fi
bellard authored
908
aliguori authored
909
910
911
912
913
914
915
916
917
        # static link with sdl ?
        if test "$sdl" = "yes" ; then
            aa="no"
            `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
            sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
            if [ "$aa" = "yes" ] ; then
                sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
            fi
918
            if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs > /dev/null 2> /dev/null; then
aliguori authored
919
920
921
922
                sdl_static=yes
            fi
        fi # static link
    fi # sdl compile test
923
else
924
925
926
    # Make sure to disable cocoa if sdl was set
    if test "$sdl" = "yes" ; then
       cocoa="no"
927
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
928
    fi
929
fi # -z $sdl
bellard authored
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
if test "$sdl" = "yes" ; then
cat > $TMPC <<EOF
#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
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` > /dev/null 2>&1 ; then
	sdl_x11="yes"
    fi
fi
946
##########################################
947
948
# VNC TLS detection
if test "$vnc_tls" = "yes" ; then
949
950
951
952
953
954
955
cat > $TMPC <<EOF
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
    vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
    vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
956
           $vnc_tls_libs > /dev/null 2> /dev/null ; then
957
958
959
960
	:
    else
	vnc_tls="no"
    fi
961
962
963
fi

##########################################
964
965
966
967
968
969
970
971
972
973
974
# VNC SASL detection
if test "$vnc_sasl" = "yes" ; then
cat > $TMPC <<EOF
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
    # Assuming Cyrus-SASL installed in /usr prefix
    vnc_sasl_cflags=""
    vnc_sasl_libs="-lsasl2"
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_sasl_cflags $TMPC \
975
           $vnc_sasl_libs 2> /dev/null > /dev/null ; then
976
977
978
979
980
981
982
	:
    else
	vnc_sasl="no"
    fi
fi

##########################################
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
   fnmatch="yes"
fi

##########################################
998
999
1000
1001
# vde libraries probe
if test "$vde" = "yes" ; then
  cat > $TMPC << EOF
#include <libvdeplug.h>
pbrook authored
1002
1003
1004
1005
1006
1007
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
    vde_open("", "", &a);
    return 0;
}
1008
EOF
1009
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug > /dev/null 2> /dev/null ; then
1010
1011
        :
    else
1012
        vde="no"
1013
1014
1015
1016
    fi
fi

##########################################
1017
# Sound support libraries probe
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
1029
EOF
1030
    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib > /dev/null 2> /dev/null ; then
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}
1041
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
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);"
    ;;

    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"
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
    ;;
malc authored
1063
1064
1065
1066
1067
1068

    pa)
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
    ;;
blueswir1 authored
1069
1070
1071
1072
    oss|sdl|core|wav|dsound)
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;
malc authored
1073
    *)
malc authored
1074
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malc authored
1075
1076
1077
1078
1079
1080
1081
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
1082
1083
    esac
done
1084
balrog authored
1085
##########################################
aurel32 authored
1086
1087
1088
1089
1090
1091
1092
1093
# BrlAPI probe

if test -z "$brlapi" ; then
    brlapi=no
cat > $TMPC << EOF
#include <brlapi.h>
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
1094
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi > /dev/null 2> /dev/null ; then
aurel32 authored
1095
1096
1097
1098
1099
	    brlapi=yes
    fi # brlapi compile test
fi # -z $brlapi

##########################################
balrog authored
1100
1101
1102
1103
# curses probe

if test "$curses" = "yes" ; then
  curses=no
1104
  ncurses=no
balrog authored
1105
1106
  cat > $TMPC << EOF
#include <curses.h>
1107
1108
1109
1110
#ifdef __OpenBSD__
#define resize_term resizeterm
#endif
int main(void) { resize_term(0, 0); return curses_version(); }
balrog authored
1111
EOF
1112
1113
1114
1115
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lncurses > /dev/null 2> /dev/null ; then
    curses=yes
    ncurses=yes
  elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses > /dev/null 2> /dev/null ; then
balrog authored
1116
1117
1118
1119
    curses=yes
  fi
fi # test "$curses"
1120
##########################################
1121
1122
1123
1124
1125
1126
1127
1128
# curl probe

if test "$curl" = "yes" ; then
  curl=no
  cat > $TMPC << EOF
#include <curl/curl.h>
int main(void) { return curl_easy_init(); }
EOF
1129
  curl_libs=`curl-config --libs 2>/dev/null`
1130
1131
1132
1133
1134
1135
 if $cc $ARCH_CFLAGS $curl_libs -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
    curl=yes
  fi
fi # test "$curl"

##########################################
1136
1137
# bluez support probe
if test "$bluez" = "yes" ; then
1138
  `pkg-config bluez 2> /dev/null` || bluez="no"
1139
1140
fi
if test "$bluez" = "yes" ; then
1141
1142
1143
1144
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
1145
1146
  bluez_cflags=`pkg-config --cflags bluez 2> /dev/null`
  bluez_libs=`pkg-config --libs bluez 2> /dev/null`
1147
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
1148
      $bluez_libs > /dev/null 2> /dev/null ; then
1149
1150
1151
1152
    :
  else
    bluez="no"
  fi
1153
1154
1155
fi

##########################################
aliguori authored
1156
1157
1158
1159
# kvm probe
if test "$kvm" = "yes" ; then
    cat > $TMPC <<EOF
#include <linux/kvm.h>
1160
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
aliguori authored
1161
1162
#error Invalid KVM version
#endif
1163
1164
1165
1166
1167
1168
1169
1170
1171
#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
aliguori authored
1172
1173
int main(void) { return 0; }
EOF
1174
1175
  if test "$kerneldir" != "" ; then
      kvm_cflags=-I"$kerneldir"/include
1176
1177
1178
      if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
         -a -d "$kerneldir/arch/x86/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
1179
1180
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
1181
1182
1183
        elif test -d "$kerneldir/arch/$cpu/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
      fi
1184
1185
1186
  else
      kvm_cflags=""
  fi
aliguori authored
1187
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
1188
      > /dev/null 2>/dev/null ; then
aliguori authored
1189
1190
    :
  else
1191
1192
1193
    kvm="no";
    if [ -x "`which awk 2>/dev/null`" ] && \
       [ -x "`which grep 2>/dev/null`" ]; then
1194
      kvmerr=`LANG=C $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC 2>&1 \
1195
1196
1197
	| grep "error: " \
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
      if test "$kvmerr" != "" ; then
1198
1199
1200
        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."
1201
1202
      fi
    fi
aliguori authored
1203
1204
1205
1206
  fi
fi

##########################################
1207
# pthread probe
1208
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1209
PTHREADLIBS=""
1210
1211
1212
1213
if test "$pthread" = yes; then
  pthread=no
cat > $TMPC << EOF
1214
#include <pthread.h>
1215
int main(void) { pthread_create(0,0,0,0); return 0; }
1216
EOF
1217
1218
1219
1220
1221
1222
1223
  for pthread_lib in $PTHREADLIBS_LIST; do
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC $pthread_lib 2> /dev/null > /dev/null ; then
      pthread=yes
      PTHREADLIBS="$pthread_lib"
      break
    fi
  done
1224
1225
fi
1226
1227
1228
1229
1230
if test "$pthread" = no; then
   aio=no
   io_thread=no
fi
1231
1232
1233
##########################################
# iovec probe
cat > $TMPC <<EOF
blueswir1 authored
1234
#include <sys/types.h>
1235
#include <sys/uio.h>
blueswir1 authored
1236
#include <unistd.h>
1237
1238
1239
int main(void) { struct iovec iov; return 0; }
EOF
iovec=no
1240
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1241
1242
1243
  iovec=yes
fi
1244
##########################################
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
int main(void) { preadv; }
EOF
preadv=no
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
  preadv=yes
fi

##########################################
1258
1259
1260
1261
1262
1263
# fdt probe
if test "$fdt" = "yes" ; then
    fdt=no
    cat > $TMPC << EOF
int main(void) { return 0; }
EOF
1264
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lfdt 2> /dev/null > /dev/null ; then
1265
1266
1267
1268
    fdt=yes
  fi
fi
1269
1270
1271
1272
1273
1274
#
# 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
1275
cat > $TMPC << EOF
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
#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
1288
1289
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null > /dev/null ; then
  atfile=yes
1290
1291
fi
1292
# Check for inotify functions when we are building linux-user
1293
1294
1295
1296
1297
# 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
1298
cat > $TMPC << EOF
1299
1300
1301
1302
1303
1304
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
1305
	return inotify_init();
1306
1307
}
EOF
1308
1309
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null > /dev/null ; then
  inotify=yes
1310
1311
fi
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
# 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
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
  utimens=yes
fi
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
# 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
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
  pipe2=yes
fi
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
# 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
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
  splice=yes
fi
1369
# Check if tools are available to build documentation.
1370
1371
if test "$build_docs" = "yes" -a \( ! -x "`which texi2html 2>/dev/null`" -o ! -x "`which pod2man 2>/dev/null`" \) ; then
  build_docs="no"
1372
1373
fi
1374
1375
##########################################
# Do we need librt
1376
CLOCKLIBS=""
1377
1378
1379
1380
1381
1382
1383
cat > $TMPC <<EOF
#include <signal.h>
#include <time.h>
int main(void) { clockid_t id; return clock_gettime(id, NULL); }
EOF

rt=no
1384
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1385
  :
1386
elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lrt > /dev/null 2> /dev/null ; then
1387
1388
1389
1390
  rt=yes
fi

if test "$rt" = "yes" ; then
1391
  CLOCKLIBS="-lrt"
1392
1393
fi
bellard authored
1394
if test "$mingw32" = "yes" ; then
1395
  if test -z "$prefix" ; then
1396
      prefix="c:\\\\Program Files\\\\Qemu"
1397
1398
1399
1400
1401
  fi
  mansuffix=""
  datasuffix=""
  docsuffix=""
  binsuffix=""
bellard authored
1402
else
1403
1404
1405
1406
1407
1408
1409
  if test -z "$prefix" ; then
      prefix="/usr/local"
  fi
  mansuffix="/share/man"
  datasuffix="/share/qemu"
  docsuffix="/share/doc/qemu"
  binsuffix="/bin"
bellard authored
1410
fi
1411
bellard authored
1412
echo "Install prefix    $prefix"
1413
1414
echo "BIOS directory    $prefix$datasuffix"
echo "binary directory  $prefix$binsuffix"
bellard authored
1415
if test "$mingw32" = "no" ; then
1416
echo "Manual directory  $prefix$mansuffix"
bellard authored
1417
echo "ELF interp prefix $interp_prefix"
bellard authored
1418
fi
1419
echo "Source path       $source_path"
bellard authored
1420
echo "C compiler        $cc"
bellard authored
1421
echo "Host C compiler   $host_cc"
1422
echo "ARCH_CFLAGS       $ARCH_CFLAGS"
bellard authored
1423
echo "make              $make"
1424
echo "install           $install"
bellard authored
1425
echo "host CPU          $cpu"
bellard authored
1426
echo "host big endian   $bigendian"
1427
echo "target list       $target_list"
1428
echo "tcg debug enabled $debug_tcg"
bellard authored
1429
echo "gprof enabled     $gprof"
1430
echo "sparse enabled    $sparse"
1431
echo "strip binaries    $strip_opt"
1432
echo "profiler          $profiler"
bellard authored
1433
echo "static build      $static"
1434
echo "-Werror enabled   $werror"
1435
1436
1437
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
1438
echo "SDL support       $sdl"
bellard authored
1439
1440
1441
if test "$sdl" != "no" ; then
    echo "SDL static link   $sdl_static"
fi
balrog authored
1442
echo "curses support    $curses"
1443
echo "curl support      $curl"
1444
echo "mingw32 support   $mingw32"
1445
1446
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
1447
echo "Mixer emulation   $mixemu"
1448
1449
1450
1451
1452
echo "VNC TLS support   $vnc_tls"
if test "$vnc_tls" = "yes" ; then
    echo "    TLS CFLAGS    $vnc_tls_cflags"
    echo "    TLS LIBS      $vnc_tls_libs"
fi
1453
1454
1455
1456
1457
echo "VNC SASL support  $vnc_sasl"
if test "$vnc_sasl" = "yes" ; then
    echo "    SASL CFLAGS    $vnc_sasl_cflags"
    echo "    SASL LIBS      $vnc_sasl_libs"
fi
1458
1459
1460
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
bellard authored
1461
echo "kqemu support     $kqemu"
1462
echo "xen support       $xen"
aurel32 authored
1463
echo "brlapi support    $brlapi"
1464
echo "Documentation     $build_docs"
1465
1466
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
1467
echo "NPTL support      $nptl"
1468
echo "GUEST_BASE        $guest_base"
1469
echo "vde support       $vde"
1470
echo "AIO support       $aio"
1471
echo "IO thread         $io_thread"
1472
echo "Install blobs     $blobs"
1473
echo -e "KVM support       $kvm"
1474
echo "fdt support       $fdt"
1475
echo "preadv support    $preadv"
1476
1477
if test $sdl_too_old = "yes"; then
1478
echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellard authored
1479
fi
1480
1481
1482
#if test "$sdl_static" = "no"; then
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
#fi
bellard authored
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
config_host_mak="config-host.mak"
config_host_h="config-host.h"

#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
echo "/* Automatically generated by configure - do not modify */" > $config_host_h

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 "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_host_h
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
echo "AR=$ar" >> $config_host_mak
echo "OBJCOPY=$objcopy" >> $config_host_mak
echo "LD=$ld" >> $config_host_mak
echo "CFLAGS=$CFLAGS $OS_CFLAGS $ARCH_CFLAGS $EXTRA_CFLAGS" >> $config_host_mak
echo "LDFLAGS=$LDFLAGS $OS_LDFLAGS $ARCH_LDFLAGS $EXTRA_LDFLAGS" >> $config_host_mak
echo "EXESUF=$EXESUF" >> $config_host_mak
echo "PTHREADLIBS=$PTHREADLIBS" >> $config_host_mak
echo "CLOCKLIBS=$CLOCKLIBS" >> $config_host_mak
aurel32 authored
1518
case "$cpu" in
1519
  i386|x86_64|alpha|cris|hppa|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
1520
    ARCH=$cpu
aurel32 authored
1521
  ;;
1522
  armv4b|armv4l)
1523
    ARCH=arm
aurel32 authored
1524
1525
1526
1527
1528
1529
  ;;
  *)
    echo "Unsupported CPU = $cpu"
    exit 1
  ;;
esac
1530
echo "ARCH=$ARCH" >> $config_host_mak
1531
arch_name=`echo $ARCH | tr '[:lower:]' '[:upper:]'`
1532
echo "#define HOST_$arch_name 1" >> $config_host_h
1533
1534
if test "$debug_tcg" = "yes" ; then
1535
  echo "#define DEBUG_TCG 1" >> $config_host_h
1536
fi
Paul Brook authored
1537
if test "$debug" = "yes" ; then
1538
  echo "#define DEBUG_EXEC 1" >> $config_host_h
Paul Brook authored
1539
fi
1540
if test "$sparse" = "yes" ; then
1541
1542
1543
  echo "CC      := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
  echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
  echo "CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
1544
fi
1545
if test "$strip_opt" = "yes" ; then
1546
  echo "STRIP_OPT=-s" >> $config_host_mak
1547
fi
bellard authored
1548
if test "$bigendian" = "yes" ; then
1549
1550
  echo "WORDS_BIGENDIAN=yes" >> $config_host_mak
  echo "#define WORDS_BIGENDIAN 1" >> $config_host_h
1551
fi
1552
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_host_h
1553
if test "$mingw32" = "yes" ; then
1554
1555
  echo "CONFIG_WIN32=y" >> $config_host_mak
  echo "#define CONFIG_WIN32 1" >> $config_host_h
1556
1557
1558
1559
1560
else
  cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
1561
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1562
    echo "#define HAVE_BYTESWAP_H 1" >> $config_host_h
1563
  fi
1564
1565
1566
1567
1568
1569
  cat > $TMPC << EOF
#include <sys/endian.h>
#include <sys/types.h>
#include <machine/bswap.h>
int main(void) { return bswap32(0); }
EOF
1570
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1571
    echo "#define HAVE_MACHINE_BSWAP_H 1" >> $config_host_h
1572
  fi
1573
fi
1574
1575

if [ "$openbsd" = "yes" ] ; then
1576
  echo "#define ENOTSUP 4096" >> $config_host_h
1577
1578
fi
1579
if test "$darwin" = "yes" ; then
1580
1581
  echo "CONFIG_DARWIN=y" >> $config_host_mak
  echo "#define CONFIG_DARWIN 1" >> $config_host_h
1582
fi
malc authored
1583
1584

if test "$aix" = "yes" ; then
1585
1586
  echo "CONFIG_AIX=y" >> $config_host_mak
  echo "#define CONFIG_AIX 1" >> $config_host_h
malc authored
1587
1588
fi
bellard authored
1589
if test "$solaris" = "yes" ; then
1590
1591
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
  echo "#define HOST_SOLARIS $solarisrev" >> $config_host_h
1592
  if test "$needs_libsunmath" = "yes" ; then
1593
1594
    echo "NEEDS_LIBSUNMATH=yes" >> $config_host_mak
    echo "#define NEEDS_LIBSUNMATH 1" >> $config_host_h
1595
  fi
bellard authored
1596
fi
1597
if test -n "$sparc_cpu"; then
1598
1599
  echo "CONFIG__sparc_${sparc_cpu}__=y" >> $config_host_mak
  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_host_h
1600
fi
1601
if test "$gprof" = "yes" ; then
1602
1603
  echo "TARGET_GPROF=yes" >> $config_host_mak
  echo "#define HAVE_GPROF 1" >> $config_host_h
1604
1605
fi
if test "$static" = "yes" ; then
1606
1607
  echo "CONFIG_STATIC=y" >> $config_host_mak
  echo "#define CONFIG_STATIC 1" >> $config_host_h
bellard authored
1608
fi
1609
if test $profiler = "yes" ; then
1610
  echo "#define CONFIG_PROFILER 1" >> $config_host_h
1611
fi
1612
if test "$slirp" = "yes" ; then
1613
1614
  echo "CONFIG_SLIRP=y" >> $config_host_mak
  echo "#define CONFIG_SLIRP 1" >> $config_host_h
1615
fi
1616
if test "$vde" = "yes" ; then
1617
1618
1619
  echo "CONFIG_VDE=y" >> $config_host_mak
  echo "#define CONFIG_VDE 1" >> $config_host_h
  echo "VDE_LIBS=-lvdeplug" >> $config_host_mak
1620
fi
1621
for card in $audio_card_list; do
pbrook authored
1622
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1623
1624
    echo "$def=y" >> $config_host_mak
    echo "#define $def 1" >> $config_host_h
1625
done
1626
echo "#define AUDIO_DRIVERS \\" >> $config_host_h
1627
for drv in $audio_drv_list; do
1628
    echo "    &${drv}_audio_driver, \\" >>$config_host_h
pbrook authored
1629
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1630
    echo "$def=y" >> $config_host_mak
1631
    if test "$drv" = "fmod"; then
1632
1633
        echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_host_mak
        echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_host_mak
blueswir1 authored
1634
    elif test "$drv" = "oss"; then
1635
        echo "CONFIG_OSS_LIB=$oss_lib" >> $config_host_mak
1636
1637
    fi
done
1638
echo "" >>$config_host_h
1639
if test "$mixemu" = "yes" ; then
1640
1641
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
  echo "#define CONFIG_MIXEMU 1" >> $config_host_h
1642
fi
1643
if test "$vnc_tls" = "yes" ; then
1644
1645
1646
1647
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
  echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
  echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_host_mak
  echo "#define CONFIG_VNC_TLS 1" >> $config_host_h
1648
fi
1649
if test "$vnc_sasl" = "yes" ; then
1650
1651
1652
1653
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
  echo "CONFIG_VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
  echo "CONFIG_VNC_SASL_LIBS=$vnc_sasl_libs" >> $config_host_mak
  echo "#define CONFIG_VNC_SASL 1" >> $config_host_h
1654
fi
1655
if test "$fnmatch" = "yes" ; then
1656
  echo "#define HAVE_FNMATCH_H 1" >> $config_host_h
1657
fi
1658
qemu_version=`head $source_path/VERSION`
1659
1660
echo "VERSION=$qemu_version" >>$config_host_mak
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_host_h
1661
1662
echo "#define QEMU_PKGVERSION \"$pkgversion\"" >> $config_host_h
pbrook authored
1663
1664
echo "SRC_PATH=$source_path" >> $config_host_mak
pbrook authored
1665
if [ "$source_path_used" = "yes" ]; then
1666
  echo "VPATH=$source_path" >> $config_host_mak
pbrook authored
1667
fi
1668
echo "TARGET_DIRS=$target_list" >> $config_host_mak
1669
if [ "$build_docs" = "yes" ] ; then
1670
  echo "BUILD_DOCS=yes" >> $config_host_mak
1671
fi
1672
1673
1674
1675
1676
1677
if test "$static" = "yes"; then
  sdl1=$sdl_static
else
  sdl1=$sdl
fi
if test "$sdl1" = "yes" ; then
1678
1679
  echo "#define CONFIG_SDL 1" >> $config_host_h
  echo "CONFIG_SDL=y" >> $config_host_mak
1680
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1681
    echo "SDL_LIBS=$sdl_static_libs" >> $config_host_mak
1682
  elif test "$sdl_x11" = "yes" ; then
1683
    echo "SDL_LIBS=`$sdl_config --libs` -lX11" >> $config_host_mak
1684
  else
1685
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_host_mak
1686
1687
  fi
  if [ "${aa}" = "yes" ] ; then
1688
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_host_mak
1689
  else
1690
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_host_mak
1691
1692
1693
  fi
fi
if test "$cocoa" = "yes" ; then
1694
1695
  echo "#define CONFIG_COCOA 1" >> $config_host_h
  echo "CONFIG_COCOA=y" >> $config_host_mak
balrog authored
1696
1697
fi
if test "$curses" = "yes" ; then
1698
1699
  echo "#define CONFIG_CURSES 1" >> $config_host_h
  echo "CONFIG_CURSES=y" >> $config_host_mak
1700
  if test "$ncurses" = "yes" ; then
1701
    echo "CURSES_LIBS=-lncurses" >> $config_host_mak
1702
  else
1703
    echo "CURSES_LIBS=-lcurses" >> $config_host_mak
1704
  fi
1705
fi
1706
if test "$atfile" = "yes" ; then
1707
  echo "#define CONFIG_ATFILE 1" >> $config_host_h
1708
fi
1709
if test "$utimens" = "yes" ; then
1710
  echo "#define CONFIG_UTIMENSAT 1" >> $config_host_h
1711
fi
1712
if test "$pipe2" = "yes" ; then
1713
  echo "#define CONFIG_PIPE2 1" >> $config_host_h
1714
fi
1715
if test "$splice" = "yes" ; then
1716
  echo "#define CONFIG_SPLICE 1" >> $config_host_h
1717
fi
1718
if test "$inotify" = "yes" ; then
1719
  echo "#define CONFIG_INOTIFY 1" >> $config_host_h
1720
fi
1721
if test "$curl" = "yes" ; then
1722
1723
1724
  echo "CONFIG_CURL=y" >> $config_host_mak
  echo "CURL_LIBS=$curl_libs" >> $config_host_mak
  echo "#define CONFIG_CURL 1" >> $config_host_h
1725
fi
aurel32 authored
1726
if test "$brlapi" = "yes" ; then
1727
1728
1729
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
  echo "#define CONFIG_BRLAPI 1" >> $config_host_h
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_host_mak
aurel32 authored
1730
fi
1731
if test "$bluez" = "yes" ; then
1732
1733
1734
1735
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
  echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
  echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_host_mak
  echo "#define CONFIG_BLUEZ 1" >> $config_host_h
1736
fi
1737
if test "$xen" = "yes" ; then
1738
  echo "XEN_LIBS=-lxenstore -lxenctrl -lxenguest" >> $config_host_mak
1739
fi
1740
if test "$aio" = "yes" ; then
1741
1742
  echo "#define CONFIG_AIO 1" >> $config_host_h
  echo "CONFIG_AIO=y" >> $config_host_mak
1743
fi
1744
if test "$io_thread" = "yes" ; then
1745
1746
  echo "CONFIG_IOTHREAD=y" >> $config_host_mak
  echo "#define CONFIG_IOTHREAD 1" >> $config_host_h
1747
fi
1748
if test "$blobs" = "yes" ; then
1749
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
1750
fi
1751
if test "$iovec" = "yes" ; then
1752
  echo "#define HAVE_IOVEC 1" >> $config_host_h
1753
fi
1754
if test "$preadv" = "yes" ; then
1755
  echo "#define HAVE_PREADV 1" >> $config_host_h
1756
fi
1757
if test "$fdt" = "yes" ; then
1758
1759
  echo "#define HAVE_FDT 1" >> $config_host_h
  echo "FDT_LIBS=-lfdt" >> $config_host_mak
1760
fi
1761
1762
# XXX: suppress that
bellard authored
1763
if [ "$bsd" = "yes" ] ; then
1764
1765
1766
  echo "#define O_LARGEFILE 0" >> $config_host_h
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_host_h
  echo "#define HOST_BSD 1" >> $config_host_h
bellard authored
1767
1768
fi
1769
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_host_h
1770
1771
1772
1773
# USB host support
case "$usb" in
linux)
1774
  echo "HOST_USB=linux" >> $config_host_mak
1775
1776
;;
bsd)
1777
  echo "HOST_USB=bsd" >> $config_host_mak
1778
1779
;;
*)
1780
  echo "HOST_USB=stub" >> $config_host_mak
1781
1782
1783
;;
esac
1784
1785
1786
# Determine what linker flags to use to force archive inclusion
check_linker_flags()
{
1787
1788
1789
1790
1791
    w2=
    if test "$2" ; then
	w2=-Wl,$2
    fi
    $cc $ARCH_CFLAGS -o $TMPE $OS_CFLAGS $TMPC -Wl,$1 ${w2} >/dev/null 2>/dev/null
1792
1793
1794
1795
1796
1797
1798
}

cat > $TMPC << EOF
int main(void) { }
EOF
if check_linker_flags --whole-archive --no-whole-archive ; then
    # GNU ld
1799
1800
    echo "ARLIBS_BEGIN=-Wl,--whole-archive" >> $config_host_mak
    echo "ARLIBS_END=-Wl,--no-whole-archive" >> $config_host_mak
1801
1802
elif check_linker_flags -z,allextract -z,defaultextract ; then
    # Solaris ld
1803
1804
    echo "ARLIBS_BEGIN=-Wl,-z,allextract" >> $config_host_mak
    echo "ARLIBS_END=-Wl,-z,defaultextract" >> $config_host_mak
1805
1806
elif check_linker_flags -all_load ; then
    # Mac OS X
1807
1808
    echo "ARLIBS_BEGIN=-all_load" >> $config_host_mak
    echo "ARLIBS_END=" >> $config_host_mak
1809
1810
1811
1812
1813
1814
else
    echo "Error: your linker does not support --whole-archive or -z."
    echo "Please report to qemu-devel@nongnu.org"
    exit 1
fi
1815
1816
if test "$xen" = "yes" ;
    then
1817
    echo "CONFIG_XEN=y" >> $config_host_mak
1818
1819
fi
1820
1821
tools=
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
aliguori authored
1822
  tools="qemu-img\$(EXESUF) $tools"
1823
  if [ "$linux" = "yes" ] ; then
aliguori authored
1824
      tools="qemu-nbd\$(EXESUF) qemu-io\$(EXESUF) $tools"
1825
  fi
1826
fi
1827
echo "TOOLS=$tools" >> $config_host_mak
1828
1829
1830
1831
1832
roms=
if test "$cpu" = "i386" -o "$cpu" = "x86_64" ; then
  roms="pc-bios/optionrom"
fi
1833
echo "ROMS=$roms" >> $config_host_mak
1834
1835
1836
1837
if test -f ${config_host_h}~ ; then
  if cmp -s $config_host_h ${config_host_h}~ ; then
    mv ${config_host_h}~ $config_host_h
1838
  else
1839
    rm ${config_host_h}~
1840
1841
1842
  fi
fi
1843
for target in $target_list; do
1844
1845
1846
target_dir="$target"
config_mak=$target_dir/config.mak
config_h=$target_dir/config.h
1847
target_arch2=`echo $target | cut -d '-' -f 1`
1848
target_bigendian="no"
1849
1850
1851
1852
1853
case "$target_arch2" in
  armeb|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|sh4eb|sparc|sparc64|sparc32plus)
  target_bigendian=yes
  ;;
esac
1854
target_softmmu="no"
bellard authored
1855
target_user_only="no"
1856
1857
target_linux_user="no"
target_darwin_user="no"
1858
target_bsd_user="no"
pbrook authored
1859
case "$target" in
1860
  ${target_arch2}-softmmu)
pbrook authored
1861
1862
    target_softmmu="yes"
    ;;
1863
  ${target_arch2}-linux-user)
pbrook authored
1864
1865
1866
    target_user_only="yes"
    target_linux_user="yes"
    ;;
1867
  ${target_arch2}-darwin-user)
pbrook authored
1868
1869
1870
    target_user_only="yes"
    target_darwin_user="yes"
    ;;
1871
  ${target_arch2}-bsd-user)
1872
1873
1874
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
pbrook authored
1875
1876
1877
1878
1879
  *)
    echo "ERROR: Target '$target' not recognised"
    exit 1
    ;;
esac
1880
bellard authored
1881
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1882
1883
1884
test -f $config_h && mv $config_h ${config_h}~
1885
mkdir -p $target_dir
bellard authored
1886
mkdir -p $target_dir/fpu
bellard authored
1887
mkdir -p $target_dir/tcg
1888
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
bellard authored
1889
1890
1891
  mkdir -p $target_dir/nwfpe
fi
bellard authored
1892
1893
1894
1895
1896
1897
#
# 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
1898
1899

echo "# Automatically generated by configure - do not modify" > $config_mak
bellard authored
1900
1901
echo "include ../config-host.mak" >> $config_mak
1902
1903
bflt="no"
1904
elfload32="no"
1905
target_nptl="no"
1906
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
1907
echo "CONFIG_QEMU_PREFIX=\"$interp_prefix1\"" >> $config_mak
1908
gdb_xml_files=""
aliguori authored
1909
1910
TARGET_ARCH="$target_arch2"
1911
TARGET_BASE_ARCH=""
1912
TARGET_ABI_DIR=""
1913
1914
case "$target_arch2" in
aurel32 authored
1915
  i386)
1916
    target_phys_bits=32
aurel32 authored
1917
1918
  ;;
  x86_64)
1919
    TARGET_BASE_ARCH=i386
1920
    target_phys_bits=64
aurel32 authored
1921
1922
  ;;
  alpha)
1923
    target_phys_bits=64
aurel32 authored
1924
1925
  ;;
  arm|armeb)
1926
    TARGET_ARCH=arm
aurel32 authored
1927
    bflt="yes"
1928
    target_nptl="yes"
1929
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1930
    target_phys_bits=32
aurel32 authored
1931
1932
  ;;
  cris)
edgar_igl authored
1933
    target_nptl="yes"
1934
    target_phys_bits=32
aurel32 authored
1935
1936
1937
  ;;
  m68k)
    bflt="yes"
1938
    gdb_xml_files="cf-core.xml cf-fp.xml"
1939
    target_phys_bits=32
aurel32 authored
1940
  ;;
1941
1942
1943
1944
1945
  microblaze)
    bflt="yes"
    target_nptl="yes"
    target_phys_bits=32
  ;;
1946
  mips|mipsel)
1947
    TARGET_ARCH=mips
1948
    echo "TARGET_ABI_MIPSO32=y" >> $config_mak
Paul Brook authored
1949
    target_nptl="yes"
1950
    target_phys_bits=64
aurel32 authored
1951
1952
  ;;
  mipsn32|mipsn32el)
1953
    TARGET_ARCH=mipsn32
1954
    TARGET_BASE_ARCH=mips
1955
    echo "TARGET_ABI_MIPSN32=y" >> $config_mak
1956
    target_phys_bits=64
aurel32 authored
1957
1958
  ;;
  mips64|mips64el)
1959
    TARGET_ARCH=mips64
1960
    TARGET_BASE_ARCH=mips
1961
    echo "TARGET_ABI_MIPSN64=y" >> $config_mak
1962
    target_phys_bits=64
aurel32 authored
1963
1964
  ;;
  ppc)
1965
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1966
    target_phys_bits=32
aurel32 authored
1967
1968
  ;;
  ppcemb)
1969
    TARGET_BASE_ARCH=ppc
1970
    TARGET_ABI_DIR=ppc
1971
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1972
    target_phys_bits=64
aurel32 authored
1973
1974
  ;;
  ppc64)
1975
    TARGET_BASE_ARCH=ppc
1976
    TARGET_ABI_DIR=ppc
1977
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1978
    target_phys_bits=64
aurel32 authored
1979
1980
  ;;
  ppc64abi32)
1981
    TARGET_ARCH=ppc64
1982
    TARGET_BASE_ARCH=ppc
1983
    TARGET_ABI_DIR=ppc
1984
    echo "TARGET_ABI32=y" >> $config_mak
1985
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1986
    target_phys_bits=64
aurel32 authored
1987
1988
  ;;
  sh4|sh4eb)
1989
    TARGET_ARCH=sh4
aurel32 authored
1990
    bflt="yes"
aurel32 authored
1991
    target_nptl="yes"
1992
    target_phys_bits=32
aurel32 authored
1993
1994
  ;;
  sparc)
1995
    target_phys_bits=64
aurel32 authored
1996
1997
  ;;
  sparc64)
1998
    TARGET_BASE_ARCH=sparc
aurel32 authored
1999
    elfload32="yes"
2000
    target_phys_bits=64
aurel32 authored
2001
2002
  ;;
  sparc32plus)
2003
    TARGET_ARCH=sparc64
2004
    TARGET_BASE_ARCH=sparc
2005
    TARGET_ABI_DIR=sparc
2006
    echo "TARGET_ABI32=y" >> $config_mak
2007
    target_phys_bits=64
aurel32 authored
2008
2009
2010
2011
2012
2013
  ;;
  *)
    echo "Unsupported target CPU"
    exit 1
  ;;
esac
2014
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_mak
2015
echo "TARGET_ARCH2=$target_arch2" >> $config_mak
2016
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
2017
2018
2019
2020
if [ "$TARGET_BASE_ARCH" = "" ]; then
  TARGET_BASE_ARCH=$TARGET_ARCH
fi
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_mak
2021
2022
2023
2024
if [ "$TARGET_ABI_DIR" = "" ]; then
  TARGET_ABI_DIR=$TARGET_ARCH
fi
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_mak
2025
2026
2027
if [ $target_phys_bits -lt $hostlongbits ] ; then
  target_phys_bits=$hostlongbits
fi
2028
2029
2030
2031
2032
case "$target_arch2" in
  i386|x86_64)
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
      echo "CONFIG_XEN=y" >> $config_mak
    fi
2033
2034
2035
2036
    if test $kqemu = "yes" -a "$target_softmmu" = "yes"
    then
      echo "CONFIG_KQEMU=y" >> $config_mak
    fi
2037
esac
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
case "$target_arch2" in
  i386|x86_64|ppcemb)
    # 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 \
      \( "$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
2050
echo "HWLIB=../libhw$target_phys_bits/libqemuhw$target_phys_bits.a" >> $config_mak
2051
echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_mak
2052
echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
bellard authored
2053
if test "$target_bigendian" = "yes" ; then
2054
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_mak
bellard authored
2055
fi
2056
if test "$target_softmmu" = "yes" ; then
2057
  echo "CONFIG_SOFTMMU=y" >> $config_mak
bellard authored
2058
fi
bellard authored
2059
if test "$target_user_only" = "yes" ; then
2060
  echo "CONFIG_USER_ONLY=y" >> $config_mak
bellard authored
2061
fi
2062
if test "$target_linux_user" = "yes" ; then
2063
  echo "CONFIG_LINUX_USER=y" >> $config_mak
2064
2065
fi
if test "$target_darwin_user" = "yes" ; then
2066
  echo "CONFIG_DARWIN_USER=y" >> $config_mak
2067
fi
2068
2069
2070
2071
2072
2073
2074
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
2075
2076
2077
2078
2079
2080
2081
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
    ;;
esac
2082
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
2083
  echo "TARGET_HAS_BFLT=y" >> $config_mak
2084
fi
2085
2086
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
2087
  echo "USE_NPTL=y" >> $config_mak
2088
fi
2089
2090
# 32 bit ELF loader in addition to native 64 bit loader?
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
2091
  echo "TARGET_HAS_ELFLOAD32=y" >> $config_mak
2092
fi
2093
2094
2095
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_mak
fi
2096
if test "$target_bsd_user" = "yes" ; then
2097
  echo "CONFIG_BSD_USER=y" >> $config_mak
2098
fi
2099
2100
2101
$source_path/create_config < $config_mak > $config_h
2102
2103
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
2104
done # for target in $targets
bellard authored
2105
2106
2107

# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
2108
    DIRS="tests tests/cris slirp audio block pc-bios/optionrom"
bellard authored
2109
    FILES="Makefile tests/Makefile"
2110
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
2111
    FILES="$FILES tests/test-mmap.c"
2112
    FILES="$FILES pc-bios/optionrom/Makefile"
bellard authored
2113
2114
2115
    for dir in $DIRS ; do
            mkdir -p $dir
    done
bellard authored
2116
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard authored
2117
    for f in $FILES ; do
bellard authored
2118
2119
        rm -f $f
        ln -s $source_path/$f $f
bellard authored
2120
2121
    done
fi
2122
2123
2124
2125
2126
2127
2128
2129
2130

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
  echo "CPPFLAGS=-DTARGET_PHYS_ADDR_BITS=$hwlib" >> $d/config.mak
done