Blame view

configure 55.5 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
  --sparc_cpu=*)
      sparc_cpu="$optarg"
      case $sparc_cpu in
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
        v7|v8)
          ARCH_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"
          ARCH_LDFLAGS="-m32"
          cpu="sparc"
        ;;
        v8plus|v8plusa)
          ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"
          ARCH_LDFLAGS="-m32"
          cpu="sparc"
        ;;
        v9)
          ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"
          ARCH_LDFLAGS="-m64"
          cpu="sparc64"
        ;;
        *)
          echo "undefined SPARC architecture. Exiting";
          exit 1
        ;;
497
498
      esac
  ;;
499
500
501
502
  --enable-werror) werror="yes"
  ;;
  --disable-werror) werror="no"
  ;;
balrog authored
503
504
  --disable-curses) curses="no"
  ;;
505
506
  --disable-curl) curl="no"
  ;;
507
508
  --disable-nptl) nptl="no"
  ;;
509
510
  --enable-mixemu) mixemu="yes"
  ;;
511
512
  --disable-pthread) pthread="no"
  ;;
513
514
  --disable-aio) aio="no"
  ;;
515
516
  --enable-io-thread) io_thread="yes"
  ;;
517
518
  --disable-blobs) blobs="no"
  ;;
519
520
  --kerneldir=*) kerneldir="$optarg"
  ;;
pbrook authored
521
522
  --with-pkgversion=*) pkgversion=" ($optarg)"
  ;;
523
524
  --disable-docs) build_docs="no"
  ;;
525
526
  *) echo "ERROR: unknown option $opt"; show_help="yes"
  ;;
bellard authored
527
528
529
  esac
done
530
# default flags for all hosts
Paul Brook authored
531
532
533
534
CFLAGS="$CFLAGS -g -fno-strict-aliasing"
if test "$debug" = "no" ; then
  CFLAGS="$CFLAGS -O2"
fi
535
CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls"
536
LDFLAGS="$LDFLAGS -g"
Blue Swirl authored
537
538
539
540
541
542
543
544
545
546
547
548
549

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

# ---
# big/little endian test
cat > $TMPC << EOF
#include <inttypes.h>
int main(int argc, char ** argv){
800
801
        volatile uint32_t i=0x01234567;
        return (*((uint8_t*)(&i))) == 0x67;
bellard authored
802
803
804
}
EOF
805
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
bellard authored
806
807
808
809
810
811
812
813
$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
814
if test "$cpu" = "armv4b" \
aurel32 authored
815
     -o "$cpu" = "hppa" \
aurel32 authored
816
817
818
     -o "$cpu" = "m68k" \
     -o "$cpu" = "mips" \
     -o "$cpu" = "mips64" \
malc authored
819
820
     -o "$cpu" = "ppc" \
     -o "$cpu" = "ppc64" \
aurel32 authored
821
822
823
     -o "$cpu" = "s390" \
     -o "$cpu" = "sparc" \
     -o "$cpu" = "sparc64"; then
bellard authored
824
825
826
827
828
    bigendian="yes"
fi

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

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

##########################################
875
876
877
878
879
880
# xen probe

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

##########################################
bellard authored
891
892
893
894
# SDL probe

sdl_too_old=no
895
if test "$sdl" = "yes" ; then
896
897
898
899
    sdl_config="sdl-config"
    sdl=no
    sdl_static=no
bellard authored
900
901
902
903
904
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
905
    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
906
907
908
909
910
911
        _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
912
            fi
aliguori authored
913
        fi
bellard authored
914
aliguori authored
915
916
917
918
919
920
921
922
923
        # 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
924
            if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs > /dev/null 2> /dev/null; then
aliguori authored
925
926
927
928
                sdl_static=yes
            fi
        fi # static link
    fi # sdl compile test
929
else
930
931
932
    # Make sure to disable cocoa if sdl was set
    if test "$sdl" = "yes" ; then
       cocoa="no"
933
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
934
    fi
935
fi # -z $sdl
bellard authored
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
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
952
##########################################
953
954
# VNC TLS detection
if test "$vnc_tls" = "yes" ; then
955
956
957
958
959
960
961
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 \
962
           $vnc_tls_libs > /dev/null 2> /dev/null ; then
963
964
965
966
	:
    else
	vnc_tls="no"
    fi
967
968
969
fi

##########################################
970
971
972
973
974
975
976
977
978
979
980
# 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 \
981
           $vnc_sasl_libs 2> /dev/null > /dev/null ; then
982
983
984
985
986
987
988
	:
    else
	vnc_sasl="no"
    fi
fi

##########################################
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
# 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

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

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

    pa)
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
    ;;
blueswir1 authored
1075
1076
1077
1078
    oss|sdl|core|wav|dsound)
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;
malc authored
1079
    *)
malc authored
1080
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malc authored
1081
1082
1083
1084
1085
1086
1087
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
1088
1089
    esac
done
1090
balrog authored
1091
##########################################
aurel32 authored
1092
1093
1094
1095
1096
1097
1098
1099
# 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
1100
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi > /dev/null 2> /dev/null ; then
aurel32 authored
1101
1102
1103
1104
1105
	    brlapi=yes
    fi # brlapi compile test
fi # -z $brlapi

##########################################
balrog authored
1106
1107
1108
1109
# curses probe

if test "$curses" = "yes" ; then
  curses=no
1110
  ncurses=no
balrog authored
1111
1112
  cat > $TMPC << EOF
#include <curses.h>
1113
1114
1115
1116
#ifdef __OpenBSD__
#define resize_term resizeterm
#endif
int main(void) { resize_term(0, 0); return curses_version(); }
balrog authored
1117
EOF
1118
1119
1120
1121
  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
1122
1123
1124
1125
    curses=yes
  fi
fi # test "$curses"
1126
##########################################
1127
1128
1129
1130
1131
1132
1133
1134
# curl probe

if test "$curl" = "yes" ; then
  curl=no
  cat > $TMPC << EOF
#include <curl/curl.h>
int main(void) { return curl_easy_init(); }
EOF
1135
  curl_libs=`curl-config --libs 2>/dev/null`
1136
1137
1138
1139
1140
1141
 if $cc $ARCH_CFLAGS $curl_libs -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
    curl=yes
  fi
fi # test "$curl"

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

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

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

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

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

rt=no
1390
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1391
  :
1392
elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lrt > /dev/null 2> /dev/null ; then
1393
1394
1395
1396
  rt=yes
fi

if test "$rt" = "yes" ; then
1397
  CLOCKLIBS="-lrt"
1398
1399
fi
bellard authored
1400
if test "$mingw32" = "yes" ; then
1401
  if test -z "$prefix" ; then
1402
      prefix="c:\\\\Program Files\\\\Qemu"
1403
1404
1405
1406
1407
  fi
  mansuffix=""
  datasuffix=""
  docsuffix=""
  binsuffix=""
bellard authored
1408
else
1409
1410
1411
1412
1413
1414
1415
  if test -z "$prefix" ; then
      prefix="/usr/local"
  fi
  mansuffix="/share/man"
  datasuffix="/share/qemu"
  docsuffix="/share/doc/qemu"
  binsuffix="/bin"
bellard authored
1416
fi
1417
bellard authored
1418
echo "Install prefix    $prefix"
1419
1420
echo "BIOS directory    $prefix$datasuffix"
echo "binary directory  $prefix$binsuffix"
bellard authored
1421
if test "$mingw32" = "no" ; then
1422
echo "Manual directory  $prefix$mansuffix"
bellard authored
1423
echo "ELF interp prefix $interp_prefix"
bellard authored
1424
fi
1425
echo "Source path       $source_path"
bellard authored
1426
echo "C compiler        $cc"
bellard authored
1427
echo "Host C compiler   $host_cc"
1428
echo "ARCH_CFLAGS       $ARCH_CFLAGS"
bellard authored
1429
echo "make              $make"
1430
echo "install           $install"
bellard authored
1431
echo "host CPU          $cpu"
bellard authored
1432
echo "host big endian   $bigendian"
1433
echo "target list       $target_list"
1434
echo "tcg debug enabled $debug_tcg"
bellard authored
1435
echo "gprof enabled     $gprof"
1436
echo "sparse enabled    $sparse"
1437
echo "strip binaries    $strip_opt"
1438
echo "profiler          $profiler"
bellard authored
1439
echo "static build      $static"
1440
echo "-Werror enabled   $werror"
1441
1442
1443
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
1444
echo "SDL support       $sdl"
bellard authored
1445
1446
1447
if test "$sdl" != "no" ; then
    echo "SDL static link   $sdl_static"
fi
balrog authored
1448
echo "curses support    $curses"
1449
echo "curl support      $curl"
1450
echo "mingw32 support   $mingw32"
1451
1452
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
1453
echo "Mixer emulation   $mixemu"
1454
1455
1456
1457
1458
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
1459
1460
1461
1462
1463
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
1464
1465
1466
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
bellard authored
1467
echo "kqemu support     $kqemu"
1468
echo "xen support       $xen"
aurel32 authored
1469
echo "brlapi support    $brlapi"
1470
echo "Documentation     $build_docs"
1471
1472
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
1473
echo "NPTL support      $nptl"
1474
echo "GUEST_BASE        $guest_base"
1475
echo "vde support       $vde"
1476
echo "AIO support       $aio"
1477
echo "IO thread         $io_thread"
1478
echo "Install blobs     $blobs"
1479
echo -e "KVM support       $kvm"
1480
echo "fdt support       $fdt"
1481
echo "preadv support    $preadv"
1482
1483
if test $sdl_too_old = "yes"; then
1484
echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellard authored
1485
fi
1486
1487
1488
#if test "$sdl_static" = "no"; then
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
#fi
bellard authored
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
1518
1519
1520
1521
1522
1523
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
1524
case "$cpu" in
1525
  i386|x86_64|alpha|cris|hppa|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
1526
    ARCH=$cpu
aurel32 authored
1527
  ;;
1528
  armv4b|armv4l)
1529
    ARCH=arm
aurel32 authored
1530
1531
1532
1533
1534
1535
  ;;
  *)
    echo "Unsupported CPU = $cpu"
    exit 1
  ;;
esac
1536
echo "ARCH=$ARCH" >> $config_host_mak
1537
arch_name=`echo $ARCH | tr '[:lower:]' '[:upper:]'`
1538
echo "#define HOST_$arch_name 1" >> $config_host_h
1539
1540
if test "$debug_tcg" = "yes" ; then
1541
  echo "#define DEBUG_TCG 1" >> $config_host_h
1542
fi
Paul Brook authored
1543
if test "$debug" = "yes" ; then
1544
  echo "#define DEBUG_EXEC 1" >> $config_host_h
Paul Brook authored
1545
fi
1546
if test "$sparse" = "yes" ; then
1547
1548
1549
  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
1550
fi
1551
if test "$strip_opt" = "yes" ; then
1552
  echo "STRIP_OPT=-s" >> $config_host_mak
1553
fi
bellard authored
1554
if test "$bigendian" = "yes" ; then
1555
1556
  echo "WORDS_BIGENDIAN=yes" >> $config_host_mak
  echo "#define WORDS_BIGENDIAN 1" >> $config_host_h
1557
fi
1558
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_host_h
1559
if test "$mingw32" = "yes" ; then
1560
1561
  echo "CONFIG_WIN32=y" >> $config_host_mak
  echo "#define CONFIG_WIN32 1" >> $config_host_h
1562
1563
1564
1565
1566
else
  cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
1567
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1568
    echo "#define HAVE_BYTESWAP_H 1" >> $config_host_h
1569
  fi
1570
1571
1572
1573
1574
1575
  cat > $TMPC << EOF
#include <sys/endian.h>
#include <sys/types.h>
#include <machine/bswap.h>
int main(void) { return bswap32(0); }
EOF
1576
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1577
    echo "#define HAVE_MACHINE_BSWAP_H 1" >> $config_host_h
1578
  fi
1579
fi
1580
1581

if [ "$openbsd" = "yes" ] ; then
1582
  echo "#define ENOTSUP 4096" >> $config_host_h
1583
1584
fi
1585
if test "$darwin" = "yes" ; then
1586
1587
  echo "CONFIG_DARWIN=y" >> $config_host_mak
  echo "#define CONFIG_DARWIN 1" >> $config_host_h
1588
fi
malc authored
1589
1590

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

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

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

# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
2122
    DIRS="tests tests/cris slirp audio block pc-bios/optionrom"
bellard authored
2123
    FILES="Makefile tests/Makefile"
2124
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
2125
    FILES="$FILES tests/test-mmap.c"
2126
2127
2128
2129
    FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps pc-bios/video.x"
    for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
        FILES="$FILES pc-bios/`basename $bios_file`"
    done
bellard authored
2130
2131
2132
    for dir in $DIRS ; do
            mkdir -p $dir
    done
bellard authored
2133
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard authored
2134
    for f in $FILES ; do
bellard authored
2135
2136
        rm -f $f
        ln -s $source_path/$f $f
bellard authored
2137
2138
    done
fi
2139
2140
2141
2142
2143
2144
2145
2146
2147

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