Statistics
| Branch: | Revision:

root / configure @ ea8f20f8

History | View | Annotate | Download (52.6 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

    
18
trap "rm -f $TMPC $TMPO $TMPE ; exit" 0 2 3 15
19

    
20
compile_object() {
21
  $cc $CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null
22
}
23

    
24
compile_prog() {
25
  local_cflags="$1"
26
  local_ldflags="$2"
27
  $cc $CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags > /dev/null 2> /dev/null
28
}
29

    
30
# default parameters
31
cpu=""
32
prefix=""
33
interp_prefix="/usr/gnemul/qemu-%M"
34
static="no"
35
sparc_cpu=""
36
cross_prefix=""
37
cc="gcc"
38
audio_drv_list=""
39
audio_card_list="ac97 es1370 sb16"
40
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus"
41
host_cc="gcc"
42
ar="ar"
43
make="make"
44
install="install"
45
objcopy="objcopy"
46
ld="ld"
47

    
48
# parse CC options first
49
for opt do
50
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
51
  case "$opt" in
52
  --cross-prefix=*) cross_prefix="$optarg"
53
  ;;
54
  --cc=*) cc="$optarg"
55
  ;;
56
  --cpu=*) cpu="$optarg"
57
  ;;
58
  --extra-cflags=*) CFLAGS="$optarg $CFLAGS"
59
  ;;
60
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
61
  ;;
62
  --sparc_cpu=*)
63
    sparc_cpu="$optarg"
64
    case $sparc_cpu in
65
    v7|v8|v8plus|v8plusa)
66
      cpu="sparc"
67
    ;;
68
    v9)
69
      cpu="sparc64"
70
    ;;
71
    *)
72
      echo "undefined SPARC architecture. Exiting";
73
      exit 1
74
    ;;
75
    esac
76
  ;;
77
  esac
78
done
79
# OS specific
80
# Using uname is really, really broken.  Once we have the right set of checks
81
# we can eliminate it's usage altogether
82

    
83
cc="${cross_prefix}${cc}"
84
ar="${cross_prefix}${ar}"
85
objcopy="${cross_prefix}${objcopy}"
86
ld="${cross_prefix}${ld}"
87

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

    
93
if compile_object ; then
94
  : C compiler works ok
95
else
96
    echo "ERROR: \"$cc\" either does not exist or does not work"
97
    exit 1
98
fi
99

    
100
check_define() {
101
cat > $TMPC <<EOF
102
#if !defined($1)
103
#error Not defined
104
#endif
105
int main(void) { return 0; }
106
EOF
107
  compile_object
108
}
109

    
110
if test ! -z "$cpu" ; then
111
  # command line argument
112
  :
113
elif check_define __i386__ ; then
114
  cpu="i386"
115
elif check_define __x86_64__ ; then
116
  cpu="x86_64"
117
elif check_define __sparc__ ; then
118
  # We can't check for 64 bit (when gcc is biarch) or V8PLUSA
119
  # They must be specified using --sparc_cpu
120
  if check_define __arch64__ ; then
121
    cpu="sparc64"
122
  else
123
    cpu="sparc"
124
  fi
125
elif check_define _ARCH_PPC ; then
126
  if check_define _ARCH_PPC64 ; then
127
    cpu="ppc64"
128
  else
129
    cpu="ppc"
130
  fi
131
else
132
  cpu=`uname -m`
133
fi
134

    
135
target_list=""
136
case "$cpu" in
137
  alpha|cris|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|sparc64)
138
    cpu="$cpu"
139
  ;;
140
  i386|i486|i586|i686|i86pc|BePC)
141
    cpu="i386"
142
  ;;
143
  x86_64|amd64)
144
    cpu="x86_64"
145
  ;;
146
  armv*b)
147
    cpu="armv4b"
148
  ;;
149
  armv*l)
150
    cpu="armv4l"
151
  ;;
152
  parisc|parisc64)
153
    cpu="hppa"
154
  ;;
155
  s390*)
156
    cpu="s390"
157
  ;;
158
  sparc|sun4[cdmuv])
159
    cpu="sparc"
160
  ;;
161
  *)
162
    cpu="unknown"
163
  ;;
164
esac
165
brlapi="yes"
166
gprof="no"
167
debug_tcg="no"
168
debug="no"
169
sparse="no"
170
strip_opt="yes"
171
bigendian="no"
172
mingw32="no"
173
EXESUF=""
174
slirp="yes"
175
vde="yes"
176
fmod_lib=""
177
fmod_inc=""
178
oss_lib=""
179
vnc_tls="yes"
180
vnc_sasl="yes"
181
bsd="no"
182
linux="no"
183
solaris="no"
184
kqemu="no"
185
profiler="no"
186
cocoa="no"
187
softmmu="yes"
188
linux_user="no"
189
darwin_user="no"
190
bsd_user="no"
191
guest_base=""
192
build_docs="yes"
193
uname_release=""
194
curses="yes"
195
curl="yes"
196
pthread="yes"
197
aio="yes"
198
io_thread="no"
199
nptl="yes"
200
mixemu="no"
201
bluez="yes"
202
kvm="no"
203
kerneldir=""
204
aix="no"
205
blobs="yes"
206
fdt="yes"
207
sdl="yes"
208
xen="yes"
209
pkgversion=""
210

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

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

    
349
if test "$mingw32" = "yes" ; then
350
  if [ "$cpu" = "i386" ] ; then
351
    kqemu="yes"
352
  fi
353
  EXESUF=".exe"
354
  CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $CFLAGS"
355
fi
356

    
357
# find source path
358
source_path=`dirname "$0"`
359
source_path_used="no"
360
workdir=`pwd`
361
if [ -z "$source_path" ]; then
362
    source_path=$workdir
363
else
364
    source_path=`cd "$source_path"; pwd`
365
fi
366
[ -f "$workdir/vl.c" ] || source_path_used="yes"
367

    
368
werror=""
369

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

    
512
#
513
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
514
# CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
515
#
516
host_guest_base="no"
517
case "$cpu" in
518
    sparc) case $sparc_cpu in
519
           v7|v8)
520
             CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $CFLAGS"
521
           ;;
522
           v8plus|v8plusa)
523
             CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $CFLAGS"
524
           ;;
525
           *) # sparc_cpu not defined in the command line
526
             CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $CFLAGS"
527
           esac
528
           LDFLAGS="-m32 $LDFLAGS"
529
           CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $CFLAGS"
530
           if test "$solaris" = "no" ; then
531
             CFLAGS="-ffixed-g1 -ffixed-g6 $CFLAGS"
532
           fi
533
           ;;
534
    sparc64)
535
           CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $CFLAGS"
536
           LDFLAGS="-m64 $LDFLAGS"
537
           CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $CFLAGS"
538
           if test "$solaris" != "no" ; then
539
             CFLAGS="-ffixed-g1 $CFLAGS"
540
           fi
541
           ;;
542
    s390)
543
           CFLAGS="-march=z900 $CFLAGS"
544
           ;;
545
    i386)
546
           CFLAGS="-m32 $CFLAGS"
547
           LDFLAGS="-m32 $LDFLAGS"
548
           host_guest_base="yes"
549
           ;;
550
    x86_64)
551
           CFLAGS="-m64 $CFLAGS"
552
           LDFLAGS="-m64 $LDFLAGS"
553
           host_guest_base="yes"
554
           ;;
555
    arm*)
556
           host_guest_base="yes"
557
           ;;
558
    ppc*)
559
           host_guest_base="yes"
560
           ;;
561
esac
562

    
563
[ -z "$guest_base" ] && guest_base="$host_guest_base"
564

    
565
if test x"$show_help" = x"yes" ; then
566
cat << EOF
567

    
568
Usage: configure [options]
569
Options: [defaults in brackets after descriptions]
570

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

    
642
if test ! -x "$(which cgcc 2>/dev/null)"; then
643
    sparse="no"
644
fi
645

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

    
673

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

    
741
if test -z "$cross_prefix" ; then
742

    
743
# ---
744
# big/little endian test
745
cat > $TMPC << EOF
746
#include <inttypes.h>
747
int main(int argc, char ** argv){
748
        volatile uint32_t i=0x01234567;
749
        return (*((uint8_t*)(&i))) == 0x67;
750
}
751
EOF
752

    
753
if compile_prog "" "" ; then
754
$TMPE && bigendian="yes"
755
else
756
echo big/little test failed
757
fi
758

    
759
else
760

    
761
# if cross compiling, cannot launch a program, so make a static guess
762
case "$cpu" in
763
  armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
764
    bigendian=yes
765
  ;;
766
esac
767

    
768
fi
769

    
770
# host long bits test
771
hostlongbits="32"
772
case "$cpu" in
773
  x86_64|alpha|ia64|sparc64|ppc64)
774
    hostlongbits=64
775
  ;;
776
esac
777

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

    
790
if compile_object ; then
791
  :
792
else
793
   nptl="no"
794
fi
795

    
796
##########################################
797
# zlib check
798

    
799
cat > $TMPC << EOF
800
#include <zlib.h>
801
int main(void) { zlibVersion(); return 0; }
802
EOF
803
if compile_prog "" "-lz" ; then
804
    :
805
else
806
    echo
807
    echo "Error: zlib check failed"
808
    echo "Make sure to have the zlib libs and headers installed."
809
    echo
810
    exit 1
811
fi
812

    
813
##########################################
814
# xen probe
815

    
816
if test "$xen" = "yes" ; then
817
  xen_libs="-lxenstore -lxenctrl -lxenguest"
818
  cat > $TMPC <<EOF
819
#include <xenctrl.h>
820
#include <xs.h>
821
int main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
822
EOF
823
  if compile_prog "" "$xen_libs" ; then
824
    :
825
  else
826
    xen="no"
827
  fi
828
fi
829

    
830
##########################################
831
# SDL probe
832

    
833
sdl_too_old=no
834

    
835
if test "$sdl" = "yes" ; then
836
  sdl=no
837
  cat > $TMPC << EOF
838
#include <SDL.h>
839
#undef main /* We don't want SDL to override our main() */
840
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
841
EOF
842
  sdl_cflags=`sdl-config --cflags 2> /dev/null`
843
  sdl_libs=`sdl-config --libs 2> /dev/null`
844
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
845
    _sdlversion=`sdl-config --version | sed 's/[^0-9]//g'`
846
    if test "$_sdlversion" -lt 121 ; then
847
      sdl_too_old=yes
848
    else
849
      if test "$cocoa" = "no" ; then
850
        sdl=yes
851
      fi
852
    fi
853

    
854
    # static link with sdl ?
855
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
856
      sdl_libs=`sdl-config --static-libs 2>/dev/null`
857
      if test `sdl-config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` ; then
858
         sdl_libs="$sdl_libs `aalib-config --static-libs >2 /dev/null`"
859
         sdl_cflags="$sd_cflags `aalib-config --cflags >2 /dev/null`"
860
      fi
861
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
862
	:
863
      else
864
        sdl=no
865
      fi
866
    fi # static link
867
  fi # sdl compile test
868
fi
869

    
870
if test "$sdl" = "yes" ; then
871
  cat > $TMPC <<EOF
872
#include <SDL.h>
873
#if defined(SDL_VIDEO_DRIVER_X11)
874
#include <X11/XKBlib.h>
875
#else
876
#error No x11 support
877
#endif
878
int main(void) { return 0; }
879
EOF
880
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
881
    sdl_libs="$sdl_libs -lX11"
882
  fi
883
fi
884

    
885
##########################################
886
# VNC TLS detection
887
if test "$vnc_tls" = "yes" ; then
888
cat > $TMPC <<EOF
889
#include <gnutls/gnutls.h>
890
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
891
EOF
892
    vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
893
    vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
894
    if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
895
	:
896
    else
897
	vnc_tls="no"
898
    fi
899
fi
900

    
901
##########################################
902
# VNC SASL detection
903
if test "$vnc_sasl" = "yes" ; then
904
cat > $TMPC <<EOF
905
#include <sasl/sasl.h>
906
#include <stdio.h>
907
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
908
EOF
909
    # Assuming Cyrus-SASL installed in /usr prefix
910
    vnc_sasl_cflags=""
911
    vnc_sasl_libs="-lsasl2"
912
    if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
913
	:
914
    else
915
	vnc_sasl="no"
916
    fi
917
fi
918

    
919
##########################################
920
# fnmatch() probe, used for ACL routines
921
fnmatch="no"
922
cat > $TMPC << EOF
923
#include <fnmatch.h>
924
int main(void)
925
{
926
    fnmatch("foo", "foo", 0);
927
    return 0;
928
}
929
EOF
930
if compile_prog "" "" ; then
931
   fnmatch="yes"
932
fi
933

    
934
##########################################
935
# vde libraries probe
936
if test "$vde" = "yes" ; then
937
  vde=no
938
  vde_libs="-lvdeplug"
939
  cat > $TMPC << EOF
940
#include <libvdeplug.h>
941
int main(void)
942
{
943
    struct vde_open_args a = {0, 0, 0};
944
    vde_open("", "", &a);
945
    return 0;
946
}
947
EOF
948
  if compile_prog "" "$vde_libs" ; then
949
    vde=yes
950
  fi
951
fi
952

    
953
##########################################
954
# Sound support libraries probe
955

    
956
audio_drv_probe()
957
{
958
    drv=$1
959
    hdr=$2
960
    lib=$3
961
    exp=$4
962
    cfl=$5
963
        cat > $TMPC << EOF
964
#include <$hdr>
965
int main(void) { $exp }
966
EOF
967
    if compile_prog "$cfl" "$lib" ; then
968
        :
969
    else
970
        echo
971
        echo "Error: $drv check failed"
972
        echo "Make sure to have the $drv libs and headers installed."
973
        echo
974
        exit 1
975
    fi
976
}
977

    
978
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
979
for drv in $audio_drv_list; do
980
    case $drv in
981
    alsa)
982
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
983
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
984
    ;;
985

    
986
    fmod)
987
    if test -z $fmod_lib || test -z $fmod_inc; then
988
        echo
989
        echo "Error: You must specify path to FMOD library and headers"
990
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
991
        echo
992
        exit 1
993
    fi
994
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
995
    ;;
996

    
997
    esd)
998
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
999
    ;;
1000

    
1001
    pa)
1002
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
1003
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1004
    ;;
1005

    
1006
    oss|sdl|core|wav|dsound)
1007
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
1008
    ;;
1009

    
1010
    *)
1011
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
1012
        echo
1013
        echo "Error: Unknown driver '$drv' selected"
1014
        echo "Possible drivers are: $audio_possible_drivers"
1015
        echo
1016
        exit 1
1017
    }
1018
    ;;
1019
    esac
1020
done
1021

    
1022
##########################################
1023
# BrlAPI probe
1024

    
1025
if test "$brlapi" = "yes" ; then
1026
  brlapi=no
1027
  brlapi_libs="-lbrlapi"
1028
  cat > $TMPC << EOF
1029
#include <brlapi.h>
1030
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
1031
EOF
1032
  if compile_prog "" "$brlapi_libs" ; then
1033
    brlapi=yes
1034
  fi
1035
fi
1036

    
1037
##########################################
1038
# curses probe
1039

    
1040
if test "$curses" = "yes" ; then
1041
  cat > $TMPC << EOF
1042
#include <curses.h>
1043
#ifdef __OpenBSD__
1044
#define resize_term resizeterm
1045
#endif
1046
int main(void) { resize_term(0, 0); return curses_version(); }
1047
EOF
1048
  if compile_prog "" "-lncurses" ; then
1049
    curses_libs="-lncurses"
1050
  elif compile_prog "" "-lcurses" ; then
1051
    curses_libs="-lcurses"
1052
  else
1053
    curses=no
1054
  fi
1055
fi # test "$curses"
1056

    
1057
##########################################
1058
# curl probe
1059

    
1060
if test "$curl" = "yes" ; then
1061
  curl=no
1062
  cat > $TMPC << EOF
1063
#include <curl/curl.h>
1064
int main(void) { return curl_easy_init(); }
1065
EOF
1066
  curl_cflags=`curl-config --cflags 2>/dev/null`
1067
  curl_libs=`curl-config --libs 2>/dev/null`
1068
  if compile_prog "$curl_cflags" "$curl_libs" ; then
1069
    curl=yes
1070
  fi
1071
fi # test "$curl"
1072

    
1073
##########################################
1074
# bluez support probe
1075
if test "$bluez" = "yes" ; then
1076
  `pkg-config bluez 2> /dev/null` || bluez="no"
1077
fi
1078
if test "$bluez" = "yes" ; then
1079
  cat > $TMPC << EOF
1080
#include <bluetooth/bluetooth.h>
1081
int main(void) { return bt_error(0); }
1082
EOF
1083
  bluez_cflags=`pkg-config --cflags bluez 2> /dev/null`
1084
  bluez_libs=`pkg-config --libs bluez 2> /dev/null`
1085
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1086
    :
1087
  else
1088
    bluez="no"
1089
  fi
1090
fi
1091

    
1092
##########################################
1093
# kvm probe
1094
if test "$kvm" = "yes" ; then
1095
    cat > $TMPC <<EOF
1096
#include <linux/kvm.h>
1097
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
1098
#error Invalid KVM version
1099
#endif
1100
#if !defined(KVM_CAP_USER_MEMORY)
1101
#error Missing KVM capability KVM_CAP_USER_MEMORY
1102
#endif
1103
#if !defined(KVM_CAP_SET_TSS_ADDR)
1104
#error Missing KVM capability KVM_CAP_SET_TSS_ADDR
1105
#endif
1106
#if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
1107
#error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS
1108
#endif
1109
int main(void) { return 0; }
1110
EOF
1111
  if test "$kerneldir" != "" ; then
1112
      kvm_cflags=-I"$kerneldir"/include
1113
      if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
1114
         -a -d "$kerneldir/arch/x86/include" ; then
1115
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
1116
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
1117
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
1118
        elif test -d "$kerneldir/arch/$cpu/include" ; then
1119
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
1120
      fi
1121
  else
1122
      kvm_cflags=""
1123
  fi
1124
  if compile_prog "$kvm_cflags" "" ; then
1125
    :
1126
  else
1127
    kvm="no";
1128
    if [ -x "`which awk 2>/dev/null`" ] && \
1129
       [ -x "`which grep 2>/dev/null`" ]; then
1130
      kvmerr=`LANG=C $cc $CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \
1131
	| grep "error: " \
1132
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
1133
      if test "$kvmerr" != "" ; then
1134
        kvm="no - (${kvmerr})\n\
1135
    NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
1136
recent kvm-kmod from http://sourceforge.net/projects/kvm."
1137
      fi
1138
    fi
1139
  fi
1140
fi
1141

    
1142
##########################################
1143
# pthread probe
1144
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1145
PTHREADLIBS=""
1146

    
1147
if test "$pthread" = yes; then
1148
  pthread=no
1149
cat > $TMPC << EOF
1150
#include <pthread.h>
1151
int main(void) { pthread_create(0,0,0,0); return 0; }
1152
EOF
1153
  for pthread_lib in $PTHREADLIBS_LIST; do
1154
    if compile_prog "" "$pthread_lib" ; then
1155
      pthread=yes
1156
      PTHREADLIBS="$pthread_lib"
1157
      break
1158
    fi
1159
  done
1160
fi
1161

    
1162
if test "$pthread" = no; then
1163
   aio=no
1164
   io_thread=no
1165
fi
1166

    
1167
##########################################
1168
# iovec probe
1169
cat > $TMPC <<EOF
1170
#include <sys/types.h>
1171
#include <sys/uio.h>
1172
#include <unistd.h>
1173
int main(void) { struct iovec iov; return 0; }
1174
EOF
1175
iovec=no
1176
if compile_prog "" "" ; then
1177
  iovec=yes
1178
fi
1179

    
1180
##########################################
1181
# preadv probe
1182
cat > $TMPC <<EOF
1183
#include <sys/types.h>
1184
#include <sys/uio.h>
1185
#include <unistd.h>
1186
int main(void) { preadv; }
1187
EOF
1188
preadv=no
1189
if compile_prog "" "" ; then
1190
  preadv=yes
1191
fi
1192

    
1193
##########################################
1194
# fdt probe
1195
if test "$fdt" = "yes" ; then
1196
  fdt=no
1197
  fdt_libs="-lfdt"
1198
  cat > $TMPC << EOF
1199
int main(void) { return 0; }
1200
EOF
1201
  if compile_prog "" "$fdt_libs" ; then
1202
    fdt=yes
1203
  fi
1204
fi
1205

    
1206
#
1207
# Check for xxxat() functions when we are building linux-user
1208
# emulator.  This is done because older glibc versions don't
1209
# have syscall stubs for these implemented.
1210
#
1211
atfile=no
1212
cat > $TMPC << EOF
1213
#define _ATFILE_SOURCE
1214
#include <sys/types.h>
1215
#include <fcntl.h>
1216
#include <unistd.h>
1217

    
1218
int
1219
main(void)
1220
{
1221
	/* try to unlink nonexisting file */
1222
	return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
1223
}
1224
EOF
1225
if compile_prog "" "" ; then
1226
  atfile=yes
1227
fi
1228

    
1229
# Check for inotify functions when we are building linux-user
1230
# emulator.  This is done because older glibc versions don't
1231
# have syscall stubs for these implemented.  In that case we
1232
# don't provide them even if kernel supports them.
1233
#
1234
inotify=no
1235
cat > $TMPC << EOF
1236
#include <sys/inotify.h>
1237

    
1238
int
1239
main(void)
1240
{
1241
	/* try to start inotify */
1242
	return inotify_init();
1243
}
1244
EOF
1245
if compile_prog "" "" ; then
1246
  inotify=yes
1247
fi
1248

    
1249
# check if utimensat and futimens are supported
1250
utimens=no
1251
cat > $TMPC << EOF
1252
#define _ATFILE_SOURCE
1253
#define _GNU_SOURCE
1254
#include <stddef.h>
1255
#include <fcntl.h>
1256

    
1257
int main(void)
1258
{
1259
    utimensat(AT_FDCWD, "foo", NULL, 0);
1260
    futimens(0, NULL);
1261
    return 0;
1262
}
1263
EOF
1264
if compile_prog "" "" ; then
1265
  utimens=yes
1266
fi
1267

    
1268
# check if pipe2 is there
1269
pipe2=no
1270
cat > $TMPC << EOF
1271
#define _GNU_SOURCE
1272
#include <unistd.h>
1273
#include <fcntl.h>
1274

    
1275
int main(void)
1276
{
1277
    int pipefd[2];
1278
    pipe2(pipefd, O_CLOEXEC);
1279
    return 0;
1280
}
1281
EOF
1282
if compile_prog "" "" ; then
1283
  pipe2=yes
1284
fi
1285

    
1286
# check if tee/splice is there. vmsplice was added same time.
1287
splice=no
1288
cat > $TMPC << EOF
1289
#define _GNU_SOURCE
1290
#include <unistd.h>
1291
#include <fcntl.h>
1292
#include <limits.h>
1293

    
1294
int main(void)
1295
{
1296
    int len, fd;
1297
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
1298
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
1299
    return 0;
1300
}
1301
EOF
1302
if compile_prog "" "" ; then
1303
  splice=yes
1304
fi
1305

    
1306
# Check if tools are available to build documentation.
1307
if test "$build_docs" = "yes" -a \( ! -x "`which texi2html 2>/dev/null`" -o ! -x "`which pod2man 2>/dev/null`" \) ; then
1308
  build_docs="no"
1309
fi
1310

    
1311
# Search for bsawp_32 function
1312
byteswap_h=no
1313
cat > $TMPC << EOF
1314
#include <byteswap.h>
1315
int main(void) { return bswap_32(0); }
1316
EOF
1317
if compile_prog "" "" ; then
1318
  byteswap_h=yes
1319
fi
1320

    
1321
# Search for bsawp_32 function
1322
bswap_h=no
1323
cat > $TMPC << EOF
1324
#include <sys/endian.h>
1325
#include <sys/types.h>
1326
#include <machine/bswap.h>
1327
int main(void) { return bswap32(0); }
1328
EOF
1329
if compile_prog "" "" ; then
1330
  bswap_h=yes
1331
fi
1332

    
1333
##########################################
1334
# Do we need librt
1335
cat > $TMPC <<EOF
1336
#include <signal.h>
1337
#include <time.h>
1338
int main(void) { clockid_t id; return clock_gettime(id, NULL); }
1339
EOF
1340

    
1341
if compile_prog "" "" ; then
1342
  CLOCKLIBS=""
1343
elif compile_prog "" "-lrt" ; then
1344
  CLOCKLIBS="-lrt"
1345
fi
1346

    
1347
# Determine what linker flags to use to force archive inclusion
1348
check_linker_flags()
1349
{
1350
    w2=
1351
    if test "$2" ; then
1352
	w2=-Wl,$2
1353
    fi
1354
    compile_prog "" "-Wl,$1 ${w2}"
1355
}
1356

    
1357
cat > $TMPC << EOF
1358
int main(void) { }
1359
EOF
1360
if check_linker_flags --whole-archive --no-whole-archive ; then
1361
    # GNU ld
1362
    arlibs_begin="-Wl,--whole-archive"
1363
    arlibs_end="-Wl,--no-whole-archive"
1364
elif check_linker_flags -z,allextract -z,defaultextract ; then
1365
    # Solaris ld
1366
    arlibs_begin"=-Wl,-z,allextract"
1367
    arlibs_end="-Wl,-z,defaultextract"
1368
elif check_linker_flags -all_load ; then
1369
    # Mac OS X
1370
    arlibs_begin="-all_load"
1371
    arlibs_end=""
1372
else
1373
    echo "Error: your linker does not support --whole-archive or -z."
1374
    echo "Please report to qemu-devel@nongnu.org"
1375
    exit 1
1376
fi
1377

    
1378
# End of CC checks
1379
# After here, no more $cc or $ld runs
1380

    
1381
# default flags for all hosts
1382
CFLAGS="-g -fno-strict-aliasing $CFLAGS"
1383
if test "$debug" = "no" ; then
1384
  CFLAGS="-O2 $CFLAGS"
1385
fi
1386
CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls $CFLAGS"
1387
LDFLAGS="-g $LDFLAGS"
1388

    
1389
# Consult white-list to determine whether to enable werror
1390
# by default.  Only enable by default for git builds
1391
if test -z "$werror" ; then
1392
    z_version=`cut -f3 -d. $source_path/VERSION`
1393
    if test "$z_version" = "50" -a \
1394
        "$linux" = "yes" ; then
1395
        werror="yes"
1396
    else
1397
        werror="no"
1398
    fi
1399
fi
1400

    
1401
if test "$werror" = "yes" ; then
1402
    CFLAGS="-Werror $CFLAGS"
1403
fi
1404

    
1405
if test "$solaris" = "no" ; then
1406
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
1407
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
1408
    fi
1409
fi
1410

    
1411
if test "$mingw32" = "yes" ; then
1412
  if test -z "$prefix" ; then
1413
      prefix="c:/Program Files/Qemu"
1414
  fi
1415
  mansuffix=""
1416
  datasuffix=""
1417
  docsuffix=""
1418
  binsuffix=""
1419
else
1420
  if test -z "$prefix" ; then
1421
      prefix="/usr/local"
1422
  fi
1423
  mansuffix="/share/man"
1424
  datasuffix="/share/qemu"
1425
  docsuffix="/share/doc/qemu"
1426
  binsuffix="/bin"
1427
fi
1428

    
1429
echo "Install prefix    $prefix"
1430
echo "BIOS directory    $prefix$datasuffix"
1431
echo "binary directory  $prefix$binsuffix"
1432
if test "$mingw32" = "no" ; then
1433
echo "Manual directory  $prefix$mansuffix"
1434
echo "ELF interp prefix $interp_prefix"
1435
fi
1436
echo "Source path       $source_path"
1437
echo "C compiler        $cc"
1438
echo "Host C compiler   $host_cc"
1439
echo "CFLAGS            $CFLAGS"
1440
echo "LDFLAGS           $LDFLAGS"
1441
echo "make              $make"
1442
echo "install           $install"
1443
echo "host CPU          $cpu"
1444
echo "host big endian   $bigendian"
1445
echo "target list       $target_list"
1446
echo "tcg debug enabled $debug_tcg"
1447
echo "gprof enabled     $gprof"
1448
echo "sparse enabled    $sparse"
1449
echo "strip binaries    $strip_opt"
1450
echo "profiler          $profiler"
1451
echo "static build      $static"
1452
echo "-Werror enabled   $werror"
1453
if test "$darwin" = "yes" ; then
1454
    echo "Cocoa support     $cocoa"
1455
fi
1456
echo "SDL support       $sdl"
1457
echo "curses support    $curses"
1458
echo "curl support      $curl"
1459
echo "mingw32 support   $mingw32"
1460
echo "Audio drivers     $audio_drv_list"
1461
echo "Extra audio cards $audio_card_list"
1462
echo "Mixer emulation   $mixemu"
1463
echo "VNC TLS support   $vnc_tls"
1464
if test "$vnc_tls" = "yes" ; then
1465
    echo "    TLS CFLAGS    $vnc_tls_cflags"
1466
    echo "    TLS LIBS      $vnc_tls_libs"
1467
fi
1468
echo "VNC SASL support  $vnc_sasl"
1469
if test "$vnc_sasl" = "yes" ; then
1470
    echo "    SASL CFLAGS    $vnc_sasl_cflags"
1471
    echo "    SASL LIBS      $vnc_sasl_libs"
1472
fi
1473
if test -n "$sparc_cpu"; then
1474
    echo "Target Sparc Arch $sparc_cpu"
1475
fi
1476
echo "kqemu support     $kqemu"
1477
echo "xen support       $xen"
1478
echo "brlapi support    $brlapi"
1479
echo "Documentation     $build_docs"
1480
[ ! -z "$uname_release" ] && \
1481
echo "uname -r          $uname_release"
1482
echo "NPTL support      $nptl"
1483
echo "GUEST_BASE        $guest_base"
1484
echo "vde support       $vde"
1485
echo "AIO support       $aio"
1486
echo "IO thread         $io_thread"
1487
echo "Install blobs     $blobs"
1488
echo -e "KVM support       $kvm"
1489
echo "fdt support       $fdt"
1490
echo "preadv support    $preadv"
1491

    
1492
if test $sdl_too_old = "yes"; then
1493
echo "-> Your SDL version is too old - please upgrade to have SDL support"
1494
fi
1495

    
1496
config_host_mak="config-host.mak"
1497
config_host_h="config-host.h"
1498
config_host_ld="config-host.ld"
1499

    
1500
#echo "Creating $config_host_mak and $config_host_h"
1501

    
1502
test -f $config_host_h && mv $config_host_h ${config_host_h}~
1503

    
1504
echo "# Automatically generated by configure - do not modify" > $config_host_mak
1505
printf "# Configured with:" >> $config_host_mak
1506
printf " '%s'" "$0" "$@" >> $config_host_mak
1507
echo >> $config_host_mak
1508

    
1509
echo "CONFIG_QEMU_SHAREDIR=\"$prefix$datasuffix\"" >> $config_host_mak
1510

    
1511
case "$cpu" in
1512
  i386|x86_64|alpha|cris|hppa|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
1513
    ARCH=$cpu
1514
  ;;
1515
  armv4b|armv4l)
1516
    ARCH=arm
1517
  ;;
1518
  *)
1519
    echo "Unsupported CPU = $cpu"
1520
    exit 1
1521
  ;;
1522
esac
1523
echo "ARCH=$ARCH" >> $config_host_mak
1524
if test "$debug_tcg" = "yes" ; then
1525
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
1526
fi
1527
if test "$debug" = "yes" ; then
1528
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
1529
fi
1530
if test "$strip_opt" = "yes" ; then
1531
  echo "STRIP_OPT=-s" >> $config_host_mak
1532
fi
1533
if test "$bigendian" = "yes" ; then
1534
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
1535
fi
1536
echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
1537
if test "$mingw32" = "yes" ; then
1538
  echo "CONFIG_WIN32=y" >> $config_host_mak
1539
else
1540
  echo "CONFIG_POSIX=y" >> $config_host_mak
1541
fi
1542

    
1543
if test "$darwin" = "yes" ; then
1544
  echo "CONFIG_DARWIN=y" >> $config_host_mak
1545
fi
1546

    
1547
if test "$aix" = "yes" ; then
1548
  echo "CONFIG_AIX=y" >> $config_host_mak
1549
fi
1550

    
1551
if test "$solaris" = "yes" ; then
1552
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
1553
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
1554
  if test "$needs_libsunmath" = "yes" ; then
1555
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
1556
  fi
1557
fi
1558
if test "$gprof" = "yes" ; then
1559
  echo "TARGET_GPROF=yes" >> $config_host_mak
1560
fi
1561
if test "$static" = "yes" ; then
1562
  echo "CONFIG_STATIC=y" >> $config_host_mak
1563
  LDFLAGS="-static $LDFLAGS"
1564
fi
1565
if test $profiler = "yes" ; then
1566
  echo "CONFIG_PROFILER=y" >> $config_host_mak
1567
fi
1568
if test "$slirp" = "yes" ; then
1569
  echo "CONFIG_SLIRP=y" >> $config_host_mak
1570
fi
1571
if test "$vde" = "yes" ; then
1572
  echo "CONFIG_VDE=y" >> $config_host_mak
1573
  echo "VDE_LIBS=$vde_libs" >> $config_host_mak
1574
fi
1575
for card in $audio_card_list; do
1576
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1577
    echo "$def=y" >> $config_host_mak
1578
done
1579
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
1580
for drv in $audio_drv_list; do
1581
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1582
    echo "$def=y" >> $config_host_mak
1583
    if test "$drv" = "fmod"; then
1584
        echo "FMOD_LIBS=$fmod_lib" >> $config_host_mak
1585
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
1586
    elif test "$drv" = "oss"; then
1587
        echo "OSS_LIBS=$oss_lib" >> $config_host_mak
1588
    fi
1589
done
1590
if test "$mixemu" = "yes" ; then
1591
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
1592
fi
1593
if test "$vnc_tls" = "yes" ; then
1594
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
1595
  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
1596
  echo "VNC_TLS_LIBS=$vnc_tls_libs" >> $config_host_mak
1597
fi
1598
if test "$vnc_sasl" = "yes" ; then
1599
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
1600
  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
1601
  echo "VNC_SASL_LIBS=$vnc_sasl_libs" >> $config_host_mak
1602
fi
1603
if test "$fnmatch" = "yes" ; then
1604
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
1605
fi
1606
qemu_version=`head $source_path/VERSION`
1607
echo "VERSION=$qemu_version" >>$config_host_mak
1608
echo "PKGVERSION=$pkgversion" >>$config_host_mak
1609
echo "SRC_PATH=$source_path" >> $config_host_mak
1610
if [ "$source_path_used" = "yes" ]; then
1611
  echo "VPATH=$source_path" >> $config_host_mak
1612
fi
1613
echo "TARGET_DIRS=$target_list" >> $config_host_mak
1614
if [ "$build_docs" = "yes" ] ; then
1615
  echo "BUILD_DOCS=yes" >> $config_host_mak
1616
fi
1617
if test "$sdl" = "yes" ; then
1618
  echo "CONFIG_SDL=y" >> $config_host_mak
1619
  echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
1620
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
1621
fi
1622
if test "$cocoa" = "yes" ; then
1623
  echo "CONFIG_COCOA=y" >> $config_host_mak
1624
fi
1625
if test "$curses" = "yes" ; then
1626
  echo "CONFIG_CURSES=y" >> $config_host_mak
1627
  echo "CURSES_LIBS=$curses_libs" >> $config_host_mak
1628
fi
1629
if test "$atfile" = "yes" ; then
1630
  echo "CONFIG_ATFILE=y" >> $config_host_mak
1631
fi
1632
if test "$utimens" = "yes" ; then
1633
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
1634
fi
1635
if test "$pipe2" = "yes" ; then
1636
  echo "CONFIG_PIPE2=y" >> $config_host_mak
1637
fi
1638
if test "$splice" = "yes" ; then
1639
  echo "CONFIG_SPLICE=y" >> $config_host_mak
1640
fi
1641
if test "$inotify" = "yes" ; then
1642
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
1643
fi
1644
if test "$byteswap_h" = "yes" ; then
1645
  echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
1646
fi
1647
if test "$bswap_h" = "yes" ; then
1648
  echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
1649
fi
1650
if test "$curl" = "yes" ; then
1651
  echo "CONFIG_CURL=y" >> $config_host_mak
1652
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
1653
  echo "CURL_LIBS=$curl_libs" >> $config_host_mak
1654
fi
1655
if test "$brlapi" = "yes" ; then
1656
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
1657
  echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
1658
fi
1659
if test "$bluez" = "yes" ; then
1660
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
1661
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
1662
  echo "BLUEZ_LIBS=$bluez_libs" >> $config_host_mak
1663
fi
1664
if test "$xen" = "yes" ; then
1665
  echo "CONFIG_XEN=y" >> $config_host_mak
1666
  echo "XEN_LIBS=$xen_libs" >> $config_host_mak
1667
fi
1668
if test "$aio" = "yes" ; then
1669
  echo "CONFIG_AIO=y" >> $config_host_mak
1670
fi
1671
if test "$io_thread" = "yes" ; then
1672
  echo "CONFIG_IOTHREAD=y" >> $config_host_mak
1673
fi
1674
if test "$blobs" = "yes" ; then
1675
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
1676
fi
1677
if test "$iovec" = "yes" ; then
1678
  echo "CONFIG_IOVEC=y" >> $config_host_mak
1679
fi
1680
if test "$preadv" = "yes" ; then
1681
  echo "CONFIG_PREADV=y" >> $config_host_mak
1682
fi
1683
if test "$fdt" = "yes" ; then
1684
  echo "CONFIG_FDT=y" >> $config_host_mak
1685
  echo "FDT_LIBS=$fdt_libs" >> $config_host_mak
1686
fi
1687

    
1688
# XXX: suppress that
1689
if [ "$bsd" = "yes" ] ; then
1690
  echo "CONFIG_BSD=y" >> $config_host_mak
1691
fi
1692

    
1693
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
1694

    
1695
# USB host support
1696
case "$usb" in
1697
linux)
1698
  echo "HOST_USB=linux" >> $config_host_mak
1699
;;
1700
bsd)
1701
  echo "HOST_USB=bsd" >> $config_host_mak
1702
;;
1703
*)
1704
  echo "HOST_USB=stub" >> $config_host_mak
1705
;;
1706
esac
1707

    
1708
tools=
1709
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1710
  tools="qemu-img\$(EXESUF) $tools"
1711
  if [ "$linux" = "yes" ] ; then
1712
      tools="qemu-nbd\$(EXESUF) qemu-io\$(EXESUF) $tools"
1713
  fi
1714
fi
1715
echo "TOOLS=$tools" >> $config_host_mak
1716

    
1717
# Mac OS X ships with a broken assembler
1718
roms=
1719
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
1720
        "$targetos" != "Darwin" ; then
1721
  roms="optionrom"
1722
fi
1723
echo "ROMS=$roms" >> $config_host_mak
1724

    
1725
echo "prefix=$prefix" >> $config_host_mak
1726
echo "bindir=\${prefix}$binsuffix" >> $config_host_mak
1727
echo "mandir=\${prefix}$mansuffix" >> $config_host_mak
1728
echo "datadir=\${prefix}$datasuffix" >> $config_host_mak
1729
echo "docdir=\${prefix}$docsuffix" >> $config_host_mak
1730
echo "MAKE=$make" >> $config_host_mak
1731
echo "INSTALL=$install" >> $config_host_mak
1732
echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak
1733
echo "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak
1734
echo "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak
1735
echo "CC=$cc" >> $config_host_mak
1736
echo "HOST_CC=$host_cc" >> $config_host_mak
1737
if test "$sparse" = "yes" ; then
1738
  echo "CC      := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
1739
  echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
1740
  echo "CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
1741
fi
1742
echo "AR=$ar" >> $config_host_mak
1743
echo "OBJCOPY=$objcopy" >> $config_host_mak
1744
echo "LD=$ld" >> $config_host_mak
1745
echo "CFLAGS=$CFLAGS" >> $config_host_mak
1746
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
1747
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
1748
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
1749
echo "EXESUF=$EXESUF" >> $config_host_mak
1750
echo "PTHREADLIBS=$PTHREADLIBS" >> $config_host_mak
1751
echo "CLOCKLIBS=$CLOCKLIBS" >> $config_host_mak
1752

    
1753
echo "/* Automatically generated by configure - do not modify */" > $config_host_h
1754

    
1755
$SHELL $source_path/create_config < $config_host_mak >> $config_host_h
1756

    
1757
if test -f ${config_host_h}~ ; then
1758
  if cmp -s $config_host_h ${config_host_h}~ ; then
1759
    mv ${config_host_h}~ $config_host_h
1760
  else
1761
    rm ${config_host_h}~
1762
  fi
1763
fi
1764

    
1765
# generate list of library paths for linker script
1766

    
1767
$ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld}
1768

    
1769
if test -f ${config_host_ld}~ ; then
1770
  if cmp -s $config_host_ld ${config_host_ld}~ ; then
1771
    mv ${config_host_ld}~ $config_host_ld
1772
  else
1773
    rm ${config_host_ld}~
1774
  fi
1775
fi
1776

    
1777
for target in $target_list; do
1778
target_dir="$target"
1779
config_mak=$target_dir/config.mak
1780
config_h=$target_dir/config.h
1781
target_arch2=`echo $target | cut -d '-' -f 1`
1782
target_bigendian="no"
1783
case "$target_arch2" in
1784
  armeb|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|sh4eb|sparc|sparc64|sparc32plus)
1785
  target_bigendian=yes
1786
  ;;
1787
esac
1788
target_softmmu="no"
1789
target_user_only="no"
1790
target_linux_user="no"
1791
target_darwin_user="no"
1792
target_bsd_user="no"
1793
case "$target" in
1794
  ${target_arch2}-softmmu)
1795
    target_softmmu="yes"
1796
    ;;
1797
  ${target_arch2}-linux-user)
1798
    target_user_only="yes"
1799
    target_linux_user="yes"
1800
    ;;
1801
  ${target_arch2}-darwin-user)
1802
    target_user_only="yes"
1803
    target_darwin_user="yes"
1804
    ;;
1805
  ${target_arch2}-bsd-user)
1806
    target_user_only="yes"
1807
    target_bsd_user="yes"
1808
    ;;
1809
  *)
1810
    echo "ERROR: Target '$target' not recognised"
1811
    exit 1
1812
    ;;
1813
esac
1814

    
1815
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1816

    
1817
test -f $config_h && mv $config_h ${config_h}~
1818

    
1819
mkdir -p $target_dir
1820
mkdir -p $target_dir/fpu
1821
mkdir -p $target_dir/tcg
1822
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
1823
  mkdir -p $target_dir/nwfpe
1824
fi
1825

    
1826
#
1827
# don't use ln -sf as not all "ln -sf" over write the file/link
1828
#
1829
rm -f $target_dir/Makefile
1830
ln -s $source_path/Makefile.target $target_dir/Makefile
1831

    
1832

    
1833
echo "# Automatically generated by configure - do not modify" > $config_mak
1834

    
1835
echo "include ../config-host.mak" >> $config_mak
1836

    
1837
bflt="no"
1838
elfload32="no"
1839
target_nptl="no"
1840
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
1841
echo "CONFIG_QEMU_PREFIX=\"$interp_prefix1\"" >> $config_mak
1842
gdb_xml_files=""
1843

    
1844
TARGET_ARCH="$target_arch2"
1845
TARGET_BASE_ARCH=""
1846
TARGET_ABI_DIR=""
1847

    
1848
case "$target_arch2" in
1849
  i386)
1850
    target_phys_bits=32
1851
  ;;
1852
  x86_64)
1853
    TARGET_BASE_ARCH=i386
1854
    target_phys_bits=64
1855
  ;;
1856
  alpha)
1857
    target_phys_bits=64
1858
  ;;
1859
  arm|armeb)
1860
    TARGET_ARCH=arm
1861
    bflt="yes"
1862
    target_nptl="yes"
1863
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1864
    target_phys_bits=32
1865
  ;;
1866
  cris)
1867
    target_nptl="yes"
1868
    target_phys_bits=32
1869
  ;;
1870
  m68k)
1871
    bflt="yes"
1872
    gdb_xml_files="cf-core.xml cf-fp.xml"
1873
    target_phys_bits=32
1874
  ;;
1875
  microblaze)
1876
    bflt="yes"
1877
    target_nptl="yes"
1878
    target_phys_bits=32
1879
  ;;
1880
  mips|mipsel)
1881
    TARGET_ARCH=mips
1882
    echo "TARGET_ABI_MIPSO32=y" >> $config_mak
1883
    target_nptl="yes"
1884
    target_phys_bits=64
1885
  ;;
1886
  mipsn32|mipsn32el)
1887
    TARGET_ARCH=mipsn32
1888
    TARGET_BASE_ARCH=mips
1889
    echo "TARGET_ABI_MIPSN32=y" >> $config_mak
1890
    target_phys_bits=64
1891
  ;;
1892
  mips64|mips64el)
1893
    TARGET_ARCH=mips64
1894
    TARGET_BASE_ARCH=mips
1895
    echo "TARGET_ABI_MIPSN64=y" >> $config_mak
1896
    target_phys_bits=64
1897
  ;;
1898
  ppc)
1899
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1900
    target_phys_bits=32
1901
    target_nptl="yes"
1902
  ;;
1903
  ppcemb)
1904
    TARGET_BASE_ARCH=ppc
1905
    TARGET_ABI_DIR=ppc
1906
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1907
    target_phys_bits=64
1908
    target_nptl="yes"
1909
  ;;
1910
  ppc64)
1911
    TARGET_BASE_ARCH=ppc
1912
    TARGET_ABI_DIR=ppc
1913
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1914
    target_phys_bits=64
1915
  ;;
1916
  ppc64abi32)
1917
    TARGET_ARCH=ppc64
1918
    TARGET_BASE_ARCH=ppc
1919
    TARGET_ABI_DIR=ppc
1920
    echo "TARGET_ABI32=y" >> $config_mak
1921
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1922
    target_phys_bits=64
1923
  ;;
1924
  sh4|sh4eb)
1925
    TARGET_ARCH=sh4
1926
    bflt="yes"
1927
    target_nptl="yes"
1928
    target_phys_bits=32
1929
  ;;
1930
  sparc)
1931
    target_phys_bits=64
1932
  ;;
1933
  sparc64)
1934
    TARGET_BASE_ARCH=sparc
1935
    elfload32="yes"
1936
    target_phys_bits=64
1937
  ;;
1938
  sparc32plus)
1939
    TARGET_ARCH=sparc64
1940
    TARGET_BASE_ARCH=sparc
1941
    TARGET_ABI_DIR=sparc
1942
    echo "TARGET_ABI32=y" >> $config_mak
1943
    target_phys_bits=64
1944
  ;;
1945
  *)
1946
    echo "Unsupported target CPU"
1947
    exit 1
1948
  ;;
1949
esac
1950
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_mak
1951
echo "TARGET_ARCH2=$target_arch2" >> $config_mak
1952
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
1953
if [ "$TARGET_BASE_ARCH" = "" ]; then
1954
  TARGET_BASE_ARCH=$TARGET_ARCH
1955
fi
1956
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_mak
1957
if [ "$TARGET_ABI_DIR" = "" ]; then
1958
  TARGET_ABI_DIR=$TARGET_ARCH
1959
fi
1960
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_mak
1961
if [ $target_phys_bits -lt $hostlongbits ] ; then
1962
  target_phys_bits=$hostlongbits
1963
fi
1964
case "$target_arch2" in
1965
  i386|x86_64)
1966
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
1967
      echo "CONFIG_XEN=y" >> $config_mak
1968
    fi
1969
    if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1970
    then
1971
      echo "CONFIG_KQEMU=y" >> $config_mak
1972
    fi
1973
esac
1974
case "$target_arch2" in
1975
  i386|x86_64|ppcemb|ppc|ppc64)
1976
    # Make sure the target and host cpus are compatible
1977
    if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
1978
      \( "$target_arch2" = "$cpu" -o \
1979
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \
1980
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
1981
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
1982
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
1983
      echo "CONFIG_KVM=y" >> $config_mak
1984
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1985
    fi
1986
esac
1987
echo "HWLIB=../libhw$target_phys_bits/libqemuhw$target_phys_bits.a" >> $config_mak
1988
echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_mak
1989
echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
1990
if test "$target_bigendian" = "yes" ; then
1991
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_mak
1992
fi
1993
if test "$target_softmmu" = "yes" ; then
1994
  echo "CONFIG_SOFTMMU=y" >> $config_mak
1995
fi
1996
if test "$target_user_only" = "yes" ; then
1997
  echo "CONFIG_USER_ONLY=y" >> $config_mak
1998
fi
1999
if test "$target_linux_user" = "yes" ; then
2000
  echo "CONFIG_LINUX_USER=y" >> $config_mak
2001
fi
2002
if test "$target_darwin_user" = "yes" ; then
2003
  echo "CONFIG_DARWIN_USER=y" >> $config_mak
2004
fi
2005
list=""
2006
if test ! -z "$gdb_xml_files" ; then
2007
  for x in $gdb_xml_files; do
2008
    list="$list $source_path/gdb-xml/$x"
2009
  done
2010
fi
2011
echo "TARGET_XML_FILES=$list" >> $config_mak
2012

    
2013
case "$target_arch2" in
2014
  arm|armeb|m68k|microblaze|mips|mipsel|mipsn32|mipsn32el|mips64|mips64el|ppc|ppc64|ppc64abi32|ppcemb|sparc|sparc64|sparc32plus)
2015
    echo "CONFIG_SOFTFLOAT=y" >> $config_mak
2016
    ;;
2017
esac
2018

    
2019
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
2020
  echo "TARGET_HAS_BFLT=y" >> $config_mak
2021
fi
2022
if test "$target_user_only" = "yes" \
2023
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
2024
  echo "CONFIG_USE_NPTL=y" >> $config_mak
2025
fi
2026
# 32 bit ELF loader in addition to native 64 bit loader?
2027
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
2028
  echo "TARGET_HAS_ELFLOAD32=y" >> $config_mak
2029
fi
2030
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
2031
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_mak
2032
fi
2033
if test "$target_bsd_user" = "yes" ; then
2034
  echo "CONFIG_BSD_USER=y" >> $config_mak
2035
fi
2036

    
2037
# generate LDFLAGS for targets
2038

    
2039
ldflags=""
2040
if test "$target_linux_user" = "yes" -o "$target_linux_user" = "yes" ; then
2041
  case "$ARCH" in
2042
  i386)
2043
    if test "$gprof" = "yes" -o "$static" = "yes" ; then
2044
      ldflags='-Wl,-T../config-host.ld -Wl,-T,$(SRC_PATH)/$(ARCH).ld'
2045
    else
2046
      # WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
2047
      # that the kernel ELF loader considers as an executable. I think this
2048
      # is the simplest way to make it self virtualizable!
2049
      ldflags='-Wl,-shared'
2050
    fi
2051
    ;;
2052
  sparc)
2053
    # -static is used to avoid g1/g3 usage by the dynamic linker
2054
    ldflags='-Wl,-T../config-host.ld -Wl,-T,$(SRC_PATH)/$(ARCH).ld -static'
2055
    ;;
2056
  ia64)
2057
    ldflags='-Wl,-G0 -Wl,-T../config-host.ld -Wl,-T,$(SRC_PATH)/$(ARCH).ld -static'
2058
    ;;
2059
  x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64)
2060
    ldflags='-Wl,-T../config-host.ld -Wl,-T,$(SRC_PATH)/$(ARCH).ld'
2061
    ;;
2062
  esac
2063
fi
2064
if test "$target_softmmu" = "yes" ; then
2065
  case "$ARCH" in
2066
  ia64)
2067
    ldflags='-Wl,-G0 -Wl,-T../config-host.ld -Wl,-T,$(SRC_PATH)/$(ARCH).ld -static'
2068
    ;;
2069
  esac
2070
fi
2071

    
2072
if test "$ldflags" != "" ; then
2073
  echo "LDFLAGS+=$ldflags" >> $config_mak
2074
fi
2075

    
2076
echo "/* Automatically generated by configure - do not modify */" > $config_h
2077
echo "#include \"../config-host.h\"" >> $config_h
2078

    
2079
$SHELL $source_path/create_config < $config_mak >> $config_h
2080

    
2081
if test -f ${config_h}~ ; then
2082
  if cmp -s $config_h ${config_h}~ ; then
2083
    mv ${config_h}~ $config_h
2084
  else
2085
    rm ${config_h}~
2086
  fi
2087
fi
2088

    
2089
done # for target in $targets
2090

    
2091
# build tree in object directory if source path is different from current one
2092
if test "$source_path_used" = "yes" ; then
2093
    DIRS="tests tests/cris slirp audio block pc-bios/optionrom"
2094
    FILES="Makefile tests/Makefile"
2095
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
2096
    FILES="$FILES tests/test-mmap.c"
2097
    FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps pc-bios/video.x"
2098
    for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
2099
        FILES="$FILES pc-bios/`basename $bios_file`"
2100
    done
2101
    for dir in $DIRS ; do
2102
            mkdir -p $dir
2103
    done
2104
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
2105
    for f in $FILES ; do
2106
        rm -f $f
2107
        ln -s $source_path/$f $f
2108
    done
2109
fi
2110

    
2111
for hwlib in 32 64; do
2112
  d=libhw$hwlib
2113
  mkdir -p $d
2114
  rm -f $d/Makefile
2115
  ln -s $source_path/Makefile.hw $d/Makefile
2116
  echo "HWLIB=libqemuhw$hwlib.a" > $d/config.mak
2117
  echo "CPPFLAGS=-DTARGET_PHYS_ADDR_BITS=$hwlib" >> $d/config.mak
2118
done