Statistics
| Branch: | Revision:

root / configure @ 253d0942

History | View | Annotate | Download (60.1 kB)

1
#!/bin/sh
2
#
3
# qemu configure script (c) 2003 Fabrice Bellard
4
#
5
# set temporary file name
6
if test ! -z "$TMPDIR" ; then
7
    TMPDIR1="${TMPDIR}"
8
elif test ! -z "$TEMPDIR" ; then
9
    TMPDIR1="${TEMPDIR}"
10
else
11
    TMPDIR1="/tmp"
12
fi
13

    
14
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
17
TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
18
TMPI="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.i"
19
TMPSDLLOG="${TMPDIR1}/qemu-conf-sdl-$$-${RANDOM}.log"
20

    
21
trap "rm -f $TMPC $TMPO $TMPE $TMPS $TMPI $TMPSDLLOG; exit" 0 2 3 15
22

    
23
# default parameters
24
prefix=""
25
interp_prefix="/usr/gnemul/qemu-%M"
26
static="no"
27
cross_prefix=""
28
cc="gcc"
29
audio_drv_list=""
30
audio_card_list="ac97 es1370 sb16"
31
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus"
32
host_cc="gcc"
33
ar="ar"
34
make="make"
35
install="install"
36
strip="strip"
37

    
38
# parse CC options first
39
for opt do
40
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
41
  case "$opt" in
42
  --cross-prefix=*) cross_prefix="$optarg"
43
  ;;
44
  --cc=*) cc="$optarg"
45
  ;;
46
  esac
47
done
48

    
49
# OS specific
50
# Using uname is really, really broken.  Once we have the right set of checks
51
# we can eliminate it's usage altogether
52

    
53
cc="${cross_prefix}${cc}"
54
ar="${cross_prefix}${ar}"
55
strip="${cross_prefix}${strip}"
56

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

    
62
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
63
  : C compiler works ok
64
else
65
    echo "ERROR: \"$cc\" either does not exist or does not work"
66
    exit 1
67
fi
68

    
69
check_define() {
70
cat > $TMPC <<EOF
71
#if !defined($1)
72
#error Not defined
73
#endif
74
int main(void) { return 0; }
75
EOF
76
  $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null
77
}
78

    
79
if check_define __i386__ ; then
80
  cpu="i386"
81
elif check_define __x86_64__ ; then
82
  cpu="x86_64"
83
elif check_define __sparc__ ; then
84
  # We can't check for 64 bit (when gcc is biarch) or V8PLUSA
85
  # They must be specified using --sparc_cpu
86
  if check_define __arch64__ ; then
87
    cpu="sparc64"
88
  else
89
    cpu="sparc"
90
  fi
91
elif check_define _ARCH_PPC ; then
92
  if check_define _ARCH_PPC64 ; then
93
    cpu="ppc64"
94
  else
95
    cpu="ppc"
96
  fi
97
else
98
  cpu=`uname -m`
99
fi
100

    
101
target_list=""
102
case "$cpu" in
103
  i386|i486|i586|i686|i86pc|BePC)
104
    cpu="i386"
105
  ;;
106
  x86_64|amd64)
107
    cpu="x86_64"
108
  ;;
109
  alpha)
110
    cpu="alpha"
111
  ;;
112
  armv*b)
113
    cpu="armv4b"
114
  ;;
115
  armv*l)
116
    cpu="armv4l"
117
  ;;
118
  cris)
119
    cpu="cris"
120
  ;;
121
  parisc|parisc64)
122
    cpu="hppa"
123
  ;;
124
  ia64)
125
    cpu="ia64"
126
  ;;
127
  m68k)
128
    cpu="m68k"
129
  ;;
130
  microblaze)
131
    cpu="microblaze"
132
  ;;
133
  mips)
134
    cpu="mips"
135
  ;;
136
  mips64)
137
    cpu="mips64"
138
  ;;
139
  ppc)
140
    cpu="ppc"
141
  ;;
142
  ppc64)
143
    cpu="ppc64"
144
  ;;
145
  s390*)
146
    cpu="s390"
147
  ;;
148
  sparc|sun4[cdmuv])
149
    cpu="sparc"
150
  ;;
151
  sparc64)
152
    cpu="sparc64"
153
  ;;
154
  *)
155
    cpu="unknown"
156
  ;;
157
esac
158
gprof="no"
159
debug_tcg="no"
160
debug="no"
161
sparse="no"
162
strip_opt="yes"
163
bigendian="no"
164
mingw32="no"
165
EXESUF=""
166
slirp="yes"
167
vde="yes"
168
fmod_lib=""
169
fmod_inc=""
170
oss_lib=""
171
vnc_tls="yes"
172
vnc_sasl="yes"
173
bsd="no"
174
linux="no"
175
solaris="no"
176
kqemu="no"
177
profiler="no"
178
cocoa="no"
179
softmmu="yes"
180
linux_user="no"
181
darwin_user="no"
182
bsd_user="no"
183
build_docs="yes"
184
uname_release=""
185
curses="yes"
186
curl="yes"
187
pthread="yes"
188
aio="yes"
189
io_thread="no"
190
nptl="yes"
191
mixemu="no"
192
bluez="yes"
193
kvm="no"
194
kerneldir=""
195
aix="no"
196
blobs="yes"
197
fdt="yes"
198
sdl="yes"
199
sdl_x11="no"
200
xen="yes"
201
pkgversion=""
202

    
203
# OS specific
204
if check_define __linux__ ; then
205
  targetos="Linux"
206
elif check_define _WIN32 ; then
207
  targetos='MINGW32'
208
elif check_define __OpenBSD__ ; then
209
  targetos='OpenBSD'
210
elif check_define __sun__ ; then
211
  targetos='SunOS'
212
else
213
  targetos=`uname -s`
214
fi
215
case $targetos in
216
CYGWIN*)
217
mingw32="yes"
218
OS_CFLAGS="-mno-cygwin"
219
if [ "$cpu" = "i386" ] ; then
220
    kqemu="yes"
221
fi
222
audio_possible_drivers="sdl"
223
;;
224
MINGW32*)
225
mingw32="yes"
226
if [ "$cpu" = "i386" ] ; then
227
    kqemu="yes"
228
fi
229
audio_possible_drivers="dsound sdl fmod"
230
;;
231
GNU/kFreeBSD)
232
audio_drv_list="oss"
233
audio_possible_drivers="oss sdl esd pa"
234
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
235
    kqemu="yes"
236
fi
237
;;
238
FreeBSD)
239
bsd="yes"
240
audio_drv_list="oss"
241
audio_possible_drivers="oss sdl esd pa"
242
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
243
    kqemu="yes"
244
fi
245
;;
246
DragonFly)
247
bsd="yes"
248
audio_drv_list="oss"
249
audio_possible_drivers="oss sdl esd pa"
250
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
251
    kqemu="yes"
252
fi
253
aio="no"
254
;;
255
NetBSD)
256
bsd="yes"
257
audio_drv_list="oss"
258
audio_possible_drivers="oss sdl esd"
259
oss_lib="-lossaudio"
260
;;
261
OpenBSD)
262
bsd="yes"
263
openbsd="yes"
264
audio_drv_list="oss"
265
audio_possible_drivers="oss sdl esd"
266
oss_lib="-lossaudio"
267
;;
268
Darwin)
269
bsd="yes"
270
darwin="yes"
271
# 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
272
if [ "$cpu" = "i386" ] ; then
273
    is_x86_64=`sysctl -n hw.optional.x86_64`
274
    [ "$is_x86_64" = "1" ] && cpu=x86_64
275
fi
276
if [ "$cpu" = "x86_64" ] ; then
277
    OS_CFLAGS="-arch x86_64"
278
    LDFLAGS="-arch x86_64"
279
else
280
    OS_CFLAGS="-mdynamic-no-pic"
281
fi
282
darwin_user="yes"
283
cocoa="yes"
284
audio_drv_list="coreaudio"
285
audio_possible_drivers="coreaudio sdl fmod"
286
OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
287
;;
288
SunOS)
289
    solaris="yes"
290
    make="gmake"
291
    install="ginstall"
292
    needs_libsunmath="no"
293
    solarisrev=`uname -r | cut -f2 -d.`
294
    # have to select again, because `uname -m` returns i86pc
295
    # even on an x86_64 box.
296
    solariscpu=`isainfo -k`
297
    if test "${solariscpu}" = "amd64" ; then
298
        cpu="x86_64"
299
    fi
300
    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
301
        if test "$solarisrev" -le 9 ; then
302
            if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
303
                needs_libsunmath="yes"
304
            else
305
                echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
306
                echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
307
                echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
308
                echo "Studio 11 can be downloaded from www.sun.com."
309
                exit 1
310
            fi
311
        fi
312
        if test "$solarisrev" -ge 9 ; then
313
            kqemu="yes"
314
        fi
315
    fi
316
    if test -f /usr/include/sys/soundcard.h ; then
317
        audio_drv_list="oss"
318
    fi
319
    audio_possible_drivers="oss sdl"
320
    OS_CFLAGS=-std=gnu99
321
;;
322
AIX)
323
aix="yes"
324
make="gmake"
325
;;
326
*)
327
audio_drv_list="oss"
328
audio_possible_drivers="oss alsa sdl esd pa"
329
linux="yes"
330
linux_user="yes"
331
usb="linux"
332
kvm="yes"
333
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
334
    kqemu="yes"
335
    audio_possible_drivers="$audio_possible_drivers fmod"
336
fi
337
;;
338
esac
339

    
340
if [ "$bsd" = "yes" ] ; then
341
  if [ "$darwin" != "yes" ] ; then
342
    make="gmake"
343
    usb="bsd"
344
  fi
345
  bsd_user="yes"
346
fi
347

    
348
# find source path
349
source_path=`dirname "$0"`
350
source_path_used="no"
351
workdir=`pwd`
352
if [ -z "$source_path" ]; then
353
    source_path=$workdir
354
else
355
    source_path=`cd "$source_path"; pwd`
356
fi
357
[ -f "$workdir/vl.c" ] || source_path_used="yes"
358

    
359
werror=""
360

    
361
for opt do
362
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
363
  case "$opt" in
364
  --help|-h) show_help=yes
365
  ;;
366
  --prefix=*) prefix="$optarg"
367
  ;;
368
  --interp-prefix=*) interp_prefix="$optarg"
369
  ;;
370
  --source-path=*) source_path="$optarg"
371
  source_path_used="yes"
372
  ;;
373
  --cross-prefix=*)
374
  ;;
375
  --cc=*)
376
  ;;
377
  --host-cc=*) host_cc="$optarg"
378
  ;;
379
  --make=*) make="$optarg"
380
  ;;
381
  --install=*) install="$optarg"
382
  ;;
383
  --extra-cflags=*) CFLAGS="$optarg"
384
  ;;
385
  --extra-ldflags=*) LDFLAGS="$optarg"
386
  ;;
387
  --cpu=*) cpu="$optarg"
388
  ;;
389
  --target-list=*) target_list="$optarg"
390
  ;;
391
  --enable-gprof) gprof="yes"
392
  ;;
393
  --static) static="yes"
394
  ;;
395
  --disable-sdl) sdl="no"
396
  ;;
397
  --fmod-lib=*) fmod_lib="$optarg"
398
  ;;
399
  --fmod-inc=*) fmod_inc="$optarg"
400
  ;;
401
  --oss-lib=*) oss_lib="$optarg"
402
  ;;
403
  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
404
  ;;
405
  --audio-drv-list=*) audio_drv_list="$optarg"
406
  ;;
407
  --enable-debug-tcg) debug_tcg="yes"
408
  ;;
409
  --disable-debug-tcg) debug_tcg="no"
410
  ;;
411
  --enable-debug)
412
      # Enable debugging options that aren't excessively noisy
413
      debug_tcg="yes"
414
      debug="yes"
415
      strip_opt="no"
416
  ;;
417
  --enable-sparse) sparse="yes"
418
  ;;
419
  --disable-sparse) sparse="no"
420
  ;;
421
  --disable-strip) strip_opt="no"
422
  ;;
423
  --disable-vnc-tls) vnc_tls="no"
424
  ;;
425
  --disable-vnc-sasl) vnc_sasl="no"
426
  ;;
427
  --disable-slirp) slirp="no"
428
  ;;
429
  --disable-vde) vde="no"
430
  ;;
431
  --disable-kqemu) kqemu="no"
432
  ;;
433
  --disable-xen) xen="no"
434
  ;;
435
  --disable-brlapi) brlapi="no"
436
  ;;
437
  --disable-bluez) bluez="no"
438
  ;;
439
  --disable-kvm) kvm="no"
440
  ;;
441
  --enable-profiler) profiler="yes"
442
  ;;
443
  --enable-cocoa)
444
      cocoa="yes" ;
445
      sdl="no" ;
446
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
447
  ;;
448
  --disable-system) softmmu="no"
449
  ;;
450
  --enable-system) softmmu="yes"
451
  ;;
452
  --disable-linux-user) linux_user="no"
453
  ;;
454
  --enable-linux-user) linux_user="yes"
455
  ;;
456
  --disable-darwin-user) darwin_user="no"
457
  ;;
458
  --enable-darwin-user) darwin_user="yes"
459
  ;;
460
  --disable-bsd-user) bsd_user="no"
461
  ;;
462
  --enable-bsd-user) bsd_user="yes"
463
  ;;
464
  --enable-uname-release=*) uname_release="$optarg"
465
  ;;
466
  --sparc_cpu=*)
467
      sparc_cpu="$optarg"
468
      case $sparc_cpu in
469
        v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
470
                 target_cpu="sparc"; cpu="sparc" ;;
471
        v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
472
                 target_cpu="sparc"; cpu="sparc" ;;
473
        v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
474
                 target_cpu="sparc64"; cpu="sparc64" ;;
475
        *)     echo "undefined SPARC architecture. Exiting";exit 1;;
476
      esac
477
  ;;
478
  --enable-werror) werror="yes"
479
  ;;
480
  --disable-werror) werror="no"
481
  ;;
482
  --disable-curses) curses="no"
483
  ;;
484
  --disable-curl) curl="no"
485
  ;;
486
  --disable-nptl) nptl="no"
487
  ;;
488
  --enable-mixemu) mixemu="yes"
489
  ;;
490
  --disable-pthread) pthread="no"
491
  ;;
492
  --disable-aio) aio="no"
493
  ;;
494
  --enable-io-thread) io_thread="yes"
495
  ;;
496
  --disable-blobs) blobs="no"
497
  ;;
498
  --kerneldir=*) kerneldir="$optarg"
499
  ;;
500
  --with-pkgversion=*) pkgversion=" ($optarg)"
501
  ;;
502
  --disable-docs) build_docs="no"
503
  ;;
504
  *) echo "ERROR: unknown option $opt"; show_help="yes"
505
  ;;
506
  esac
507
done
508

    
509
# default flags for all hosts
510
CFLAGS="$CFLAGS -g -fno-strict-aliasing"
511
if test "$debug" = "no" ; then
512
  CFLAGS="$CFLAGS -O2"
513
fi
514
CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls"
515
LDFLAGS="$LDFLAGS -g"
516

    
517
# Consult white-list to determine whether to enable werror
518
# by default.  Only enable by default for git builds
519
if test -z "$werror" ; then
520
    z_version=`cut -f3 -d. $source_path/VERSION`
521
    if test "$z_version" = "50" -a \
522
        "$linux" = "yes" ; then
523
        werror="yes"
524
    else
525
        werror="no"
526
    fi
527
fi
528

    
529
if test "$werror" = "yes" ; then
530
    CFLAGS="$CFLAGS -Werror"
531
fi
532

    
533
if test "$solaris" = "no" ; then
534
    if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
535
        LDFLAGS="$LDFLAGS -Wl,--warn-common"
536
    fi
537
fi
538

    
539
#
540
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
541
# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
542
#
543
case "$cpu" in
544
    sparc) if test -z "$sparc_cpu" ; then
545
               ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
546
               ARCH_LDFLAGS="-m32"
547
           else
548
               ARCH_CFLAGS="${SP_CFLAGS}"
549
               ARCH_LDFLAGS="${SP_LDFLAGS}"
550
           fi
551
           ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g2 -ffixed-g3"
552
           if test "$solaris" = "no" ; then
553
               ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g1 -ffixed-g6"
554
           fi
555
           ;;
556
    sparc64) if test -z "$sparc_cpu" ; then
557
               ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
558
               ARCH_LDFLAGS="-m64"
559
           else
560
               ARCH_CFLAGS="${SP_CFLAGS}"
561
               ARCH_LDFLAGS="${SP_LDFLAGS}"
562
           fi
563
           if test "$solaris" = "no" ; then
564
               ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g5 -ffixed-g6 -ffixed-g7"
565
           else
566
               ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g1 -ffixed-g5 -ffixed-g6 -ffixed-g7"
567
           fi
568
           ;;
569
    s390)
570
           ARCH_CFLAGS="-march=z900"
571
           ;;
572
    i386)
573
           ARCH_CFLAGS="-m32"
574
           ARCH_LDFLAGS="-m32"
575
           ;;
576
    x86_64)
577
           ARCH_CFLAGS="-m64"
578
           ARCH_LDFLAGS="-m64"
579
           ;;
580
esac
581

    
582
if test x"$show_help" = x"yes" ; then
583
cat << EOF
584

    
585
Usage: configure [options]
586
Options: [defaults in brackets after descriptions]
587

    
588
EOF
589
echo "Standard options:"
590
echo "  --help                   print this message"
591
echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
592
echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
593
echo "                           use %M for cpu name [$interp_prefix]"
594
echo "  --target-list=LIST       set target list [$target_list]"
595
echo ""
596
echo "kqemu kernel acceleration support:"
597
echo "  --disable-kqemu          disable kqemu support"
598
echo ""
599
echo "Advanced options (experts only):"
600
echo "  --source-path=PATH       path of source code [$source_path]"
601
echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
602
echo "  --cc=CC                  use C compiler CC [$cc]"
603
echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
604
echo "  --extra-cflags=CFLAGS    add C compiler flags CFLAGS"
605
echo "  --extra-ldflags=LDFLAGS  add linker flags LDFLAGS"
606
echo "  --make=MAKE              use specified make [$make]"
607
echo "  --install=INSTALL        use specified install [$install]"
608
echo "  --static                 enable static build [$static]"
609
echo "  --enable-debug-tcg       enable TCG debugging"
610
echo "  --disable-debug-tcg      disable TCG debugging (default)"
611
echo "  --enable-debug           enable common debug build options"
612
echo "  --enable-sparse          enable sparse checker"
613
echo "  --disable-sparse         disable sparse checker (default)"
614
echo "  --disable-strip          disable stripping binaries"
615
echo "  --disable-werror         disable compilation abort on warning"
616
echo "  --disable-sdl            disable SDL"
617
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
618
echo "  --audio-drv-list=LIST    set audio drivers list:"
619
echo "                           Available drivers: $audio_possible_drivers"
620
echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
621
echo "                           Available cards: $audio_possible_cards"
622
echo "  --enable-mixemu          enable mixer emulation"
623
echo "  --disable-xen            disable xen backend driver support"
624
echo "  --disable-brlapi         disable BrlAPI"
625
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
626
echo "  --disable-vnc-sasl       disable SASL encryption for VNC server"
627
echo "  --disable-curses         disable curses output"
628
echo "  --disable-curl           disable curl connectivity"
629
echo "  --disable-bluez          disable bluez stack connectivity"
630
echo "  --disable-kvm            disable KVM acceleration support"
631
echo "  --disable-nptl           disable usermode NPTL support"
632
echo "  --enable-system          enable all system emulation targets"
633
echo "  --disable-system         disable all system emulation targets"
634
echo "  --enable-linux-user      enable all linux usermode emulation targets"
635
echo "  --disable-linux-user     disable all linux usermode emulation targets"
636
echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
637
echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
638
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
639
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
640
echo "  --fmod-lib               path to FMOD library"
641
echo "  --fmod-inc               path to FMOD includes"
642
echo "  --oss-lib                path to OSS library"
643
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
644
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
645
echo "  --disable-vde            disable support for vde network"
646
echo "  --disable-pthread        disable pthread support"
647
echo "  --disable-aio            disable AIO support"
648
echo "  --enable-io-thread       enable IO thread"
649
echo "  --disable-blobs          disable installing provided firmware blobs"
650
echo "  --kerneldir=PATH         look for kernel includes in PATH"
651
echo ""
652
echo "NOTE: The object files are built at the place where configure is launched"
653
exit 1
654
fi
655

    
656
if test "$mingw32" = "yes" ; then
657
    linux="no"
658
    EXESUF=".exe"
659
    oss="no"
660
    linux_user="no"
661
    bsd_user="no"
662
    OS_CFLAGS="$OS_CFLAGS -DWIN32_LEAN_AND_MEAN -DWINVER=0x501"
663
fi
664

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

    
669
#
670
# Solaris specific configure tool chain decisions
671
#
672
if test "$solaris" = "yes" ; then
673
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
674
  if test -z "$solinst" ; then
675
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
676
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
677
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
678
    exit 1
679
  fi
680
  if test "$solinst" = "/usr/sbin/install" ; then
681
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
682
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
683
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
684
    exit 1
685
  fi
686
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
687
  if test -z "$sol_ar" ; then
688
    echo "Error: No path includes ar"
689
    if test -f /usr/ccs/bin/ar ; then
690
      echo "Add /usr/ccs/bin to your path and rerun configure"
691
    fi
692
    exit 1
693
  fi
694
fi
695

    
696

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

    
764
if test -z "$cross_prefix" ; then
765

    
766
# ---
767
# big/little endian test
768
cat > $TMPC << EOF
769
#include <inttypes.h>
770
int main(int argc, char ** argv){
771
        volatile uint32_t i=0x01234567;
772
        return (*((uint8_t*)(&i))) == 0x67;
773
}
774
EOF
775

    
776
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
777
$TMPE && bigendian="yes"
778
else
779
echo big/little test failed
780
fi
781

    
782
else
783

    
784
# if cross compiling, cannot launch a program, so make a static guess
785
if test "$cpu" = "armv4b" \
786
     -o "$cpu" = "hppa" \
787
     -o "$cpu" = "m68k" \
788
     -o "$cpu" = "mips" \
789
     -o "$cpu" = "mips64" \
790
     -o "$cpu" = "ppc" \
791
     -o "$cpu" = "ppc64" \
792
     -o "$cpu" = "s390" \
793
     -o "$cpu" = "sparc" \
794
     -o "$cpu" = "sparc64"; then
795
    bigendian="yes"
796
fi
797

    
798
fi
799

    
800
# host long bits test
801
hostlongbits="32"
802
if test "$cpu" = "x86_64" \
803
     -o "$cpu" = "alpha" \
804
     -o "$cpu" = "ia64" \
805
     -o "$cpu" = "sparc64" \
806
     -o "$cpu" = "ppc64"; then
807
    hostlongbits="64"
808
fi
809

    
810
# Check host NPTL support
811
cat > $TMPC <<EOF
812
#include <sched.h>
813
#include <linux/futex.h>
814
void foo()
815
{
816
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
817
#error bork
818
#endif
819
}
820
EOF
821

    
822
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
823
  :
824
else
825
   nptl="no"
826
fi
827

    
828
##########################################
829
# zlib check
830

    
831
cat > $TMPC << EOF
832
#include <zlib.h>
833
int main(void) { zlibVersion(); return 0; }
834
EOF
835
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz > /dev/null 2> /dev/null ; then
836
    :
837
else
838
    echo
839
    echo "Error: zlib check failed"
840
    echo "Make sure to have the zlib libs and headers installed."
841
    echo
842
    exit 1
843
fi
844

    
845
##########################################
846
# xen probe
847

    
848
if test "$xen" = "yes" ; then
849
cat > $TMPC <<EOF
850
#include <xenctrl.h>
851
#include <xs.h>
852
int main(void) { xs_daemon_open; xc_interface_open; }
853
EOF
854
   if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC -lxenstore -lxenctrl 2> /dev/null > /dev/null ; then
855
      :
856
   else
857
      xen="no"
858
   fi
859
fi
860

    
861
##########################################
862
# SDL probe
863

    
864
sdl_too_old=no
865

    
866
if test "$sdl" = "yes" ; then
867
    sdl_config="sdl-config"
868
    sdl=no
869
    sdl_static=no
870

    
871
cat > $TMPC << EOF
872
#include <SDL.h>
873
#undef main /* We don't want SDL to override our main() */
874
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
875
EOF
876
    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
877
        _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
878
        if test "$_sdlversion" -lt 121 ; then
879
            sdl_too_old=yes
880
        else
881
            if test "$cocoa" = "no" ; then
882
                sdl=yes
883
            fi
884
        fi
885

    
886
        # static link with sdl ?
887
        if test "$sdl" = "yes" ; then
888
            aa="no"
889
            `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
890
            sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
891
            if [ "$aa" = "yes" ] ; then
892
                sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
893
            fi
894

    
895
            if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs > /dev/null 2> /dev/null; then
896
                sdl_static=yes
897
            fi
898
        fi # static link
899
    fi # sdl compile test
900
else
901
    # Make sure to disable cocoa if sdl was set
902
    if test "$sdl" = "yes" ; then
903
       cocoa="no"
904
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
905
    fi
906
fi # -z $sdl
907

    
908
if test "$sdl" = "yes" ; then
909
cat > $TMPC <<EOF
910
#include <SDL.h>
911
#if defined(SDL_VIDEO_DRIVER_X11)
912
#include <X11/XKBlib.h>
913
#else
914
#error No x11 support
915
#endif
916
int main(void) { return 0; }
917
EOF
918
    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
919
	sdl_x11="yes"
920
    fi
921
fi
922

    
923
##########################################
924
# VNC TLS detection
925
if test "$vnc_tls" = "yes" ; then
926
cat > $TMPC <<EOF
927
#include <gnutls/gnutls.h>
928
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
929
EOF
930
    vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
931
    vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
932
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
933
           $vnc_tls_libs > /dev/null 2> /dev/null ; then
934
	:
935
    else
936
	vnc_tls="no"
937
    fi
938
fi
939

    
940
##########################################
941
# VNC SASL detection
942
if test "$vnc_sasl" = "yes" ; then
943
cat > $TMPC <<EOF
944
#include <sasl/sasl.h>
945
#include <stdio.h>
946
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
947
EOF
948
    # Assuming Cyrus-SASL installed in /usr prefix
949
    vnc_sasl_cflags=""
950
    vnc_sasl_libs="-lsasl2"
951
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_sasl_cflags $TMPC \
952
           $vnc_sasl_libs 2> /dev/null > /dev/null ; then
953
	:
954
    else
955
	vnc_sasl="no"
956
    fi
957
fi
958

    
959
##########################################
960
# fnmatch() probe, used for ACL routines
961
fnmatch="no"
962
cat > $TMPC << EOF
963
#include <fnmatch.h>
964
int main(void)
965
{
966
    fnmatch("foo", "foo", 0);
967
    return 0;
968
}
969
EOF
970
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
971
   fnmatch="yes"
972
fi
973

    
974
##########################################
975
# vde libraries probe
976
if test "$vde" = "yes" ; then
977
  cat > $TMPC << EOF
978
#include <libvdeplug.h>
979
int main(void)
980
{
981
    struct vde_open_args a = {0, 0, 0};
982
    vde_open("", "", &a);
983
    return 0;
984
}
985
EOF
986
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug > /dev/null 2> /dev/null ; then
987
        :
988
    else
989
        vde="no"
990
    fi
991
fi
992

    
993
##########################################
994
# Sound support libraries probe
995

    
996
audio_drv_probe()
997
{
998
    drv=$1
999
    hdr=$2
1000
    lib=$3
1001
    exp=$4
1002
    cfl=$5
1003
        cat > $TMPC << EOF
1004
#include <$hdr>
1005
int main(void) { $exp }
1006
EOF
1007
    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib > /dev/null 2> /dev/null ; then
1008
        :
1009
    else
1010
        echo
1011
        echo "Error: $drv check failed"
1012
        echo "Make sure to have the $drv libs and headers installed."
1013
        echo
1014
        exit 1
1015
    fi
1016
}
1017

    
1018
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1019
for drv in $audio_drv_list; do
1020
    case $drv in
1021
    alsa)
1022
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
1023
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
1024
    ;;
1025

    
1026
    fmod)
1027
    if test -z $fmod_lib || test -z $fmod_inc; then
1028
        echo
1029
        echo "Error: You must specify path to FMOD library and headers"
1030
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
1031
        echo
1032
        exit 1
1033
    fi
1034
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
1035
    ;;
1036

    
1037
    esd)
1038
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1039
    ;;
1040

    
1041
    pa)
1042
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
1043
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1044
    ;;
1045

    
1046
    oss|sdl|core|wav|dsound)
1047
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
1048
    ;;
1049

    
1050
    *)
1051
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
1052
        echo
1053
        echo "Error: Unknown driver '$drv' selected"
1054
        echo "Possible drivers are: $audio_possible_drivers"
1055
        echo
1056
        exit 1
1057
    }
1058
    ;;
1059
    esac
1060
done
1061

    
1062
##########################################
1063
# BrlAPI probe
1064

    
1065
if test -z "$brlapi" ; then
1066
    brlapi=no
1067
cat > $TMPC << EOF
1068
#include <brlapi.h>
1069
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
1070
EOF
1071
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi > /dev/null 2> /dev/null ; then
1072
	    brlapi=yes
1073
    fi # brlapi compile test
1074
fi # -z $brlapi
1075

    
1076
##########################################
1077
# curses probe
1078

    
1079
if test "$curses" = "yes" ; then
1080
  curses=no
1081
  ncurses=no
1082
  cat > $TMPC << EOF
1083
#include <curses.h>
1084
#ifdef __OpenBSD__
1085
#define resize_term resizeterm
1086
#endif
1087
int main(void) { resize_term(0, 0); return curses_version(); }
1088
EOF
1089
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lncurses > /dev/null 2> /dev/null ; then
1090
    curses=yes
1091
    ncurses=yes
1092
  elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses > /dev/null 2> /dev/null ; then
1093
    curses=yes
1094
  fi
1095
fi # test "$curses"
1096

    
1097
##########################################
1098
# curl probe
1099

    
1100
if test "$curl" = "yes" ; then
1101
  curl=no
1102
  cat > $TMPC << EOF
1103
#include <curl/curl.h>
1104
int main(void) { return curl_easy_init(); }
1105
EOF
1106
  curl_libs=`curl-config --libs 2>/dev/null`
1107
 if $cc $ARCH_CFLAGS $curl_libs -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1108
    curl=yes
1109
  fi
1110
fi # test "$curl"
1111

    
1112
##########################################
1113
# bluez support probe
1114
if test "$bluez" = "yes" ; then
1115
  `pkg-config bluez 2> /dev/null` || bluez="no"
1116
fi
1117
if test "$bluez" = "yes" ; then
1118
  cat > $TMPC << EOF
1119
#include <bluetooth/bluetooth.h>
1120
int main(void) { return bt_error(0); }
1121
EOF
1122
  bluez_cflags=`pkg-config --cflags bluez 2> /dev/null`
1123
  bluez_libs=`pkg-config --libs bluez 2> /dev/null`
1124
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
1125
      $bluez_libs > /dev/null 2> /dev/null ; then
1126
    :
1127
  else
1128
    bluez="no"
1129
  fi
1130
fi
1131

    
1132
##########################################
1133
# kvm probe
1134
if test "$kvm" = "yes" ; then
1135
    cat > $TMPC <<EOF
1136
#include <linux/kvm.h>
1137
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
1138
#error Invalid KVM version
1139
#endif
1140
#if !defined(KVM_CAP_USER_MEMORY)
1141
#error Missing KVM capability KVM_CAP_USER_MEMORY
1142
#endif
1143
#if !defined(KVM_CAP_SET_TSS_ADDR)
1144
#error Missing KVM capability KVM_CAP_SET_TSS_ADDR
1145
#endif
1146
#if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
1147
#error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS
1148
#endif
1149
int main(void) { return 0; }
1150
EOF
1151
  if test "$kerneldir" != "" ; then
1152
      kvm_cflags=-I"$kerneldir"/include
1153
      if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
1154
         -a -d "$kerneldir/arch/x86/include" ; then
1155
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
1156
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
1157
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
1158
        elif test -d "$kerneldir/arch/$cpu/include" ; then
1159
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
1160
      fi
1161
  else
1162
      kvm_cflags=""
1163
  fi
1164
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
1165
      > /dev/null 2>/dev/null ; then
1166
    :
1167
  else
1168
    kvm="no";
1169
    if [ -x "`which awk 2>/dev/null`" ] && \
1170
       [ -x "`which grep 2>/dev/null`" ]; then
1171
      kvmerr=`LANG=C $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC 2>&1 \
1172
	| grep "error: " \
1173
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
1174
      if test "$kvmerr" != "" ; then
1175
        kvm="no - (${kvmerr})\n\
1176
    NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
1177
recent kvm-kmod from http://sourceforge.net/projects/kvm."
1178
      fi
1179
    fi
1180
  fi
1181
fi
1182

    
1183
##########################################
1184
# pthread probe
1185
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1186
PTHREADLIBS=""
1187

    
1188
if test "$pthread" = yes; then
1189
  pthread=no
1190
cat > $TMPC << EOF
1191
#include <pthread.h>
1192
int main(void) { pthread_create(0,0,0,0); return 0; }
1193
EOF
1194
  for pthread_lib in $PTHREADLIBS_LIST; do
1195
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC $pthread_lib 2> /dev/null > /dev/null ; then
1196
      pthread=yes
1197
      PTHREADLIBS="$pthread_lib"
1198
      break
1199
    fi
1200
  done
1201
fi
1202

    
1203
if test "$pthread" = no; then
1204
   aio=no
1205
   io_thread=no
1206
fi
1207

    
1208
##########################################
1209
# iovec probe
1210
cat > $TMPC <<EOF
1211
#include <sys/types.h>
1212
#include <sys/uio.h>
1213
#include <unistd.h>
1214
int main(void) { struct iovec iov; return 0; }
1215
EOF
1216
iovec=no
1217
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1218
  iovec=yes
1219
fi
1220

    
1221
##########################################
1222
# preadv probe
1223
cat > $TMPC <<EOF
1224
#include <sys/types.h>
1225
#include <sys/uio.h>
1226
#include <unistd.h>
1227
int main(void) { preadv; }
1228
EOF
1229
preadv=no
1230
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1231
  preadv=yes
1232
fi
1233

    
1234
##########################################
1235
# fdt probe
1236
if test "$fdt" = "yes" ; then
1237
    fdt=no
1238
    cat > $TMPC << EOF
1239
int main(void) { return 0; }
1240
EOF
1241
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lfdt 2> /dev/null > /dev/null ; then
1242
    fdt=yes
1243
  fi
1244
fi
1245

    
1246
#
1247
# Check for xxxat() functions when we are building linux-user
1248
# emulator.  This is done because older glibc versions don't
1249
# have syscall stubs for these implemented.
1250
#
1251
atfile=no
1252
if [ "$linux_user" = "yes" ] ; then
1253
  cat > $TMPC << EOF
1254
#define _ATFILE_SOURCE
1255
#include <sys/types.h>
1256
#include <fcntl.h>
1257
#include <unistd.h>
1258

    
1259
int
1260
main(void)
1261
{
1262
	/* try to unlink nonexisting file */
1263
	return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
1264
}
1265
EOF
1266
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null > /dev/null ; then
1267
    atfile=yes
1268
  fi
1269
fi
1270

    
1271
# Check for inotify functions when we are building linux-user
1272
# emulator.  This is done because older glibc versions don't
1273
# have syscall stubs for these implemented.  In that case we
1274
# don't provide them even if kernel supports them.
1275
#
1276
inotify=no
1277
if [ "$linux_user" = "yes" ] ; then
1278
  cat > $TMPC << EOF
1279
#include <sys/inotify.h>
1280

    
1281
int
1282
main(void)
1283
{
1284
	/* try to start inotify */
1285
	return inotify_init();
1286
}
1287
EOF
1288
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null > /dev/null ; then
1289
    inotify=yes
1290
  fi
1291
fi
1292

    
1293
# check if utimensat and futimens are supported
1294
utimens=no
1295
cat > $TMPC << EOF
1296
#define _ATFILE_SOURCE
1297
#define _GNU_SOURCE
1298
#include <stddef.h>
1299
#include <fcntl.h>
1300

    
1301
int main(void)
1302
{
1303
    utimensat(AT_FDCWD, "foo", NULL, 0);
1304
    futimens(0, NULL);
1305
    return 0;
1306
}
1307
EOF
1308
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1309
  utimens=yes
1310
fi
1311

    
1312
# check if pipe2 is there
1313
pipe2=no
1314
cat > $TMPC << EOF
1315
#define _GNU_SOURCE
1316
#include <unistd.h>
1317
#include <fcntl.h>
1318

    
1319
int main(void)
1320
{
1321
    int pipefd[2];
1322
    pipe2(pipefd, O_CLOEXEC);
1323
    return 0;
1324
}
1325
EOF
1326
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1327
  pipe2=yes
1328
fi
1329

    
1330
# check if tee/splice is there. vmsplice was added same time.
1331
splice=no
1332
cat > $TMPC << EOF
1333
#define _GNU_SOURCE
1334
#include <unistd.h>
1335
#include <fcntl.h>
1336
#include <limits.h>
1337

    
1338
int main(void)
1339
{
1340
    int len, fd;
1341
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
1342
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
1343
    return 0;
1344
}
1345
EOF
1346
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1347
  splice=yes
1348
fi
1349

    
1350
# Check if tools are available to build documentation.
1351
if test "$build_docs" = "yes" -a \( ! -x "`which texi2html 2>/dev/null`" -o ! -x "`which pod2man 2>/dev/null`" \) ; then
1352
  build_docs="no"
1353
fi
1354

    
1355
##########################################
1356
# Do we need librt
1357
CLOCKLIBS=""
1358
cat > $TMPC <<EOF
1359
#include <signal.h>
1360
#include <time.h>
1361
int main(void) { clockid_t id; return clock_gettime(id, NULL); }
1362
EOF
1363

    
1364
rt=no
1365
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1366
  :
1367
elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lrt > /dev/null 2> /dev/null ; then
1368
  rt=yes
1369
fi
1370

    
1371
if test "$rt" = "yes" ; then
1372
  CLOCKLIBS="-lrt"
1373
fi
1374

    
1375
if test "$mingw32" = "yes" ; then
1376
  if test -z "$prefix" ; then
1377
      prefix="c:\\\\Program Files\\\\Qemu"
1378
  fi
1379
  mansuffix=""
1380
  datasuffix=""
1381
  docsuffix=""
1382
  binsuffix=""
1383
else
1384
  if test -z "$prefix" ; then
1385
      prefix="/usr/local"
1386
  fi
1387
  mansuffix="/share/man"
1388
  datasuffix="/share/qemu"
1389
  docsuffix="/share/doc/qemu"
1390
  binsuffix="/bin"
1391
fi
1392

    
1393
echo "Install prefix    $prefix"
1394
echo "BIOS directory    $prefix$datasuffix"
1395
echo "binary directory  $prefix$binsuffix"
1396
if test "$mingw32" = "no" ; then
1397
echo "Manual directory  $prefix$mansuffix"
1398
echo "ELF interp prefix $interp_prefix"
1399
fi
1400
echo "Source path       $source_path"
1401
echo "C compiler        $cc"
1402
echo "Host C compiler   $host_cc"
1403
echo "ARCH_CFLAGS       $ARCH_CFLAGS"
1404
echo "make              $make"
1405
echo "install           $install"
1406
echo "host CPU          $cpu"
1407
echo "host big endian   $bigendian"
1408
echo "target list       $target_list"
1409
echo "tcg debug enabled $debug_tcg"
1410
echo "gprof enabled     $gprof"
1411
echo "sparse enabled    $sparse"
1412
echo "strip binaries    $strip_opt"
1413
echo "profiler          $profiler"
1414
echo "static build      $static"
1415
echo "-Werror enabled   $werror"
1416
if test "$darwin" = "yes" ; then
1417
    echo "Cocoa support     $cocoa"
1418
fi
1419
echo "SDL support       $sdl"
1420
if test "$sdl" != "no" ; then
1421
    echo "SDL static link   $sdl_static"
1422
fi
1423
echo "curses support    $curses"
1424
echo "curl support      $curl"
1425
echo "mingw32 support   $mingw32"
1426
echo "Audio drivers     $audio_drv_list"
1427
echo "Extra audio cards $audio_card_list"
1428
echo "Mixer emulation   $mixemu"
1429
echo "VNC TLS support   $vnc_tls"
1430
if test "$vnc_tls" = "yes" ; then
1431
    echo "    TLS CFLAGS    $vnc_tls_cflags"
1432
    echo "    TLS LIBS      $vnc_tls_libs"
1433
fi
1434
echo "VNC SASL support  $vnc_sasl"
1435
if test "$vnc_sasl" = "yes" ; then
1436
    echo "    SASL CFLAGS    $vnc_sasl_cflags"
1437
    echo "    SASL LIBS      $vnc_sasl_libs"
1438
fi
1439
if test -n "$sparc_cpu"; then
1440
    echo "Target Sparc Arch $sparc_cpu"
1441
fi
1442
echo "kqemu support     $kqemu"
1443
echo "xen support       $xen"
1444
echo "brlapi support    $brlapi"
1445
echo "Documentation     $build_docs"
1446
[ ! -z "$uname_release" ] && \
1447
echo "uname -r          $uname_release"
1448
echo "NPTL support      $nptl"
1449
echo "vde support       $vde"
1450
echo "AIO support       $aio"
1451
echo "IO thread         $io_thread"
1452
echo "Install blobs     $blobs"
1453
echo -e "KVM support       $kvm"
1454
echo "fdt support       $fdt"
1455
echo "preadv support    $preadv"
1456

    
1457
if test $sdl_too_old = "yes"; then
1458
echo "-> Your SDL version is too old - please upgrade to have SDL support"
1459
fi
1460
#if test "$sdl_static" = "no"; then
1461
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1462
#fi
1463
config_mak="config-host.mak"
1464
config_h="config-host.h"
1465

    
1466
#echo "Creating $config_mak and $config_h"
1467

    
1468
test -f $config_h && mv $config_h ${config_h}~
1469

    
1470
echo "# Automatically generated by configure - do not modify" > $config_mak
1471
printf "# Configured with:" >> $config_mak
1472
printf " '%s'" "$0" "$@" >> $config_mak
1473
echo >> $config_mak
1474
echo "/* Automatically generated by configure - do not modify */" > $config_h
1475

    
1476
echo "prefix=$prefix" >> $config_mak
1477
echo "bindir=\${prefix}$binsuffix" >> $config_mak
1478
echo "mandir=\${prefix}$mansuffix" >> $config_mak
1479
echo "datadir=\${prefix}$datasuffix" >> $config_mak
1480
echo "docdir=\${prefix}$docsuffix" >> $config_mak
1481
echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1482
echo "MAKE=$make" >> $config_mak
1483
echo "INSTALL=$install" >> $config_mak
1484
echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_mak
1485
echo "INSTALL_DATA=$install -m0644 -p" >> $config_mak
1486
echo "INSTALL_PROG=$install -m0755 -p" >> $config_mak
1487
echo "CC=$cc" >> $config_mak
1488
echo "HOST_CC=$host_cc" >> $config_mak
1489
echo "AR=$ar" >> $config_mak
1490
# XXX: only use CFLAGS and LDFLAGS ?  
1491
# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1492
# compilation of dyngen tool (useful for win32 build on Linux host)
1493
echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1494
echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1495
echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1496
echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1497
echo "CFLAGS=$CFLAGS" >> $config_mak
1498
echo "LDFLAGS=$LDFLAGS" >> $config_mak
1499
echo "EXESUF=$EXESUF" >> $config_mak
1500
echo "PTHREADLIBS=$PTHREADLIBS" >> $config_mak
1501
echo "CLOCKLIBS=$CLOCKLIBS" >> $config_mak
1502
case "$cpu" in
1503
  i386)
1504
    echo "ARCH=i386" >> $config_mak
1505
    echo "#define HOST_I386 1" >> $config_h
1506
  ;;
1507
  x86_64)
1508
    echo "ARCH=x86_64" >> $config_mak
1509
    echo "#define HOST_X86_64 1" >> $config_h
1510
  ;;
1511
  alpha)
1512
    echo "ARCH=alpha" >> $config_mak
1513
    echo "#define HOST_ALPHA 1" >> $config_h
1514
  ;;
1515
  armv4b)
1516
    echo "ARCH=arm" >> $config_mak
1517
    echo "#define HOST_ARM 1" >> $config_h
1518
  ;;
1519
  armv4l)
1520
    echo "ARCH=arm" >> $config_mak
1521
    echo "#define HOST_ARM 1" >> $config_h
1522
  ;;
1523
  cris)
1524
    echo "ARCH=cris" >> $config_mak
1525
    echo "#define HOST_CRIS 1" >> $config_h
1526
  ;;
1527
  hppa)
1528
    echo "ARCH=hppa" >> $config_mak
1529
    echo "#define HOST_HPPA 1" >> $config_h
1530
  ;;
1531
  ia64)
1532
    echo "ARCH=ia64" >> $config_mak
1533
    echo "#define HOST_IA64 1" >> $config_h
1534
  ;;
1535
  m68k)
1536
    echo "ARCH=m68k" >> $config_mak
1537
    echo "#define HOST_M68K 1" >> $config_h
1538
  ;;
1539
  microblaze)
1540
    echo "ARCH=microblaze" >> $config_mak
1541
    echo "#define HOST_MICROBLAZE 1" >> $config_h
1542
  ;;
1543
  mips)
1544
    echo "ARCH=mips" >> $config_mak
1545
    echo "#define HOST_MIPS 1" >> $config_h
1546
  ;;
1547
  mips64)
1548
    echo "ARCH=mips64" >> $config_mak
1549
    echo "#define HOST_MIPS64 1" >> $config_h
1550
  ;;
1551
  ppc)
1552
    echo "ARCH=ppc" >> $config_mak
1553
    echo "#define HOST_PPC 1" >> $config_h
1554
  ;;
1555
  ppc64)
1556
    echo "ARCH=ppc64" >> $config_mak
1557
    echo "#define HOST_PPC64 1" >> $config_h
1558
  ;;
1559
  s390)
1560
    echo "ARCH=s390" >> $config_mak
1561
    echo "#define HOST_S390 1" >> $config_h
1562
  ;;
1563
  sparc)
1564
    echo "ARCH=sparc" >> $config_mak
1565
    echo "#define HOST_SPARC 1" >> $config_h
1566
  ;;
1567
  sparc64)
1568
    echo "ARCH=sparc64" >> $config_mak
1569
    echo "#define HOST_SPARC64 1" >> $config_h
1570
  ;;
1571
  *)
1572
    echo "Unsupported CPU = $cpu"
1573
    exit 1
1574
  ;;
1575
esac
1576
if test "$debug_tcg" = "yes" ; then
1577
  echo "#define DEBUG_TCG 1" >> $config_h
1578
fi
1579
if test "$debug" = "yes" ; then
1580
  echo "#define DEBUG_EXEC 1" >> $config_h
1581
fi
1582
if test "$sparse" = "yes" ; then
1583
  echo "CC      := REAL_CC=\"\$(CC)\" cgcc"       >> $config_mak
1584
  echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_mak
1585
  echo "CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
1586
fi
1587
if test "$strip_opt" = "yes" ; then
1588
  echo "STRIP_OPT=-s" >> $config_mak
1589
fi
1590
if test "$bigendian" = "yes" ; then
1591
  echo "WORDS_BIGENDIAN=yes" >> $config_mak
1592
  echo "#define WORDS_BIGENDIAN 1" >> $config_h
1593
fi
1594
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1595
if test "$mingw32" = "yes" ; then
1596
  echo "CONFIG_WIN32=yes" >> $config_mak
1597
  echo "#define CONFIG_WIN32 1" >> $config_h
1598
else
1599
  cat > $TMPC << EOF
1600
#include <byteswap.h>
1601
int main(void) { return bswap_32(0); }
1602
EOF
1603
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1604
    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1605
  fi
1606
  cat > $TMPC << EOF
1607
#include <sys/endian.h>
1608
#include <sys/types.h>
1609
#include <machine/bswap.h>
1610
int main(void) { return bswap32(0); }
1611
EOF
1612
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1613
    echo "#define HAVE_MACHINE_BSWAP_H 1" >> $config_h
1614
  fi
1615
fi
1616

    
1617
if [ "$openbsd" = "yes" ] ; then
1618
  echo "#define ENOTSUP 4096" >> $config_h
1619
fi
1620

    
1621
if test "$darwin" = "yes" ; then
1622
  echo "CONFIG_DARWIN=yes" >> $config_mak
1623
  echo "#define CONFIG_DARWIN 1" >> $config_h
1624
fi
1625

    
1626
if test "$aix" = "yes" ; then
1627
  echo "CONFIG_AIX=yes" >> $config_mak
1628
  echo "#define CONFIG_AIX 1" >> $config_h
1629
fi
1630

    
1631
if test "$solaris" = "yes" ; then
1632
  echo "CONFIG_SOLARIS=yes" >> $config_mak
1633
  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1634
  if test "$needs_libsunmath" = "yes" ; then
1635
    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1636
    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1637
  fi
1638
fi
1639
if test -n "$sparc_cpu"; then
1640
  echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1641
  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1642
fi
1643
if test "$gprof" = "yes" ; then
1644
  echo "TARGET_GPROF=yes" >> $config_mak
1645
  echo "#define HAVE_GPROF 1" >> $config_h
1646
fi
1647
if test "$static" = "yes" ; then
1648
  echo "CONFIG_STATIC=yes" >> $config_mak
1649
  echo "#define CONFIG_STATIC 1" >> $config_h
1650
fi
1651
if test $profiler = "yes" ; then
1652
  echo "#define CONFIG_PROFILER 1" >> $config_h
1653
fi
1654
if test "$slirp" = "yes" ; then
1655
  echo "CONFIG_SLIRP=yes" >> $config_mak
1656
  echo "#define CONFIG_SLIRP 1" >> $config_h
1657
fi
1658
if test "$vde" = "yes" ; then
1659
  echo "CONFIG_VDE=yes" >> $config_mak
1660
  echo "#define CONFIG_VDE 1" >> $config_h
1661
  echo "VDE_LIBS=-lvdeplug" >> $config_mak
1662
fi
1663
for card in $audio_card_list; do
1664
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1665
    echo "$def=yes" >> $config_mak
1666
    echo "#define $def 1" >> $config_h
1667
done
1668
echo "#define AUDIO_DRIVERS \\" >> $config_h
1669
for drv in $audio_drv_list; do
1670
    echo "    &${drv}_audio_driver, \\" >>$config_h
1671
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1672
    echo "$def=yes" >> $config_mak
1673
    if test "$drv" = "fmod"; then
1674
        echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1675
        echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1676
    elif test "$drv" = "oss"; then
1677
        echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1678
    fi
1679
done
1680
echo "" >>$config_h
1681
if test "$mixemu" = "yes" ; then
1682
  echo "CONFIG_MIXEMU=yes" >> $config_mak
1683
  echo "#define CONFIG_MIXEMU 1" >> $config_h
1684
fi
1685
if test "$vnc_tls" = "yes" ; then
1686
  echo "CONFIG_VNC_TLS=yes" >> $config_mak
1687
  echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1688
  echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1689
  echo "#define CONFIG_VNC_TLS 1" >> $config_h
1690
fi
1691
if test "$vnc_sasl" = "yes" ; then
1692
  echo "CONFIG_VNC_SASL=yes" >> $config_mak
1693
  echo "CONFIG_VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_mak
1694
  echo "CONFIG_VNC_SASL_LIBS=$vnc_sasl_libs" >> $config_mak
1695
  echo "#define CONFIG_VNC_SASL 1" >> $config_h
1696
fi
1697
if test "$fnmatch" = "yes" ; then
1698
  echo "#define HAVE_FNMATCH_H 1" >> $config_h
1699
fi
1700
qemu_version=`head $source_path/VERSION`
1701
echo "VERSION=$qemu_version" >>$config_mak
1702
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1703

    
1704
echo "#define QEMU_PKGVERSION \"$pkgversion\"" >> $config_h
1705

    
1706
echo "SRC_PATH=$source_path" >> $config_mak
1707
if [ "$source_path_used" = "yes" ]; then
1708
  echo "VPATH=$source_path" >> $config_mak
1709
fi
1710
echo "TARGET_DIRS=$target_list" >> $config_mak
1711
if [ "$build_docs" = "yes" ] ; then
1712
  echo "BUILD_DOCS=yes" >> $config_mak
1713
fi
1714
if test "$static" = "yes"; then
1715
  sdl1=$sdl_static
1716
else
1717
  sdl1=$sdl
1718
fi
1719
if test "$sdl1" = "yes" ; then
1720
  echo "#define CONFIG_SDL 1" >> $config_h
1721
  echo "CONFIG_SDL=yes" >> $config_mak
1722
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1723
    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1724
  elif test "$sdl_x11" = "yes" ; then
1725
    echo "SDL_LIBS=`$sdl_config --libs` -lX11" >> $config_mak
1726
  else
1727
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1728
  fi
1729
  if [ "${aa}" = "yes" ] ; then
1730
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1731
  else
1732
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1733
  fi
1734
fi
1735
if test "$cocoa" = "yes" ; then
1736
  echo "#define CONFIG_COCOA 1" >> $config_h
1737
  echo "CONFIG_COCOA=yes" >> $config_mak
1738
fi
1739
if test "$curses" = "yes" ; then
1740
  echo "#define CONFIG_CURSES 1" >> $config_h
1741
  echo "CONFIG_CURSES=yes" >> $config_mak
1742
  if test "$ncurses" = "yes" ; then
1743
    echo "CURSES_LIBS=-lncurses" >> $config_mak
1744
  else
1745
    echo "CURSES_LIBS=-lcurses" >> $config_mak
1746
  fi
1747
fi
1748
if test "$atfile" = "yes" ; then
1749
  echo "#define CONFIG_ATFILE 1" >> $config_h
1750
fi
1751
if test "$utimens" = "yes" ; then
1752
  echo "#define CONFIG_UTIMENSAT 1" >> $config_h
1753
fi
1754
if test "$pipe2" = "yes" ; then
1755
  echo "#define CONFIG_PIPE2 1" >> $config_h
1756
fi
1757
if test "$splice" = "yes" ; then
1758
  echo "#define CONFIG_SPLICE 1" >> $config_h
1759
fi
1760
if test "$inotify" = "yes" ; then
1761
  echo "#define CONFIG_INOTIFY 1" >> $config_h
1762
fi
1763
if test "$curl" = "yes" ; then
1764
  echo "CONFIG_CURL=yes" >> $config_mak
1765
  echo "CURL_LIBS=$curl_libs" >> $config_mak
1766
  echo "#define CONFIG_CURL 1" >> $config_h
1767
fi
1768
if test "$brlapi" = "yes" ; then
1769
  echo "CONFIG_BRLAPI=yes" >> $config_mak
1770
  echo "#define CONFIG_BRLAPI 1" >> $config_h
1771
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1772
fi
1773
if test "$bluez" = "yes" ; then
1774
  echo "CONFIG_BLUEZ=yes" >> $config_mak
1775
  echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1776
  echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1777
  echo "#define CONFIG_BLUEZ 1" >> $config_h
1778
fi
1779
if test "$xen" = "yes" ; then
1780
  echo "XEN_LIBS=-lxenstore -lxenctrl -lxenguest" >> $config_mak
1781
fi
1782
if test "$aio" = "yes" ; then
1783
  echo "#define CONFIG_AIO 1" >> $config_h
1784
  echo "CONFIG_AIO=yes" >> $config_mak
1785
fi
1786
if test "$io_thread" = "yes" ; then
1787
  echo "CONFIG_IOTHREAD=yes" >> $config_mak
1788
  echo "#define CONFIG_IOTHREAD 1" >> $config_h
1789
fi
1790
if test "$blobs" = "yes" ; then
1791
  echo "INSTALL_BLOBS=yes" >> $config_mak
1792
fi
1793
if test "$iovec" = "yes" ; then
1794
  echo "#define HAVE_IOVEC 1" >> $config_h
1795
fi
1796
if test "$preadv" = "yes" ; then
1797
  echo "#define HAVE_PREADV 1" >> $config_h
1798
fi
1799
if test "$fdt" = "yes" ; then
1800
  echo "#define HAVE_FDT 1" >> $config_h
1801
  echo "FDT_LIBS=-lfdt" >> $config_mak
1802
fi
1803

    
1804
# XXX: suppress that
1805
if [ "$bsd" = "yes" ] ; then
1806
  echo "#define O_LARGEFILE 0" >> $config_h
1807
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1808
  echo "#define HOST_BSD 1" >> $config_h
1809
fi
1810

    
1811
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1812

    
1813
# USB host support
1814
case "$usb" in
1815
linux)
1816
  echo "HOST_USB=linux" >> $config_mak
1817
;;
1818
bsd)
1819
  echo "HOST_USB=bsd" >> $config_mak
1820
;;
1821
*)
1822
  echo "HOST_USB=stub" >> $config_mak
1823
;;
1824
esac
1825

    
1826
# Determine what linker flags to use to force archive inclusion
1827
check_linker_flags()
1828
{
1829
    w2=
1830
    if test "$2" ; then
1831
	w2=-Wl,$2
1832
    fi
1833
    $cc $ARCH_CFLAGS -o $TMPE $OS_CFLAGS $TMPC -Wl,$1 ${w2} >/dev/null 2>/dev/null
1834
}
1835

    
1836
cat > $TMPC << EOF
1837
int main(void) { }
1838
EOF
1839
if check_linker_flags --whole-archive --no-whole-archive ; then
1840
    # GNU ld
1841
    echo "ARLIBS_BEGIN=-Wl,--whole-archive" >> $config_mak
1842
    echo "ARLIBS_END=-Wl,--no-whole-archive" >> $config_mak
1843
elif check_linker_flags -z,allextract -z,defaultextract ; then
1844
    # Solaris ld
1845
    echo "ARLIBS_BEGIN=-Wl,-z,allextract" >> $config_mak
1846
    echo "ARLIBS_END=-Wl,-z,defaultextract" >> $config_mak
1847
elif check_linker_flags -all_load ; then
1848
    # Mac OS X
1849
    echo "ARLIBS_BEGIN=-all_load" >> $config_mak
1850
    echo "ARLIBS_END=" >> $config_mak
1851
else
1852
    echo "Error: your linker does not support --whole-archive or -z."
1853
    echo "Please report to qemu-devel@nongnu.org"
1854
    exit 1
1855
fi
1856

    
1857
if test "$xen" = "yes" ;
1858
    then
1859
    echo "CONFIG_XEN=yes" >> $config_mak
1860
fi
1861

    
1862
tools=
1863
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1864
  tools="qemu-img\$(EXESUF) $tools"
1865
  if [ "$linux" = "yes" ] ; then
1866
      tools="qemu-nbd\$(EXESUF) qemu-io\$(EXESUF) $tools"
1867
  fi
1868
fi
1869
echo "TOOLS=$tools" >> $config_mak
1870

    
1871
roms=
1872
if test "$cpu" = "i386" -o "$cpu" = "x86_64" ; then
1873
  roms="pc-bios/optionrom"
1874
fi
1875
echo "ROMS=$roms" >> $config_mak
1876

    
1877
if test -f ${config_h}~ ; then
1878
  if cmp -s $config_h ${config_h}~ ; then
1879
    mv ${config_h}~ $config_h
1880
  else
1881
    rm ${config_h}~
1882
  fi
1883
fi
1884

    
1885
config_host_mak=${config_mak}
1886

    
1887
for target in $target_list; do
1888
target_dir="$target"
1889
config_mak=$target_dir/config.mak
1890
config_h=$target_dir/config.h
1891
target_cpu=`echo $target | cut -d '-' -f 1`
1892
target_bigendian="no"
1893
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1894
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1895
[ "$target_cpu" = "microblaze" ] && target_bigendian=yes
1896
[ "$target_cpu" = "mips" ] && target_bigendian=yes
1897
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1898
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1899
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1900
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1901
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1902
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1903
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1904
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1905
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1906
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1907
target_softmmu="no"
1908
target_user_only="no"
1909
target_linux_user="no"
1910
target_darwin_user="no"
1911
target_bsd_user="no"
1912
case "$target" in
1913
  ${target_cpu}-softmmu)
1914
    target_softmmu="yes"
1915
    ;;
1916
  ${target_cpu}-linux-user)
1917
    target_user_only="yes"
1918
    target_linux_user="yes"
1919
    ;;
1920
  ${target_cpu}-darwin-user)
1921
    target_user_only="yes"
1922
    target_darwin_user="yes"
1923
    ;;
1924
  ${target_cpu}-bsd-user)
1925
    target_user_only="yes"
1926
    target_bsd_user="yes"
1927
    ;;
1928
  *)
1929
    echo "ERROR: Target '$target' not recognised"
1930
    exit 1
1931
    ;;
1932
esac
1933

    
1934
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1935

    
1936
test -f $config_h && mv $config_h ${config_h}~
1937

    
1938
mkdir -p $target_dir
1939
mkdir -p $target_dir/fpu
1940
mkdir -p $target_dir/tcg
1941
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
1942
  mkdir -p $target_dir/nwfpe
1943
fi
1944

    
1945
#
1946
# don't use ln -sf as not all "ln -sf" over write the file/link
1947
#
1948
rm -f $target_dir/Makefile
1949
ln -s $source_path/Makefile.target $target_dir/Makefile
1950

    
1951

    
1952
echo "# Automatically generated by configure - do not modify" > $config_mak
1953
echo "/* Automatically generated by configure - do not modify */" > $config_h
1954

    
1955

    
1956
echo "include ../config-host.mak" >> $config_mak
1957
echo "#include \"../config-host.h\"" >> $config_h
1958

    
1959
bflt="no"
1960
elfload32="no"
1961
target_nptl="no"
1962
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1963
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1964
gdb_xml_files=""
1965
target_kvm="$kvm"
1966

    
1967
# Make sure the target and host cpus are compatible
1968
if test ! \( "$target_cpu" = "$cpu" -o \
1969
  \( "$target_cpu" = "ppcemb" -a "$cpu" = "ppc" \) -o \
1970
  \( "$target_cpu" = "x86_64" -a "$cpu" = "i386"   \) -o \
1971
  \( "$target_cpu" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
1972
  target_kvm="no"
1973
fi
1974
# Disable KVM for linux-user
1975
if test "$target_softmmu" = "no" ; then
1976
  target_kvm="no"
1977
fi
1978

    
1979
case "$target_cpu" in
1980
  i386)
1981
    echo "TARGET_ARCH=i386" >> $config_mak
1982
    echo "#define TARGET_ARCH \"i386\"" >> $config_h
1983
    echo "#define TARGET_I386 1" >> $config_h
1984
    if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1985
    then
1986
      echo "CONFIG_KQEMU=yes" >> $config_mak
1987
      echo "#define CONFIG_KQEMU 1" >> $config_h
1988
    fi
1989
    if test "$target_kvm" = "yes" ; then
1990
      echo "CONFIG_KVM=yes" >> $config_mak
1991
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1992
      echo "#define CONFIG_KVM 1" >> $config_h
1993
    fi
1994
    if test "$xen" = "yes" -a "$target_softmmu" = "yes";
1995
    then
1996
      echo "CONFIG_XEN=yes" >> $config_mak
1997
      echo "#define CONFIG_XEN 1" >> $config_h
1998
    fi
1999
    target_phys_bits=32
2000
  ;;
2001
  x86_64)
2002
    echo "TARGET_ARCH=x86_64" >> $config_mak
2003
    echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
2004
    echo "#define TARGET_I386 1" >> $config_h
2005
    echo "#define TARGET_X86_64 1" >> $config_h
2006
    if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
2007
    then
2008
      echo "CONFIG_KQEMU=yes" >> $config_mak
2009
      echo "#define CONFIG_KQEMU 1" >> $config_h
2010
    fi
2011
    if test "$target_kvm" = "yes" ; then
2012
      echo "CONFIG_KVM=yes" >> $config_mak
2013
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
2014
      echo "#define CONFIG_KVM 1" >> $config_h
2015
    fi
2016
    if test "$xen" = "yes" -a "$target_softmmu" = "yes"
2017
    then
2018
      echo "CONFIG_XEN=yes" >> $config_mak
2019
      echo "#define CONFIG_XEN 1" >> $config_h
2020
    fi
2021
    target_phys_bits=64
2022
  ;;
2023
  alpha)
2024
    echo "TARGET_ARCH=alpha" >> $config_mak
2025
    echo "#define TARGET_ARCH \"alpha\"" >> $config_h
2026
    echo "#define TARGET_ALPHA 1" >> $config_h
2027
    target_phys_bits=64
2028
  ;;
2029
  arm|armeb)
2030
    echo "TARGET_ARCH=arm" >> $config_mak
2031
    echo "#define TARGET_ARCH \"arm\"" >> $config_h
2032
    echo "#define TARGET_ARM 1" >> $config_h
2033
    bflt="yes"
2034
    target_nptl="yes"
2035
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
2036
    target_phys_bits=32
2037
  ;;
2038
  cris)
2039
    echo "TARGET_ARCH=cris" >> $config_mak
2040
    echo "#define TARGET_ARCH \"cris\"" >> $config_h
2041
    echo "#define TARGET_CRIS 1" >> $config_h
2042
    target_nptl="yes"
2043
    target_phys_bits=32
2044
  ;;
2045
  m68k)
2046
    echo "TARGET_ARCH=m68k" >> $config_mak
2047
    echo "#define TARGET_ARCH \"m68k\"" >> $config_h
2048
    echo "#define TARGET_M68K 1" >> $config_h
2049
    bflt="yes"
2050
    gdb_xml_files="cf-core.xml cf-fp.xml"
2051
    target_phys_bits=32
2052
  ;;
2053
  microblaze)
2054
    echo "TARGET_ARCH=microblaze" >> $config_mak
2055
    echo "#define TARGET_ARCH \"microblaze\"" >> $config_h
2056
    echo "#define TARGET_MICROBLAZE 1" >> $config_h
2057
    bflt="yes"
2058
    target_nptl="yes"
2059
    target_phys_bits=32
2060
  ;;
2061
 mips|mipsel)
2062
    echo "TARGET_ARCH=mips" >> $config_mak
2063
    echo "#define TARGET_ARCH \"mips\"" >> $config_h
2064
    echo "#define TARGET_MIPS 1" >> $config_h
2065
    echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
2066
    target_phys_bits=64
2067
  ;;
2068
  mipsn32|mipsn32el)
2069
    echo "TARGET_ARCH=mipsn32" >> $config_mak
2070
    echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
2071
    echo "#define TARGET_MIPS 1" >> $config_h
2072
    echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
2073
    target_phys_bits=64
2074
  ;;
2075
  mips64|mips64el)
2076
    echo "TARGET_ARCH=mips64" >> $config_mak
2077
    echo "#define TARGET_ARCH \"mips64\"" >> $config_h
2078
    echo "#define TARGET_MIPS 1" >> $config_h
2079
    echo "#define TARGET_MIPS64 1" >> $config_h
2080
    echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
2081
    target_phys_bits=64
2082
  ;;
2083
  ppc)
2084
    echo "TARGET_ARCH=ppc" >> $config_mak
2085
    echo "#define TARGET_ARCH \"ppc\"" >> $config_h
2086
    echo "#define TARGET_PPC 1" >> $config_h
2087
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
2088
    target_phys_bits=32
2089
  ;;
2090
  ppcemb)
2091
    echo "TARGET_ARCH=ppcemb" >> $config_mak
2092
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
2093
    echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
2094
    echo "#define TARGET_PPC 1" >> $config_h
2095
    echo "#define TARGET_PPCEMB 1" >> $config_h
2096
    if test "$target_kvm" = "yes" ; then
2097
      echo "CONFIG_KVM=yes" >> $config_mak
2098
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
2099
      echo "#define CONFIG_KVM 1" >> $config_h
2100
    fi
2101
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
2102
    target_phys_bits=64
2103
  ;;
2104
  ppc64)
2105
    echo "TARGET_ARCH=ppc64" >> $config_mak
2106
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
2107
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
2108
    echo "#define TARGET_PPC 1" >> $config_h
2109
    echo "#define TARGET_PPC64 1" >> $config_h
2110
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
2111
    target_phys_bits=64
2112
  ;;
2113
  ppc64abi32)
2114
    echo "TARGET_ARCH=ppc64" >> $config_mak
2115
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
2116
    echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
2117
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
2118
    echo "#define TARGET_PPC 1" >> $config_h
2119
    echo "#define TARGET_PPC64 1" >> $config_h
2120
    echo "#define TARGET_ABI32 1" >> $config_h
2121
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
2122
    target_phys_bits=64
2123
  ;;
2124
  sh4|sh4eb)
2125
    echo "TARGET_ARCH=sh4" >> $config_mak
2126
    echo "#define TARGET_ARCH \"sh4\"" >> $config_h
2127
    echo "#define TARGET_SH4 1" >> $config_h
2128
    bflt="yes"
2129
    target_nptl="yes"
2130
    target_phys_bits=32
2131
  ;;
2132
  sparc)
2133
    echo "TARGET_ARCH=sparc" >> $config_mak
2134
    echo "#define TARGET_ARCH \"sparc\"" >> $config_h
2135
    echo "#define TARGET_SPARC 1" >> $config_h
2136
    target_phys_bits=64
2137
  ;;
2138
  sparc64)
2139
    echo "TARGET_ARCH=sparc64" >> $config_mak
2140
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
2141
    echo "#define TARGET_SPARC 1" >> $config_h
2142
    echo "#define TARGET_SPARC64 1" >> $config_h
2143
    elfload32="yes"
2144
    target_phys_bits=64
2145
  ;;
2146
  sparc32plus)
2147
    echo "TARGET_ARCH=sparc64" >> $config_mak
2148
    echo "TARGET_ABI_DIR=sparc" >> $config_mak
2149
    echo "TARGET_ARCH2=sparc32plus" >> $config_mak
2150
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
2151
    echo "#define TARGET_SPARC 1" >> $config_h
2152
    echo "#define TARGET_SPARC64 1" >> $config_h
2153
    echo "#define TARGET_ABI32 1" >> $config_h
2154
    target_phys_bits=64
2155
  ;;
2156
  *)
2157
    echo "Unsupported target CPU"
2158
    exit 1
2159
  ;;
2160
esac
2161
if [ $target_phys_bits -lt $hostlongbits ] ; then
2162
  target_phys_bits=$hostlongbits
2163
fi
2164
echo "HWLIB=../libhw$target_phys_bits/libqemuhw$target_phys_bits.a" >> $config_mak
2165
echo "#define TARGET_PHYS_ADDR_BITS $target_phys_bits" >> $config_h
2166
echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
2167
if test "$target_bigendian" = "yes" ; then
2168
  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
2169
  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
2170
fi
2171
if test "$target_softmmu" = "yes" ; then
2172
  echo "CONFIG_SOFTMMU=yes" >> $config_mak
2173
  echo "#define CONFIG_SOFTMMU 1" >> $config_h
2174
fi
2175
if test "$target_user_only" = "yes" ; then
2176
  echo "CONFIG_USER_ONLY=yes" >> $config_mak
2177
  echo "#define CONFIG_USER_ONLY 1" >> $config_h
2178
fi
2179
if test "$target_linux_user" = "yes" ; then
2180
  echo "CONFIG_LINUX_USER=yes" >> $config_mak
2181
  echo "#define CONFIG_LINUX_USER 1" >> $config_h
2182
fi
2183
if test "$target_darwin_user" = "yes" ; then
2184
  echo "CONFIG_DARWIN_USER=yes" >> $config_mak
2185
  echo "#define CONFIG_DARWIN_USER 1" >> $config_h
2186
fi
2187
list=""
2188
if test ! -z "$gdb_xml_files" ; then
2189
  for x in $gdb_xml_files; do
2190
    list="$list $source_path/gdb-xml/$x"
2191
  done
2192
fi
2193
echo "TARGET_XML_FILES=$list" >> $config_mak
2194

    
2195
if test "$target_cpu" = "arm" \
2196
     -o "$target_cpu" = "armeb" \
2197
     -o "$target_cpu" = "m68k" \
2198
     -o "$target_cpu" = "microblaze" \
2199
     -o "$target_cpu" = "mips" \
2200
     -o "$target_cpu" = "mipsel" \
2201
     -o "$target_cpu" = "mipsn32" \
2202
     -o "$target_cpu" = "mipsn32el" \
2203
     -o "$target_cpu" = "mips64" \
2204
     -o "$target_cpu" = "mips64el" \
2205
     -o "$target_cpu" = "ppc" \
2206
     -o "$target_cpu" = "ppc64" \
2207
     -o "$target_cpu" = "ppc64abi32" \
2208
     -o "$target_cpu" = "ppcemb" \
2209
     -o "$target_cpu" = "sparc" \
2210
     -o "$target_cpu" = "sparc64" \
2211
     -o "$target_cpu" = "sparc32plus"; then
2212
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
2213
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
2214
fi
2215
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
2216
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
2217
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
2218
fi
2219
if test "$target_user_only" = "yes" \
2220
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
2221
  echo "#define USE_NPTL 1" >> $config_h
2222
fi
2223
# 32 bit ELF loader in addition to native 64 bit loader?
2224
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
2225
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
2226
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
2227
fi
2228
if test "$target_bsd_user" = "yes" ; then
2229
  echo "CONFIG_BSD_USER=yes" >> $config_mak
2230
  echo "#define CONFIG_BSD_USER 1" >> $config_h
2231
fi
2232

    
2233
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
2234

    
2235
done # for target in $targets
2236

    
2237
# build tree in object directory if source path is different from current one
2238
if test "$source_path_used" = "yes" ; then
2239
    DIRS="tests tests/cris slirp audio block pc-bios/optionrom"
2240
    FILES="Makefile tests/Makefile"
2241
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
2242
    FILES="$FILES tests/test-mmap.c"
2243
    FILES="$FILES pc-bios/optionrom/Makefile"
2244
    for dir in $DIRS ; do
2245
            mkdir -p $dir
2246
    done
2247
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
2248
    for f in $FILES ; do
2249
        rm -f $f
2250
        ln -s $source_path/$f $f
2251
    done
2252
fi
2253

    
2254
for hwlib in 32 64; do
2255
  d=libhw$hwlib
2256
  mkdir -p $d
2257
  rm -f $d/Makefile
2258
  ln -s $source_path/Makefile.hw $d/Makefile
2259
  echo "HWLIB=libqemuhw$hwlib.a" > $d/config.mak
2260
  echo "CPPFLAGS=-DTARGET_PHYS_ADDR_BITS=$hwlib" >> $d/config.mak
2261
done