Statistics
| Branch: | Revision:

root / configure @ 2ac71179

History | View | Annotate | Download (55 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
  mips)
131
    cpu="mips"
132
  ;;
133
  mips64)
134
    cpu="mips64"
135
  ;;
136
  ppc)
137
    cpu="ppc"
138
  ;;
139
  ppc64)
140
    cpu="ppc64"
141
  ;;
142
  s390*)
143
    cpu="s390"
144
  ;;
145
  sparc|sun4[cdmuv])
146
    cpu="sparc"
147
  ;;
148
  sparc64)
149
    cpu="sparc64"
150
  ;;
151
  *)
152
    cpu="unknown"
153
  ;;
154
esac
155
gprof="no"
156
debug_tcg="no"
157
sparse="no"
158
strip_opt="yes"
159
bigendian="no"
160
mingw32="no"
161
EXESUF=""
162
gdbstub="yes"
163
slirp="yes"
164
vde="yes"
165
fmod_lib=""
166
fmod_inc=""
167
oss_lib=""
168
vnc_tls="yes"
169
vnc_sasl="yes"
170
bsd="no"
171
linux="no"
172
solaris="no"
173
kqemu="no"
174
profiler="no"
175
cocoa="no"
176
check_gfx="yes"
177
softmmu="yes"
178
linux_user="no"
179
darwin_user="no"
180
bsd_user="no"
181
build_docs="no"
182
uname_release=""
183
curses="yes"
184
pthread="yes"
185
aio="yes"
186
io_thread="no"
187
nptl="yes"
188
mixemu="no"
189
bluez="yes"
190
kvm="yes"
191
kerneldir=""
192
aix="no"
193
blobs="yes"
194
fdt="yes"
195
sdl_x11="no"
196
xen="yes"
197
pkgversion=""
198

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

    
336
if [ "$bsd" = "yes" ] ; then
337
  if [ "$darwin" != "yes" ] ; then
338
    make="gmake"
339
    usb="bsd"
340
  fi
341
  bsd_user="yes"
342
fi
343

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

    
355
werror="no"
356
# generate compile errors on warnings for development builds
357
#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
358
#werror="yes";
359
#fi
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-sparse) sparse="yes"
412
  ;;
413
  --disable-sparse) sparse="no"
414
  ;;
415
  --disable-strip) strip_opt="no"
416
  ;;
417
  --disable-vnc-tls) vnc_tls="no"
418
  ;;
419
  --disable-vnc-sasl) vnc_sasl="no"
420
  ;;
421
  --disable-slirp) slirp="no"
422
  ;;
423
  --disable-vde) vde="no"
424
  ;;
425
  --disable-kqemu) kqemu="no"
426
  ;;
427
  --disable-xen) xen="no"
428
  ;;
429
  --disable-brlapi) brlapi="no"
430
  ;;
431
  --disable-bluez) bluez="no"
432
  ;;
433
  --disable-kvm) kvm="no"
434
  ;;
435
  --enable-profiler) profiler="yes"
436
  ;;
437
  --enable-cocoa)
438
      cocoa="yes" ;
439
      sdl="no" ;
440
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
441
  ;;
442
  --disable-gfx-check) check_gfx="no"
443
  ;;
444
  --disable-system) softmmu="no"
445
  ;;
446
  --enable-system) softmmu="yes"
447
  ;;
448
  --disable-linux-user) linux_user="no"
449
  ;;
450
  --enable-linux-user) linux_user="yes"
451
  ;;
452
  --disable-darwin-user) darwin_user="no"
453
  ;;
454
  --enable-darwin-user) darwin_user="yes"
455
  ;;
456
  --disable-bsd-user) bsd_user="no"
457
  ;;
458
  --enable-bsd-user) bsd_user="yes"
459
  ;;
460
  --enable-uname-release=*) uname_release="$optarg"
461
  ;;
462
  --sparc_cpu=*)
463
      sparc_cpu="$optarg"
464
      case $sparc_cpu in
465
        v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
466
                 target_cpu="sparc"; cpu="sparc" ;;
467
        v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
468
                 target_cpu="sparc"; cpu="sparc" ;;
469
        v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
470
                 target_cpu="sparc64"; cpu="sparc64" ;;
471
        *)     echo "undefined SPARC architecture. Exiting";exit 1;;
472
      esac
473
  ;;
474
  --enable-werror) werror="yes"
475
  ;;
476
  --disable-werror) werror="no"
477
  ;;
478
  --disable-curses) curses="no"
479
  ;;
480
  --disable-nptl) nptl="no"
481
  ;;
482
  --enable-mixemu) mixemu="yes"
483
  ;;
484
  --disable-pthread) pthread="no"
485
  ;;
486
  --disable-aio) aio="no"
487
  ;;
488
  --enable-io-thread) io_thread="yes"
489
  ;;
490
  --disable-blobs) blobs="no"
491
  ;;
492
  --kerneldir=*) kerneldir="$optarg"
493
  ;;
494
  --with-pkgversion=*) pkgversion=" ($optarg)"
495
  ;;
496
  *) echo "ERROR: unknown option $opt"; show_help="yes"
497
  ;;
498
  esac
499
done
500

    
501
# default flags for all hosts
502
CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
503
CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls"
504
LDFLAGS="$LDFLAGS -g"
505
if test "$werror" = "yes" ; then
506
CFLAGS="$CFLAGS -Werror"
507
fi
508

    
509
if test "$solaris" = "no" ; then
510
    if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
511
        LDFLAGS="$LDFLAGS -Wl,--warn-common"
512
    fi
513
fi
514

    
515
#
516
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
517
# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
518
#
519
case "$cpu" in
520
    sparc) if test -z "$sparc_cpu" ; then
521
               ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
522
               ARCH_LDFLAGS="-m32"
523
           else
524
               ARCH_CFLAGS="${SP_CFLAGS}"
525
               ARCH_LDFLAGS="${SP_LDFLAGS}"
526
           fi
527
           ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g2 -ffixed-g3"
528
           if test "$solaris" = "no" ; then
529
               ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g1 -ffixed-g6"
530
           fi
531
           ;;
532
    sparc64) if test -z "$sparc_cpu" ; then
533
               ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
534
               ARCH_LDFLAGS="-m64"
535
           else
536
               ARCH_CFLAGS="${SP_CFLAGS}"
537
               ARCH_LDFLAGS="${SP_LDFLAGS}"
538
           fi
539
           if test "$solaris" = "no" ; then
540
               ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g5 -ffixed-g6 -ffixed-g7"
541
           else
542
               ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g1 -ffixed-g5 -ffixed-g6 -ffixed-g7"
543
           fi
544
           ;;
545
    s390)
546
           ARCH_CFLAGS="-march=z900"
547
           ;;
548
    i386)
549
           ARCH_CFLAGS="-m32"
550
           ARCH_LDFLAGS="-m32"
551
           ;;
552
    x86_64)
553
           ARCH_CFLAGS="-m64"
554
           ARCH_LDFLAGS="-m64"
555
           ;;
556
esac
557

    
558
if test x"$show_help" = x"yes" ; then
559
cat << EOF
560

    
561
Usage: configure [options]
562
Options: [defaults in brackets after descriptions]
563

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

    
630
if test "$mingw32" = "yes" ; then
631
    linux="no"
632
    EXESUF=".exe"
633
    oss="no"
634
    linux_user="no"
635
    bsd_user="no"
636
    OS_CFLAGS="$OS_CFLAGS -DWIN32_LEAN_AND_MEAN -DWINVER=0x501"
637
fi
638

    
639
if test ! -x "$(which cgcc 2>/dev/null)"; then
640
    sparse="no"
641
fi
642

    
643
#
644
# Solaris specific configure tool chain decisions
645
#
646
if test "$solaris" = "yes" ; then
647
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
648
  if test -z "$solinst" ; then
649
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
650
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
651
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
652
    exit 1
653
  fi
654
  if test "$solinst" = "/usr/sbin/install" ; then
655
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
656
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
657
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
658
    exit 1
659
  fi
660
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
661
  if test -z "$sol_ar" ; then
662
    echo "Error: No path includes ar"
663
    if test -f /usr/ccs/bin/ar ; then
664
      echo "Add /usr/ccs/bin to your path and rerun configure"
665
    fi
666
    exit 1
667
  fi
668
fi
669

    
670

    
671
if test -z "$target_list" ; then
672
# these targets are portable
673
    if [ "$softmmu" = "yes" ] ; then
674
        target_list="\
675
i386-softmmu \
676
x86_64-softmmu \
677
arm-softmmu \
678
cris-softmmu \
679
m68k-softmmu \
680
mips-softmmu \
681
mipsel-softmmu \
682
mips64-softmmu \
683
mips64el-softmmu \
684
ppc-softmmu \
685
ppcemb-softmmu \
686
ppc64-softmmu \
687
sh4-softmmu \
688
sh4eb-softmmu \
689
sparc-softmmu \
690
"
691
    fi
692
# the following are Linux specific
693
    if [ "$linux_user" = "yes" ] ; then
694
        target_list="${target_list}\
695
i386-linux-user \
696
x86_64-linux-user \
697
alpha-linux-user \
698
arm-linux-user \
699
armeb-linux-user \
700
cris-linux-user \
701
m68k-linux-user \
702
mips-linux-user \
703
mipsel-linux-user \
704
ppc-linux-user \
705
ppc64-linux-user \
706
ppc64abi32-linux-user \
707
sh4-linux-user \
708
sh4eb-linux-user \
709
sparc-linux-user \
710
sparc64-linux-user \
711
sparc32plus-linux-user \
712
"
713
    fi
714
# the following are Darwin specific
715
    if [ "$darwin_user" = "yes" ] ; then
716
        target_list="$target_list i386-darwin-user ppc-darwin-user "
717
    fi
718
# the following are BSD specific
719
    if [ "$bsd_user" = "yes" ] ; then
720
        target_list="${target_list}\
721
i386-bsd-user \
722
x86_64-bsd-user \
723
sparc-bsd-user \
724
sparc64-bsd-user \
725
"
726
    fi
727
else
728
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
729
fi
730
if test -z "$target_list" ; then
731
    echo "No targets enabled"
732
    exit 1
733
fi
734

    
735
if test -z "$cross_prefix" ; then
736

    
737
# ---
738
# big/little endian test
739
cat > $TMPC << EOF
740
#include <inttypes.h>
741
int main(int argc, char ** argv){
742
        volatile uint32_t i=0x01234567;
743
        return (*((uint8_t*)(&i))) == 0x67;
744
}
745
EOF
746

    
747
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
748
$TMPE && bigendian="yes"
749
else
750
echo big/little test failed
751
fi
752

    
753
else
754

    
755
# if cross compiling, cannot launch a program, so make a static guess
756
if test "$cpu" = "armv4b" \
757
     -o "$cpu" = "hppa" \
758
     -o "$cpu" = "m68k" \
759
     -o "$cpu" = "mips" \
760
     -o "$cpu" = "mips64" \
761
     -o "$cpu" = "ppc" \
762
     -o "$cpu" = "ppc64" \
763
     -o "$cpu" = "s390" \
764
     -o "$cpu" = "sparc" \
765
     -o "$cpu" = "sparc64"; then
766
    bigendian="yes"
767
fi
768

    
769
fi
770

    
771
# host long bits test
772
hostlongbits="32"
773
if test "$cpu" = "x86_64" \
774
     -o "$cpu" = "alpha" \
775
     -o "$cpu" = "ia64" \
776
     -o "$cpu" = "sparc64" \
777
     -o "$cpu" = "ppc64"; then
778
    hostlongbits="64"
779
fi
780

    
781
# Check host NPTL support
782
cat > $TMPC <<EOF
783
#include <sched.h>
784
#include <linux/futex.h>
785
void foo()
786
{
787
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
788
#error bork
789
#endif
790
}
791
EOF
792

    
793
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
794
  :
795
else
796
   nptl="no"
797
fi
798

    
799
##########################################
800
# zlib check
801

    
802
cat > $TMPC << EOF
803
#include <zlib.h>
804
int main(void) { zlibVersion(); return 0; }
805
EOF
806
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz > /dev/null 2> /dev/null ; then
807
    :
808
else
809
    echo
810
    echo "Error: zlib check failed"
811
    echo "Make sure to have the zlib libs and headers installed."
812
    echo
813
    exit 1
814
fi
815

    
816
##########################################
817
# xen probe
818

    
819
if test "$xen" = "yes" ; then
820
cat > $TMPC <<EOF
821
#include <xenctrl.h>
822
#include <xs.h>
823
int main(void) { xs_daemon_open; xc_interface_open; }
824
EOF
825
   if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC -lxenstore -lxenctrl 2> /dev/null > /dev/null ; then
826
      :
827
   else
828
      xen="no"
829
   fi
830
fi
831

    
832
##########################################
833
# SDL probe
834

    
835
sdl_too_old=no
836

    
837
if test -z "$sdl" ; then
838
    sdl_config="sdl-config"
839
    sdl=no
840
    sdl_static=no
841

    
842
cat > $TMPC << EOF
843
#include <SDL.h>
844
#undef main /* We don't want SDL to override our main() */
845
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
846
EOF
847
    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
848
        _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
849
        if test "$_sdlversion" -lt 121 ; then
850
            sdl_too_old=yes
851
        else
852
            if test "$cocoa" = "no" ; then
853
                sdl=yes
854
            fi
855
        fi
856

    
857
        # static link with sdl ?
858
        if test "$sdl" = "yes" ; then
859
            aa="no"
860
            `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
861
            sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
862
            if [ "$aa" = "yes" ] ; then
863
                sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
864
            fi
865

    
866
            if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs > /dev/null 2> /dev/null; then
867
                sdl_static=yes
868
            fi
869
        fi # static link
870
    fi # sdl compile test
871
else
872
    # Make sure to disable cocoa if sdl was set
873
    if test "$sdl" = "yes" ; then
874
       cocoa="no"
875
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
876
    fi
877
fi # -z $sdl
878

    
879
if test "$sdl" = "yes" ; then
880
cat > $TMPC <<EOF
881
#include <SDL.h>
882
#if defined(SDL_VIDEO_DRIVER_X11)
883
#include <X11/XKBlib.h>
884
#else
885
#error No x11 support
886
#endif
887
int main(void) { return 0; }
888
EOF
889
    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
890
	sdl_x11="yes"
891
    fi
892
fi
893

    
894
##########################################
895
# VNC TLS detection
896
if test "$vnc_tls" = "yes" ; then
897
cat > $TMPC <<EOF
898
#include <gnutls/gnutls.h>
899
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
900
EOF
901
    vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
902
    vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
903
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
904
           $vnc_tls_libs > /dev/null 2> /dev/null ; then
905
	:
906
    else
907
	vnc_tls="no"
908
    fi
909
fi
910

    
911
##########################################
912
# VNC SASL detection
913
if test "$vnc_sasl" = "yes" ; then
914
cat > $TMPC <<EOF
915
#include <sasl/sasl.h>
916
#include <stdio.h>
917
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
918
EOF
919
    # Assuming Cyrus-SASL installed in /usr prefix
920
    vnc_sasl_cflags=""
921
    vnc_sasl_libs="-lsasl2"
922
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_sasl_cflags $TMPC \
923
           $vnc_sasl_libs 2> /dev/null > /dev/null ; then
924
	:
925
    else
926
	vnc_sasl="no"
927
    fi
928
fi
929

    
930
##########################################
931
# fnmatch() probe, used for ACL routines
932
fnmatch="no"
933
cat > $TMPC << EOF
934
#include <fnmatch.h>
935
int main(void)
936
{
937
    fnmatch("foo", "foo", 0);
938
    return 0;
939
}
940
EOF
941
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
942
   fnmatch="yes"
943
fi
944

    
945
##########################################
946
# vde libraries probe
947
if test "$vde" = "yes" ; then
948
  cat > $TMPC << EOF
949
#include <libvdeplug.h>
950
int main(void)
951
{
952
    struct vde_open_args a = {0, 0, 0};
953
    vde_open("", "", &a);
954
    return 0;
955
}
956
EOF
957
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug > /dev/null 2> /dev/null ; then
958
        :
959
    else
960
        vde="no"
961
    fi
962
fi
963

    
964
##########################################
965
# Sound support libraries probe
966

    
967
audio_drv_probe()
968
{
969
    drv=$1
970
    hdr=$2
971
    lib=$3
972
    exp=$4
973
    cfl=$5
974
        cat > $TMPC << EOF
975
#include <$hdr>
976
int main(void) { $exp }
977
EOF
978
    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib > /dev/null 2> /dev/null ; then
979
        :
980
    else
981
        echo
982
        echo "Error: $drv check failed"
983
        echo "Make sure to have the $drv libs and headers installed."
984
        echo
985
        exit 1
986
    fi
987
}
988

    
989
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
990
for drv in $audio_drv_list; do
991
    case $drv in
992
    alsa)
993
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
994
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
995
    ;;
996

    
997
    fmod)
998
    if test -z $fmod_lib || test -z $fmod_inc; then
999
        echo
1000
        echo "Error: You must specify path to FMOD library and headers"
1001
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
1002
        echo
1003
        exit 1
1004
    fi
1005
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
1006
    ;;
1007

    
1008
    esd)
1009
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1010
    ;;
1011

    
1012
    pa)
1013
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
1014
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1015
    ;;
1016

    
1017
    oss|sdl|core|wav|dsound)
1018
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
1019
    ;;
1020

    
1021
    *)
1022
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
1023
        echo
1024
        echo "Error: Unknown driver '$drv' selected"
1025
        echo "Possible drivers are: $audio_possible_drivers"
1026
        echo
1027
        exit 1
1028
    }
1029
    ;;
1030
    esac
1031
done
1032

    
1033
##########################################
1034
# BrlAPI probe
1035

    
1036
if test -z "$brlapi" ; then
1037
    brlapi=no
1038
cat > $TMPC << EOF
1039
#include <brlapi.h>
1040
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
1041
EOF
1042
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi > /dev/null 2> /dev/null ; then
1043
	    brlapi=yes
1044
    fi # brlapi compile test
1045
fi # -z $brlapi
1046

    
1047
##########################################
1048
# curses probe
1049

    
1050
if test "$curses" = "yes" ; then
1051
  curses=no
1052
  cat > $TMPC << EOF
1053
#include <curses.h>
1054
#ifdef __OpenBSD__
1055
#define resize_term resizeterm
1056
#endif
1057
int main(void) { resize_term(0, 0); return curses_version(); }
1058
EOF
1059
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses > /dev/null 2> /dev/null ; then
1060
    curses=yes
1061
  fi
1062
fi # test "$curses"
1063

    
1064
##########################################
1065
# bluez support probe
1066
if test "$bluez" = "yes" ; then
1067
  `pkg-config bluez 2> /dev/null` || bluez="no"
1068
fi
1069
if test "$bluez" = "yes" ; then
1070
  cat > $TMPC << EOF
1071
#include <bluetooth/bluetooth.h>
1072
int main(void) { return bt_error(0); }
1073
EOF
1074
  bluez_cflags=`pkg-config --cflags bluez 2> /dev/null`
1075
  bluez_libs=`pkg-config --libs bluez 2> /dev/null`
1076
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
1077
      $bluez_libs > /dev/null 2> /dev/null ; then
1078
    :
1079
  else
1080
    bluez="no"
1081
  fi
1082
fi
1083

    
1084
##########################################
1085
# kvm probe
1086
if test "$kvm" = "yes" ; then
1087
    cat > $TMPC <<EOF
1088
#include <linux/kvm.h>
1089
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
1090
#error Invalid KVM version
1091
#endif
1092
#if !defined(KVM_CAP_USER_MEMORY)
1093
#error Missing KVM capability KVM_CAP_USER_MEMORY
1094
#endif
1095
#if !defined(KVM_CAP_SET_TSS_ADDR)
1096
#error Missing KVM capability KVM_CAP_SET_TSS_ADDR
1097
#endif
1098
#if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
1099
#error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS
1100
#endif
1101
int main(void) { return 0; }
1102
EOF
1103
  if test "$kerneldir" != "" ; then
1104
      kvm_cflags=-I"$kerneldir"/include
1105
      if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
1106
         -a -d "$kerneldir/arch/x86/include" ; then
1107
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
1108
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
1109
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
1110
        elif test -d "$kerneldir/arch/$cpu/include" ; then
1111
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
1112
      fi
1113
  else
1114
      kvm_cflags=""
1115
  fi
1116
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
1117
      > /dev/null 2>/dev/null ; then
1118
    :
1119
  else
1120
    kvm="no";
1121
    if [ -x "`which awk 2>/dev/null`" ] && \
1122
       [ -x "`which grep 2>/dev/null`" ]; then
1123
      kvmerr=`LANG=C $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC 2>&1 \
1124
	| grep "error: " \
1125
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
1126
      if test "$kvmerr" != "" ; then
1127
        kvm="no - (${kvmerr})"
1128
      fi
1129
    fi
1130
  fi
1131
fi
1132

    
1133
##########################################
1134
# pthread probe
1135
PTHREADLIBS=""
1136

    
1137
if test "$pthread" = yes; then
1138
  pthread=no
1139
cat > $TMPC << EOF
1140
#include <pthread.h>
1141
int main(void) { pthread_mutex_t lock;  return 0; }
1142
EOF
1143
  if $cc $ARCH_CFLAGS -o $TMPE $PTHREADLIBS $TMPC 2> /dev/null > /dev/null ; then
1144
    pthread=yes
1145
    PTHREADLIBS="-lpthread"
1146
  fi
1147
fi
1148

    
1149
if test "$pthread" = no; then
1150
   aio=no
1151
   io_thread=no
1152
fi
1153

    
1154
##########################################
1155
# iovec probe
1156
cat > $TMPC <<EOF
1157
#include <sys/types.h>
1158
#include <sys/uio.h>
1159
#include <unistd.h>
1160
int main(void) { struct iovec iov; return 0; }
1161
EOF
1162
iovec=no
1163
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1164
  iovec=yes
1165
fi
1166

    
1167
##########################################
1168
# preadv probe
1169
cat > $TMPC <<EOF
1170
#include <sys/types.h>
1171
#include <sys/uio.h>
1172
#include <unistd.h>
1173
int main(void) { preadv; }
1174
EOF
1175
preadv=no
1176
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1177
  preadv=yes
1178
fi
1179

    
1180
##########################################
1181
# fdt probe
1182
if test "$fdt" = "yes" ; then
1183
    fdt=no
1184
    cat > $TMPC << EOF
1185
int main(void) { return 0; }
1186
EOF
1187
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lfdt 2> /dev/null > /dev/null ; then
1188
    fdt=yes
1189
  fi
1190
fi
1191

    
1192
#
1193
# Check for xxxat() functions when we are building linux-user
1194
# emulator.  This is done because older glibc versions don't
1195
# have syscall stubs for these implemented.
1196
#
1197
atfile=no
1198
if [ "$linux_user" = "yes" ] ; then
1199
  cat > $TMPC << EOF
1200
#define _ATFILE_SOURCE
1201
#include <sys/types.h>
1202
#include <fcntl.h>
1203
#include <unistd.h>
1204

    
1205
int
1206
main(void)
1207
{
1208
	/* try to unlink nonexisting file */
1209
	return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
1210
}
1211
EOF
1212
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null > /dev/null ; then
1213
    atfile=yes
1214
  fi
1215
fi
1216

    
1217
# Check for inotify functions when we are building linux-user
1218
# emulator.  This is done because older glibc versions don't
1219
# have syscall stubs for these implemented.  In that case we
1220
# don't provide them even if kernel supports them.
1221
#
1222
inotify=no
1223
if [ "$linux_user" = "yes" ] ; then
1224
  cat > $TMPC << EOF
1225
#include <sys/inotify.h>
1226

    
1227
int
1228
main(void)
1229
{
1230
	/* try to start inotify */
1231
	return inotify_init();
1232
}
1233
EOF
1234
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null > /dev/null ; then
1235
    inotify=yes
1236
  fi
1237
fi
1238

    
1239
# Check if tools are available to build documentation.
1240
if [ -x "`which texi2html 2>/dev/null`" ] && \
1241
   [ -x "`which pod2man 2>/dev/null`" ]; then
1242
  build_docs="yes"
1243
fi
1244

    
1245
##########################################
1246
# Do we need librt
1247
CLOCKLIBS=""
1248
cat > $TMPC <<EOF
1249
#include <signal.h>
1250
#include <time.h>
1251
int main(void) { clockid_t id; return clock_gettime(id, NULL); }
1252
EOF
1253

    
1254
rt=no
1255
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1256
  :
1257
elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lrt > /dev/null 2> /dev/null ; then
1258
  rt=yes
1259
fi
1260

    
1261
if test "$rt" = "yes" ; then
1262
  CLOCKLIBS="-lrt"
1263
fi
1264

    
1265
if test "$mingw32" = "yes" ; then
1266
  if test -z "$prefix" ; then
1267
      prefix="c:\\\\Program Files\\\\Qemu"
1268
  fi
1269
  mansuffix=""
1270
  datasuffix=""
1271
  docsuffix=""
1272
  binsuffix=""
1273
else
1274
  if test -z "$prefix" ; then
1275
      prefix="/usr/local"
1276
  fi
1277
  mansuffix="/share/man"
1278
  datasuffix="/share/qemu"
1279
  docsuffix="/share/doc/qemu"
1280
  binsuffix="/bin"
1281
fi
1282

    
1283
echo "Install prefix    $prefix"
1284
echo "BIOS directory    $prefix$datasuffix"
1285
echo "binary directory  $prefix$binsuffix"
1286
if test "$mingw32" = "no" ; then
1287
echo "Manual directory  $prefix$mansuffix"
1288
echo "ELF interp prefix $interp_prefix"
1289
fi
1290
echo "Source path       $source_path"
1291
echo "C compiler        $cc"
1292
echo "Host C compiler   $host_cc"
1293
echo "ARCH_CFLAGS       $ARCH_CFLAGS"
1294
echo "make              $make"
1295
echo "install           $install"
1296
echo "host CPU          $cpu"
1297
echo "host big endian   $bigendian"
1298
echo "target list       $target_list"
1299
echo "tcg debug enabled $debug_tcg"
1300
echo "gprof enabled     $gprof"
1301
echo "sparse enabled    $sparse"
1302
echo "strip binaries    $strip_opt"
1303
echo "profiler          $profiler"
1304
echo "static build      $static"
1305
echo "-Werror enabled   $werror"
1306
if test "$darwin" = "yes" ; then
1307
    echo "Cocoa support     $cocoa"
1308
fi
1309
echo "SDL support       $sdl"
1310
if test "$sdl" != "no" ; then
1311
    echo "SDL static link   $sdl_static"
1312
fi
1313
echo "curses support    $curses"
1314
echo "mingw32 support   $mingw32"
1315
echo "Audio drivers     $audio_drv_list"
1316
echo "Extra audio cards $audio_card_list"
1317
echo "Mixer emulation   $mixemu"
1318
echo "VNC TLS support   $vnc_tls"
1319
if test "$vnc_tls" = "yes" ; then
1320
    echo "    TLS CFLAGS    $vnc_tls_cflags"
1321
    echo "    TLS LIBS      $vnc_tls_libs"
1322
fi
1323
echo "VNC SASL support  $vnc_sasl"
1324
if test "$vnc_sasl" = "yes" ; then
1325
    echo "    SASL CFLAGS    $vnc_sasl_cflags"
1326
    echo "    SASL LIBS      $vnc_sasl_libs"
1327
fi
1328
if test -n "$sparc_cpu"; then
1329
    echo "Target Sparc Arch $sparc_cpu"
1330
fi
1331
echo "kqemu support     $kqemu"
1332
echo "xen support       $xen"
1333
echo "brlapi support    $brlapi"
1334
echo "Documentation     $build_docs"
1335
[ ! -z "$uname_release" ] && \
1336
echo "uname -r          $uname_release"
1337
echo "NPTL support      $nptl"
1338
echo "vde support       $vde"
1339
echo "AIO support       $aio"
1340
echo "IO thread         $io_thread"
1341
echo "Install blobs     $blobs"
1342
echo "KVM support       $kvm"
1343
echo "fdt support       $fdt"
1344
echo "preadv support    $preadv"
1345

    
1346
if test $sdl_too_old = "yes"; then
1347
echo "-> Your SDL version is too old - please upgrade to have SDL support"
1348
fi
1349
if [ -s $TMPSDLLOG ]; then
1350
  echo "The error log from compiling the libSDL test is: "
1351
  cat $TMPSDLLOG
1352
fi
1353
#if test "$sdl_static" = "no"; then
1354
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1355
#fi
1356
config_mak="config-host.mak"
1357
config_h="config-host.h"
1358

    
1359
#echo "Creating $config_mak and $config_h"
1360

    
1361
test -f $config_h && mv $config_h ${config_h}~
1362

    
1363
echo "# Automatically generated by configure - do not modify" > $config_mak
1364
printf "# Configured with:" >> $config_mak
1365
printf " '%s'" "$0" "$@" >> $config_mak
1366
echo >> $config_mak
1367
echo "/* Automatically generated by configure - do not modify */" > $config_h
1368

    
1369
echo "prefix=$prefix" >> $config_mak
1370
echo "bindir=\${prefix}$binsuffix" >> $config_mak
1371
echo "mandir=\${prefix}$mansuffix" >> $config_mak
1372
echo "datadir=\${prefix}$datasuffix" >> $config_mak
1373
echo "docdir=\${prefix}$docsuffix" >> $config_mak
1374
echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1375
echo "MAKE=$make" >> $config_mak
1376
echo "INSTALL=$install" >> $config_mak
1377
echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_mak
1378
echo "INSTALL_DATA=$install -m0644 -p" >> $config_mak
1379
echo "INSTALL_PROG=$install -m0755 -p" >> $config_mak
1380
echo "CC=$cc" >> $config_mak
1381
echo "HOST_CC=$host_cc" >> $config_mak
1382
echo "AR=$ar" >> $config_mak
1383
# XXX: only use CFLAGS and LDFLAGS ?  
1384
# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1385
# compilation of dyngen tool (useful for win32 build on Linux host)
1386
echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1387
echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1388
echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1389
echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1390
echo "CFLAGS=$CFLAGS" >> $config_mak
1391
echo "LDFLAGS=$LDFLAGS" >> $config_mak
1392
echo "EXESUF=$EXESUF" >> $config_mak
1393
echo "PTHREADLIBS=$PTHREADLIBS" >> $config_mak
1394
echo "CLOCKLIBS=$CLOCKLIBS" >> $config_mak
1395
case "$cpu" in
1396
  i386)
1397
    echo "ARCH=i386" >> $config_mak
1398
    echo "#define HOST_I386 1" >> $config_h
1399
  ;;
1400
  x86_64)
1401
    echo "ARCH=x86_64" >> $config_mak
1402
    echo "#define HOST_X86_64 1" >> $config_h
1403
  ;;
1404
  alpha)
1405
    echo "ARCH=alpha" >> $config_mak
1406
    echo "#define HOST_ALPHA 1" >> $config_h
1407
  ;;
1408
  armv4b)
1409
    echo "ARCH=arm" >> $config_mak
1410
    echo "#define HOST_ARM 1" >> $config_h
1411
  ;;
1412
  armv4l)
1413
    echo "ARCH=arm" >> $config_mak
1414
    echo "#define HOST_ARM 1" >> $config_h
1415
  ;;
1416
  cris)
1417
    echo "ARCH=cris" >> $config_mak
1418
    echo "#define HOST_CRIS 1" >> $config_h
1419
  ;;
1420
  hppa)
1421
    echo "ARCH=hppa" >> $config_mak
1422
    echo "#define HOST_HPPA 1" >> $config_h
1423
  ;;
1424
  ia64)
1425
    echo "ARCH=ia64" >> $config_mak
1426
    echo "#define HOST_IA64 1" >> $config_h
1427
  ;;
1428
  m68k)
1429
    echo "ARCH=m68k" >> $config_mak
1430
    echo "#define HOST_M68K 1" >> $config_h
1431
  ;;
1432
  mips)
1433
    echo "ARCH=mips" >> $config_mak
1434
    echo "#define HOST_MIPS 1" >> $config_h
1435
  ;;
1436
  mips64)
1437
    echo "ARCH=mips64" >> $config_mak
1438
    echo "#define HOST_MIPS64 1" >> $config_h
1439
  ;;
1440
  ppc)
1441
    echo "ARCH=ppc" >> $config_mak
1442
    echo "#define HOST_PPC 1" >> $config_h
1443
  ;;
1444
  ppc64)
1445
    echo "ARCH=ppc64" >> $config_mak
1446
    echo "#define HOST_PPC64 1" >> $config_h
1447
  ;;
1448
  s390)
1449
    echo "ARCH=s390" >> $config_mak
1450
    echo "#define HOST_S390 1" >> $config_h
1451
  ;;
1452
  sparc)
1453
    echo "ARCH=sparc" >> $config_mak
1454
    echo "#define HOST_SPARC 1" >> $config_h
1455
  ;;
1456
  sparc64)
1457
    echo "ARCH=sparc64" >> $config_mak
1458
    echo "#define HOST_SPARC64 1" >> $config_h
1459
  ;;
1460
  *)
1461
    echo "Unsupported CPU = $cpu"
1462
    exit 1
1463
  ;;
1464
esac
1465
if test "$debug_tcg" = "yes" ; then
1466
  echo "#define DEBUG_TCG 1" >> $config_h
1467
fi
1468
if test "$sparse" = "yes" ; then
1469
  echo "CC      := REAL_CC=\"\$(CC)\" cgcc"       >> $config_mak
1470
  echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_mak
1471
  echo "CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
1472
fi
1473
if test "$strip_opt" = "yes" ; then
1474
  echo "STRIP_OPT=-s" >> $config_mak
1475
fi
1476
if test "$bigendian" = "yes" ; then
1477
  echo "WORDS_BIGENDIAN=yes" >> $config_mak
1478
  echo "#define WORDS_BIGENDIAN 1" >> $config_h
1479
fi
1480
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1481
if test "$mingw32" = "yes" ; then
1482
  echo "CONFIG_WIN32=yes" >> $config_mak
1483
  echo "#define CONFIG_WIN32 1" >> $config_h
1484
else
1485
  cat > $TMPC << EOF
1486
#include <byteswap.h>
1487
int main(void) { return bswap_32(0); }
1488
EOF
1489
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1490
    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1491
  fi
1492
  cat > $TMPC << EOF
1493
#include <sys/endian.h>
1494
#include <sys/types.h>
1495
#include <machine/bswap.h>
1496
int main(void) { return bswap32(0); }
1497
EOF
1498
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1499
    echo "#define HAVE_MACHINE_BSWAP_H 1" >> $config_h
1500
  fi
1501
fi
1502

    
1503
if [ "$openbsd" = "yes" ] ; then
1504
  echo "#define ENOTSUP 4096" >> $config_h
1505
fi
1506

    
1507
if test "$darwin" = "yes" ; then
1508
  echo "CONFIG_DARWIN=yes" >> $config_mak
1509
  echo "#define CONFIG_DARWIN 1" >> $config_h
1510
fi
1511

    
1512
if test "$aix" = "yes" ; then
1513
  echo "CONFIG_AIX=yes" >> $config_mak
1514
  echo "#define CONFIG_AIX 1" >> $config_h
1515
fi
1516

    
1517
if test "$solaris" = "yes" ; then
1518
  echo "CONFIG_SOLARIS=yes" >> $config_mak
1519
  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1520
  if test "$needs_libsunmath" = "yes" ; then
1521
    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1522
    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1523
  fi
1524
fi
1525
if test -n "$sparc_cpu"; then
1526
  echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1527
  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1528
fi
1529
if test "$gdbstub" = "yes" ; then
1530
  echo "CONFIG_GDBSTUB=yes" >> $config_mak
1531
  echo "#define CONFIG_GDBSTUB 1" >> $config_h
1532
fi
1533
if test "$gprof" = "yes" ; then
1534
  echo "TARGET_GPROF=yes" >> $config_mak
1535
  echo "#define HAVE_GPROF 1" >> $config_h
1536
fi
1537
if test "$static" = "yes" ; then
1538
  echo "CONFIG_STATIC=yes" >> $config_mak
1539
  echo "#define CONFIG_STATIC 1" >> $config_h
1540
fi
1541
if test $profiler = "yes" ; then
1542
  echo "#define CONFIG_PROFILER 1" >> $config_h
1543
fi
1544
if test "$slirp" = "yes" ; then
1545
  echo "CONFIG_SLIRP=yes" >> $config_mak
1546
  echo "#define CONFIG_SLIRP 1" >> $config_h
1547
fi
1548
if test "$vde" = "yes" ; then
1549
  echo "CONFIG_VDE=yes" >> $config_mak
1550
  echo "#define CONFIG_VDE 1" >> $config_h
1551
  echo "VDE_LIBS=-lvdeplug" >> $config_mak
1552
fi
1553
for card in $audio_card_list; do
1554
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1555
    echo "$def=yes" >> $config_mak
1556
    echo "#define $def 1" >> $config_h
1557
done
1558
echo "#define AUDIO_DRIVERS \\" >> $config_h
1559
for drv in $audio_drv_list; do
1560
    echo "    &${drv}_audio_driver, \\" >>$config_h
1561
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1562
    echo "$def=yes" >> $config_mak
1563
    if test "$drv" = "fmod"; then
1564
        echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1565
        echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1566
    elif test "$drv" = "oss"; then
1567
        echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1568
    fi
1569
done
1570
echo "" >>$config_h
1571
if test "$mixemu" = "yes" ; then
1572
  echo "CONFIG_MIXEMU=yes" >> $config_mak
1573
  echo "#define CONFIG_MIXEMU 1" >> $config_h
1574
fi
1575
if test "$vnc_tls" = "yes" ; then
1576
  echo "CONFIG_VNC_TLS=yes" >> $config_mak
1577
  echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1578
  echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1579
  echo "#define CONFIG_VNC_TLS 1" >> $config_h
1580
fi
1581
if test "$vnc_sasl" = "yes" ; then
1582
  echo "CONFIG_VNC_SASL=yes" >> $config_mak
1583
  echo "CONFIG_VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_mak
1584
  echo "CONFIG_VNC_SASL_LIBS=$vnc_sasl_libs" >> $config_mak
1585
  echo "#define CONFIG_VNC_SASL 1" >> $config_h
1586
fi
1587
if test "$fnmatch" = "yes" ; then
1588
  echo "#define HAVE_FNMATCH_H 1" >> $config_h
1589
fi
1590
qemu_version=`head $source_path/VERSION`
1591
echo "VERSION=$qemu_version" >>$config_mak
1592
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1593

    
1594
echo "#define QEMU_PKGVERSION \"$pkgversion\"" >> $config_h
1595

    
1596
echo "SRC_PATH=$source_path" >> $config_mak
1597
if [ "$source_path_used" = "yes" ]; then
1598
  echo "VPATH=$source_path" >> $config_mak
1599
fi
1600
echo "TARGET_DIRS=$target_list" >> $config_mak
1601
if [ "$build_docs" = "yes" ] ; then
1602
  echo "BUILD_DOCS=yes" >> $config_mak
1603
fi
1604
if test "$static" = "yes"; then
1605
  sdl1=$sdl_static
1606
else
1607
  sdl1=$sdl
1608
fi
1609
if test "$sdl1" = "yes" ; then
1610
  echo "#define CONFIG_SDL 1" >> $config_h
1611
  echo "CONFIG_SDL=yes" >> $config_mak
1612
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1613
    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1614
  elif test "$sdl_x11" = "yes" ; then
1615
    echo "SDL_LIBS=`$sdl_config --libs` -lX11" >> $config_mak
1616
  else
1617
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1618
  fi
1619
  if [ "${aa}" = "yes" ] ; then
1620
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1621
  else
1622
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1623
  fi
1624
fi
1625
if test "$cocoa" = "yes" ; then
1626
  echo "#define CONFIG_COCOA 1" >> $config_h
1627
  echo "CONFIG_COCOA=yes" >> $config_mak
1628
fi
1629
if test "$curses" = "yes" ; then
1630
  echo "#define CONFIG_CURSES 1" >> $config_h
1631
  echo "CONFIG_CURSES=yes" >> $config_mak
1632
  echo "CURSES_LIBS=-lcurses" >> $config_mak
1633
fi
1634
if test "$atfile" = "yes" ; then
1635
  echo "#define CONFIG_ATFILE 1" >> $config_h
1636
fi
1637
if test "$inotify" = "yes" ; then
1638
  echo "#define CONFIG_INOTIFY 1" >> $config_h
1639
fi
1640
if test "$brlapi" = "yes" ; then
1641
  echo "CONFIG_BRLAPI=yes" >> $config_mak
1642
  echo "#define CONFIG_BRLAPI 1" >> $config_h
1643
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1644
fi
1645
if test "$bluez" = "yes" ; then
1646
  echo "CONFIG_BLUEZ=yes" >> $config_mak
1647
  echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1648
  echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1649
  echo "#define CONFIG_BLUEZ 1" >> $config_h
1650
fi
1651
if test "$xen" = "yes" ; then
1652
  echo "XEN_LIBS=-lxenstore -lxenctrl -lxenguest" >> $config_mak
1653
fi
1654
if test "$aio" = "yes" ; then
1655
  echo "#define CONFIG_AIO 1" >> $config_h
1656
  echo "CONFIG_AIO=yes" >> $config_mak
1657
fi
1658
if test "$io_thread" = "yes" ; then
1659
  echo "CONFIG_IOTHREAD=yes" >> $config_mak
1660
  echo "#define CONFIG_IOTHREAD 1" >> $config_h
1661
fi
1662
if test "$blobs" = "yes" ; then
1663
  echo "INSTALL_BLOBS=yes" >> $config_mak
1664
fi
1665
if test "$iovec" = "yes" ; then
1666
  echo "#define HAVE_IOVEC 1" >> $config_h
1667
fi
1668
if test "$preadv" = "yes" ; then
1669
  echo "#define HAVE_PREADV 1" >> $config_h
1670
fi
1671
if test "$fdt" = "yes" ; then
1672
  echo "#define HAVE_FDT 1" >> $config_h
1673
  echo "FDT_LIBS=-lfdt" >> $config_mak
1674
fi
1675

    
1676
# XXX: suppress that
1677
if [ "$bsd" = "yes" ] ; then
1678
  echo "#define O_LARGEFILE 0" >> $config_h
1679
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1680
  echo "#define HOST_BSD 1" >> $config_h
1681
fi
1682

    
1683
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1684

    
1685
# USB host support
1686
case "$usb" in
1687
linux)
1688
  echo "HOST_USB=linux" >> $config_mak
1689
;;
1690
bsd)
1691
  echo "HOST_USB=bsd" >> $config_mak
1692
;;
1693
*)
1694
  echo "HOST_USB=stub" >> $config_mak
1695
;;
1696
esac
1697

    
1698
tools=
1699
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1700
  tools="qemu-img\$(EXESUF) $tools"
1701
  if [ "$linux" = "yes" ] ; then
1702
      tools="qemu-nbd\$(EXESUF) qemu-io\$(EXESUF) $tools"
1703
  fi
1704
fi
1705
echo "TOOLS=$tools" >> $config_mak
1706

    
1707
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1708

    
1709
for target in $target_list; do
1710
target_dir="$target"
1711
config_mak=$target_dir/config.mak
1712
config_h=$target_dir/config.h
1713
target_cpu=`echo $target | cut -d '-' -f 1`
1714
target_bigendian="no"
1715
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1716
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1717
[ "$target_cpu" = "mips" ] && target_bigendian=yes
1718
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1719
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1720
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1721
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1722
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1723
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1724
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1725
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1726
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1727
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1728
target_softmmu="no"
1729
target_user_only="no"
1730
target_linux_user="no"
1731
target_darwin_user="no"
1732
target_bsd_user="no"
1733
case "$target" in
1734
  ${target_cpu}-softmmu)
1735
    target_softmmu="yes"
1736
    ;;
1737
  ${target_cpu}-linux-user)
1738
    target_user_only="yes"
1739
    target_linux_user="yes"
1740
    ;;
1741
  ${target_cpu}-darwin-user)
1742
    target_user_only="yes"
1743
    target_darwin_user="yes"
1744
    ;;
1745
  ${target_cpu}-bsd-user)
1746
    target_user_only="yes"
1747
    target_bsd_user="yes"
1748
    ;;
1749
  *)
1750
    echo "ERROR: Target '$target' not recognised"
1751
    exit 1
1752
    ;;
1753
esac
1754

    
1755
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1756
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1757
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1758
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1759
    echo "Note that this will disable all output from the virtual graphics card"
1760
    echo "except through VNC or curses."
1761
    exit 1;
1762
fi
1763

    
1764
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1765

    
1766
test -f $config_h && mv $config_h ${config_h}~
1767

    
1768
mkdir -p $target_dir
1769
mkdir -p $target_dir/fpu
1770
mkdir -p $target_dir/tcg
1771
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
1772
  mkdir -p $target_dir/nwfpe
1773
fi
1774

    
1775
#
1776
# don't use ln -sf as not all "ln -sf" over write the file/link
1777
#
1778
rm -f $target_dir/Makefile
1779
ln -s $source_path/Makefile.target $target_dir/Makefile
1780

    
1781

    
1782
echo "# Automatically generated by configure - do not modify" > $config_mak
1783
echo "/* Automatically generated by configure - do not modify */" > $config_h
1784

    
1785

    
1786
echo "include ../config-host.mak" >> $config_mak
1787
echo "#include \"../config-host.h\"" >> $config_h
1788

    
1789
bflt="no"
1790
elfload32="no"
1791
target_nptl="no"
1792
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1793
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1794
gdb_xml_files=""
1795

    
1796
# Make sure the target and host cpus are compatible
1797
if test "$kvm" = "yes" -a ! \( "$target_cpu" = "$cpu" -o \
1798
  \( "$target_cpu" = "ppcemb" -a "$cpu" = "ppc" \) -o \
1799
  \( "$target_cpu" = "x86_64" -a "$cpu" = "i386"   \) -o \
1800
  \( "$target_cpu" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
1801
  kvm="no"
1802
fi
1803
# Disable KVM for linux-user
1804
if test "$kvm" = "yes" -a "$target_softmmu" = "no" ; then
1805
  kvm="no"
1806
fi
1807

    
1808
case "$target_cpu" in
1809
  i386)
1810
    echo "TARGET_ARCH=i386" >> $config_mak
1811
    echo "#define TARGET_ARCH \"i386\"" >> $config_h
1812
    echo "#define TARGET_I386 1" >> $config_h
1813
    if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1814
    then
1815
      echo "CONFIG_KQEMU=yes" >> $config_mak
1816
      echo "#define CONFIG_KQEMU 1" >> $config_h
1817
    fi
1818
    if test "$kvm" = "yes" ; then
1819
      echo "CONFIG_KVM=yes" >> $config_mak
1820
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1821
      echo "#define CONFIG_KVM 1" >> $config_h
1822
    fi
1823
    if test "$xen" = "yes" -a "$target_softmmu" = "yes";
1824
    then
1825
      echo "CONFIG_XEN=yes" >> $config_mak
1826
      echo "#define CONFIG_XEN 1" >> $config_h
1827
    fi
1828
  ;;
1829
  x86_64)
1830
    echo "TARGET_ARCH=x86_64" >> $config_mak
1831
    echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1832
    echo "#define TARGET_I386 1" >> $config_h
1833
    echo "#define TARGET_X86_64 1" >> $config_h
1834
    if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1835
    then
1836
      echo "CONFIG_KQEMU=yes" >> $config_mak
1837
      echo "#define CONFIG_KQEMU 1" >> $config_h
1838
    fi
1839
    if test "$kvm" = "yes" ; then
1840
      echo "CONFIG_KVM=yes" >> $config_mak
1841
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1842
      echo "#define CONFIG_KVM 1" >> $config_h
1843
    fi
1844
    if test "$xen" = "yes" -a "$target_softmmu" = "yes"
1845
    then
1846
      echo "CONFIG_XEN=yes" >> $config_mak
1847
      echo "#define CONFIG_XEN 1" >> $config_h
1848
    fi
1849
  ;;
1850
  alpha)
1851
    echo "TARGET_ARCH=alpha" >> $config_mak
1852
    echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1853
    echo "#define TARGET_ALPHA 1" >> $config_h
1854
  ;;
1855
  arm|armeb)
1856
    echo "TARGET_ARCH=arm" >> $config_mak
1857
    echo "#define TARGET_ARCH \"arm\"" >> $config_h
1858
    echo "#define TARGET_ARM 1" >> $config_h
1859
    bflt="yes"
1860
    target_nptl="yes"
1861
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1862
  ;;
1863
  cris)
1864
    echo "TARGET_ARCH=cris" >> $config_mak
1865
    echo "#define TARGET_ARCH \"cris\"" >> $config_h
1866
    echo "#define TARGET_CRIS 1" >> $config_h
1867
    target_nptl="yes"
1868
  ;;
1869
  m68k)
1870
    echo "TARGET_ARCH=m68k" >> $config_mak
1871
    echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1872
    echo "#define TARGET_M68K 1" >> $config_h
1873
    bflt="yes"
1874
    gdb_xml_files="cf-core.xml cf-fp.xml"
1875
  ;;
1876
  mips|mipsel)
1877
    echo "TARGET_ARCH=mips" >> $config_mak
1878
    echo "#define TARGET_ARCH \"mips\"" >> $config_h
1879
    echo "#define TARGET_MIPS 1" >> $config_h
1880
    echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1881
  ;;
1882
  mipsn32|mipsn32el)
1883
    echo "TARGET_ARCH=mipsn32" >> $config_mak
1884
    echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1885
    echo "#define TARGET_MIPS 1" >> $config_h
1886
    echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1887
  ;;
1888
  mips64|mips64el)
1889
    echo "TARGET_ARCH=mips64" >> $config_mak
1890
    echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1891
    echo "#define TARGET_MIPS 1" >> $config_h
1892
    echo "#define TARGET_MIPS64 1" >> $config_h
1893
    echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1894
  ;;
1895
  ppc)
1896
    echo "TARGET_ARCH=ppc" >> $config_mak
1897
    echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1898
    echo "#define TARGET_PPC 1" >> $config_h
1899
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1900
  ;;
1901
  ppcemb)
1902
    echo "TARGET_ARCH=ppcemb" >> $config_mak
1903
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1904
    echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1905
    echo "#define TARGET_PPC 1" >> $config_h
1906
    echo "#define TARGET_PPCEMB 1" >> $config_h
1907
    if test "$kvm" = "yes" ; then
1908
      echo "CONFIG_KVM=yes" >> $config_mak
1909
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1910
      echo "#define CONFIG_KVM 1" >> $config_h
1911
    fi
1912
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1913
  ;;
1914
  ppc64)
1915
    echo "TARGET_ARCH=ppc64" >> $config_mak
1916
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1917
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1918
    echo "#define TARGET_PPC 1" >> $config_h
1919
    echo "#define TARGET_PPC64 1" >> $config_h
1920
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1921
  ;;
1922
  ppc64abi32)
1923
    echo "TARGET_ARCH=ppc64" >> $config_mak
1924
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1925
    echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1926
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1927
    echo "#define TARGET_PPC 1" >> $config_h
1928
    echo "#define TARGET_PPC64 1" >> $config_h
1929
    echo "#define TARGET_ABI32 1" >> $config_h
1930
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1931
  ;;
1932
  sh4|sh4eb)
1933
    echo "TARGET_ARCH=sh4" >> $config_mak
1934
    echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1935
    echo "#define TARGET_SH4 1" >> $config_h
1936
    bflt="yes"
1937
    target_nptl="yes"
1938
  ;;
1939
  sparc)
1940
    echo "TARGET_ARCH=sparc" >> $config_mak
1941
    echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1942
    echo "#define TARGET_SPARC 1" >> $config_h
1943
  ;;
1944
  sparc64)
1945
    echo "TARGET_ARCH=sparc64" >> $config_mak
1946
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1947
    echo "#define TARGET_SPARC 1" >> $config_h
1948
    echo "#define TARGET_SPARC64 1" >> $config_h
1949
    elfload32="yes"
1950
  ;;
1951
  sparc32plus)
1952
    echo "TARGET_ARCH=sparc64" >> $config_mak
1953
    echo "TARGET_ABI_DIR=sparc" >> $config_mak
1954
    echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1955
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1956
    echo "#define TARGET_SPARC 1" >> $config_h
1957
    echo "#define TARGET_SPARC64 1" >> $config_h
1958
    echo "#define TARGET_ABI32 1" >> $config_h
1959
  ;;
1960
  *)
1961
    echo "Unsupported target CPU"
1962
    exit 1
1963
  ;;
1964
esac
1965
if test "$target_bigendian" = "yes" ; then
1966
  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1967
  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1968
fi
1969
if test "$target_softmmu" = "yes" ; then
1970
  echo "CONFIG_SOFTMMU=yes" >> $config_mak
1971
  echo "#define CONFIG_SOFTMMU 1" >> $config_h
1972
fi
1973
if test "$target_user_only" = "yes" ; then
1974
  echo "CONFIG_USER_ONLY=yes" >> $config_mak
1975
  echo "#define CONFIG_USER_ONLY 1" >> $config_h
1976
fi
1977
if test "$target_linux_user" = "yes" ; then
1978
  echo "CONFIG_LINUX_USER=yes" >> $config_mak
1979
  echo "#define CONFIG_LINUX_USER 1" >> $config_h
1980
fi
1981
if test "$target_darwin_user" = "yes" ; then
1982
  echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1983
  echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1984
fi
1985
list=""
1986
if test ! -z "$gdb_xml_files" ; then
1987
  for x in $gdb_xml_files; do
1988
    list="$list $source_path/gdb-xml/$x"
1989
  done
1990
fi
1991
echo "TARGET_XML_FILES=$list" >> $config_mak
1992

    
1993
if test "$target_cpu" = "arm" \
1994
     -o "$target_cpu" = "armeb" \
1995
     -o "$target_cpu" = "m68k" \
1996
     -o "$target_cpu" = "mips" \
1997
     -o "$target_cpu" = "mipsel" \
1998
     -o "$target_cpu" = "mipsn32" \
1999
     -o "$target_cpu" = "mipsn32el" \
2000
     -o "$target_cpu" = "mips64" \
2001
     -o "$target_cpu" = "mips64el" \
2002
     -o "$target_cpu" = "ppc" \
2003
     -o "$target_cpu" = "ppc64" \
2004
     -o "$target_cpu" = "ppc64abi32" \
2005
     -o "$target_cpu" = "ppcemb" \
2006
     -o "$target_cpu" = "sparc" \
2007
     -o "$target_cpu" = "sparc64" \
2008
     -o "$target_cpu" = "sparc32plus"; then
2009
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
2010
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
2011
fi
2012
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
2013
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
2014
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
2015
fi
2016
if test "$target_user_only" = "yes" \
2017
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
2018
  echo "#define USE_NPTL 1" >> $config_h
2019
fi
2020
# 32 bit ELF loader in addition to native 64 bit loader?
2021
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
2022
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
2023
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
2024
fi
2025
if test "$target_bsd_user" = "yes" ; then
2026
  echo "CONFIG_BSD_USER=yes" >> $config_mak
2027
  echo "#define CONFIG_BSD_USER 1" >> $config_h
2028
fi
2029

    
2030
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
2031

    
2032
done # for target in $targets
2033

    
2034
# build tree in object directory if source path is different from current one
2035
if test "$source_path_used" = "yes" ; then
2036
    DIRS="tests tests/cris slirp audio"
2037
    FILES="Makefile tests/Makefile"
2038
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
2039
    FILES="$FILES tests/test-mmap.c"
2040
    for dir in $DIRS ; do
2041
            mkdir -p $dir
2042
    done
2043
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
2044
    for f in $FILES ; do
2045
        rm -f $f
2046
        ln -s $source_path/$f $f
2047
    done
2048
fi