Statistics
| Branch: | Revision:

root / configure @ b8e59f18

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

    
19
# default parameters
20
prefix=""
21
interp_prefix="/usr/gnemul/qemu-%M"
22
static="no"
23
cross_prefix=""
24
cc="gcc"
25
gcc3_search="yes"
26
gcc3_list="gcc-3.4.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
27
audio_drv_list=""
28
audio_card_list=""
29
host_cc="gcc"
30
ar="ar"
31
make="make"
32
install="install"
33
strip="strip"
34
cpu=`uname -m`
35
target_list=""
36
case "$cpu" in
37
  i386|i486|i586|i686|i86pc|BePC)
38
    cpu="i386"
39
  ;;
40
  x86_64|amd64)
41
    cpu="x86_64"
42
  ;;
43
  alpha)
44
    cpu="alpha"
45
  ;;
46
  armv*b)
47
    cpu="armv4b"
48
  ;;
49
  armv*l)
50
    cpu="armv4l"
51
  ;;
52
  cris)
53
    cpu="cris"
54
  ;;
55
  parisc|parisc64)
56
    cpu="hppa"
57
  ;;
58
  ia64)
59
    cpu="ia64"
60
  ;;
61
  m68k)
62
    cpu="m68k"
63
  ;;
64
  mips)
65
    cpu="mips"
66
  ;;
67
  mips64)
68
    cpu="mips64"
69
  ;;
70
  "Power Macintosh"|ppc|ppc64)
71
    cpu="powerpc"
72
  ;;
73
  s390*)
74
    cpu="s390"
75
  ;;
76
  sparc|sun4[cdmuv])
77
    cpu="sparc"
78
  ;;
79
  sparc64)
80
    cpu="sparc64"
81
  ;;
82
  *)
83
    cpu="unknown"
84
  ;;
85
esac
86
gprof="no"
87
bigendian="no"
88
mingw32="no"
89
EXESUF=""
90
gdbstub="yes"
91
slirp="yes"
92
fmod_lib=""
93
fmod_inc=""
94
vnc_tls="yes"
95
bsd="no"
96
linux="no"
97
kqemu="no"
98
profiler="no"
99
cocoa="no"
100
check_gfx="yes"
101
check_gcc="yes"
102
softmmu="yes"
103
linux_user="no"
104
darwin_user="no"
105
build_docs="no"
106
uname_release=""
107
curses="yes"
108
nptl="yes"
109
mixemu="no"
110

    
111
# OS specific
112
targetos=`uname -s`
113
case $targetos in
114
CYGWIN*)
115
mingw32="yes"
116
OS_CFLAGS="-mno-cygwin"
117
if [ "$cpu" = "i386" ] ; then
118
    kqemu="yes"
119
fi
120
audio_possible_drivers="sdl"
121
;;
122
MINGW32*)
123
mingw32="yes"
124
if [ "$cpu" = "i386" ] ; then
125
    kqemu="yes"
126
fi
127
audio_possible_drivers="dsound sdl fmod"
128
;;
129
GNU/kFreeBSD)
130
audio_drv_list="oss"
131
audio_possible_drivers="oss sdl esd"
132
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
133
    kqemu="yes"
134
fi
135
;;
136
FreeBSD)
137
bsd="yes"
138
audio_drv_list="oss"
139
audio_possible_drivers="oss sdl esd"
140
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
141
    kqemu="yes"
142
fi
143
;;
144
NetBSD)
145
bsd="yes"
146
audio_drv_list="oss"
147
audio_possible_drivers="oss sdl esd"
148
;;
149
OpenBSD)
150
bsd="yes"
151
audio_drv_list="oss"
152
audio_possible_drivers="oss sdl esd"
153
;;
154
Darwin)
155
bsd="yes"
156
darwin="yes"
157
darwin_user="yes"
158
cocoa="yes"
159
audio_drv_list="coreaudio"
160
audio_possible_drivers="coreaudio sdl fmod"
161
OS_CFLAGS="-mdynamic-no-pic"
162
OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
163
;;
164
SunOS)
165
    solaris="yes"
166
    make="gmake"
167
    install="ginstall"
168
    needs_libsunmath="no"
169
    solarisrev=`uname -r | cut -f2 -d.`
170
    # have to select again, because `uname -m` returns i86pc
171
    # even on an x86_64 box.
172
    solariscpu=`isainfo -k`
173
    if test "${solariscpu}" = "amd64" ; then
174
        cpu="x86_64"
175
    fi
176
    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
177
        if test "$solarisrev" -le 9 ; then
178
            if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
179
                needs_libsunmath="yes"
180
            else
181
                echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
182
                echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
183
                echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
184
                echo "Studio 11 can be downloaded from www.sun.com."
185
                exit 1
186
            fi
187
        fi
188
        if test "$solarisrev" -ge 9 ; then
189
            kqemu="yes"
190
        fi
191
    fi
192
    if test -f /usr/include/sys/soundcard.h ; then
193
        audio_drv_list="oss"
194
    fi
195
    audio_possible_drivers="oss sdl"
196
;;
197
*)
198
audio_drv_list="oss"
199
audio_possible_drivers="oss alsa sdl esd pa"
200
linux="yes"
201
linux_user="yes"
202
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
203
    kqemu="yes"
204
    audio_possible_drivers="$audio_possible_drivers fmod"
205
fi
206
;;
207
esac
208

    
209
if [ "$bsd" = "yes" ] ; then
210
  if [ "$darwin" != "yes" ] ; then
211
    make="gmake"
212
  fi
213
fi
214

    
215
# find source path
216
source_path=`dirname "$0"`
217
source_path_used="no"
218
workdir=`pwd`
219
if [ -z "$source_path" ]; then
220
    source_path=$workdir
221
else
222
    source_path=`cd "$source_path"; pwd`
223
fi
224
[ -f "$workdir/vl.c" ] || source_path_used="yes"
225

    
226
werror="no"
227
# generate compile errors on warnings for development builds
228
#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
229
#werror="yes";
230
#fi
231

    
232
for opt do
233
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
234
  case "$opt" in
235
  --help|-h) show_help=yes
236
  ;;
237
  --prefix=*) prefix="$optarg"
238
  ;;
239
  --interp-prefix=*) interp_prefix="$optarg"
240
  ;;
241
  --source-path=*) source_path="$optarg"
242
  source_path_used="yes"
243
  ;;
244
  --cross-prefix=*) cross_prefix="$optarg"
245
  ;;
246
  --cc=*) cc="$optarg"
247
  gcc3_search="no"
248
  ;;
249
  --host-cc=*) host_cc="$optarg"
250
  ;;
251
  --make=*) make="$optarg"
252
  ;;
253
  --install=*) install="$optarg"
254
  ;;
255
  --extra-cflags=*) CFLAGS="$optarg"
256
  ;;
257
  --extra-ldflags=*) LDFLAGS="$optarg"
258
  ;;
259
  --cpu=*) cpu="$optarg"
260
  ;;
261
  --target-list=*) target_list="$optarg"
262
  ;;
263
  --enable-gprof) gprof="yes"
264
  ;;
265
  --static) static="yes"
266
  ;;
267
  --disable-sdl) sdl="no"
268
  ;;
269
  --fmod-lib=*) fmod_lib="$optarg"
270
  ;;
271
  --fmod-inc=*) fmod_inc="$optarg"
272
  ;;
273
  --audio-card-list=*) audio_card_list="$optarg"
274
  ;;
275
  --audio-drv-list=*) audio_drv_list="$optarg"
276
  ;;
277
  --disable-vnc-tls) vnc_tls="no"
278
  ;;
279
  --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
280
  ;;
281
  --disable-slirp) slirp="no"
282
  ;;
283
  --disable-kqemu) kqemu="no"
284
  ;;
285
  --disable-brlapi) brlapi="no"
286
  ;;
287
  --enable-profiler) profiler="yes"
288
  ;;
289
  --enable-cocoa)
290
      cocoa="yes" ;
291
      sdl="no" ;
292
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
293
  ;;
294
  --disable-gfx-check) check_gfx="no"
295
  ;;
296
  --disable-gcc-check) check_gcc="no"
297
  ;;
298
  --disable-system) softmmu="no"
299
  ;;
300
  --enable-system) softmmu="yes"
301
  ;;
302
  --disable-linux-user) linux_user="no"
303
  ;;
304
  --enable-linux-user) linux_user="yes"
305
  ;;
306
  --disable-darwin-user) darwin_user="no"
307
  ;;
308
  --enable-darwin-user) darwin_user="yes"
309
  ;;
310
  --enable-uname-release=*) uname_release="$optarg"
311
  ;;
312
  --sparc_cpu=*)
313
      sparc_cpu="$optarg"
314
      case $sparc_cpu in
315
        v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
316
                 target_cpu="sparc"; cpu="sparc" ;;
317
        v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
318
                 target_cpu="sparc"; cpu="sparc" ;;
319
        v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
320
                 target_cpu="sparc64"; cpu="sparc64" ;;
321
        *)     echo "undefined SPARC architecture. Exiting";exit 1;;
322
      esac
323
  ;;
324
  --enable-werror) werror="yes"
325
  ;;
326
  --disable-werror) werror="no"
327
  ;;
328
  --disable-curses) curses="no"
329
  ;;
330
  --disable-nptl) nptl="no"
331
  ;;
332
  --enable-mixemu) mixemu="yes"
333
  ;;
334
  *) echo "ERROR: unknown option $opt"; show_help="yes"
335
  ;;
336
  esac
337
done
338

    
339
if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
340
    AIOLIBS=
341
else
342
    # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
343
    AIOLIBS="-lrt -lpthread"
344
fi
345

    
346
# default flags for all hosts
347
CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
348
LDFLAGS="$LDFLAGS -g"
349
if test "$werror" = "yes" ; then
350
CFLAGS="$CFLAGS -Werror"
351
fi
352

    
353
#
354
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
355
# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
356
#
357
case "$cpu" in
358
    sparc) if test -z "$sparc_cpu" ; then
359
               ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
360
               ARCH_LDFLAGS="-m32"
361
           else
362
               ARCH_CFLAGS="${SP_CFLAGS}"
363
               ARCH_LDFLAGS="${SP_LDFLAGS}"
364
           fi
365
           ;;
366
    sparc64) if test -z "$sparc_cpu" ; then
367
               ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
368
               ARCH_LDFLAGS="-m64"
369
           else
370
               ARCH_CFLAGS="${SP_CFLAGS}"
371
               ARCH_LDFLAGS="${SP_LDFLAGS}"
372
           fi
373
           ;;
374
    s390)
375
           ARCH_CFLAGS="-march=z900"
376
           ;;
377
    i386)
378
           ARCH_CFLAGS="-m32"
379
           ARCH_LDFLAGS="-m32"
380
           ;;
381
    x86_64)
382
           ARCH_CFLAGS="-m64"
383
           ARCH_LDFLAGS="-m64"
384
           ;;
385
esac
386

    
387
if test x"$show_help" = x"yes" ; then
388
cat << EOF
389

    
390
Usage: configure [options]
391
Options: [defaults in brackets after descriptions]
392

    
393
EOF
394
echo "Standard options:"
395
echo "  --help                   print this message"
396
echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
397
echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
398
echo "                           use %M for cpu name [$interp_prefix]"
399
echo "  --target-list=LIST       set target list [$target_list]"
400
echo ""
401
echo "kqemu kernel acceleration support:"
402
echo "  --disable-kqemu          disable kqemu support"
403
echo ""
404
echo "Advanced options (experts only):"
405
echo "  --source-path=PATH       path of source code [$source_path]"
406
echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
407
echo "  --cc=CC                  use C compiler CC [$cc]"
408
echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
409
echo "  --make=MAKE              use specified make [$make]"
410
echo "  --install=INSTALL        use specified install [$install]"
411
echo "  --static                 enable static build [$static]"
412
echo "  --disable-werror         disable compilation abort on warning"
413
echo "  --disable-sdl            disable SDL"
414
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
415
echo "  --enable-mingw32         enable Win32 cross compilation with mingw32"
416
echo "  --audio-drv-list=LIST    set audio drivers list:"
417
echo "                           Available drivers: $audio_possible_drivers"
418
echo "  --audio-card-list=LIST   set list of additional emulated audio cards"
419
echo "                           Available cards: ac97 adlib cs4231a gus"
420
echo "  --enable-mixemu          enable mixer emulation"
421
echo "  --disable-brlapi         disable BrlAPI"
422
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
423
echo "  --disable-curses         disable curses output"
424
echo "  --disable-nptl           disable usermode NPTL support"
425
echo "  --enable-system          enable all system emulation targets"
426
echo "  --disable-system         disable all system emulation targets"
427
echo "  --enable-linux-user      enable all linux usermode emulation targets"
428
echo "  --disable-linux-user     disable all linux usermode emulation targets"
429
echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
430
echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
431
echo "  --fmod-lib               path to FMOD library"
432
echo "  --fmod-inc               path to FMOD includes"
433
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
434
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
435
echo ""
436
echo "NOTE: The object files are built at the place where configure is launched"
437
exit 1
438
fi
439

    
440
cc="${cross_prefix}${cc}"
441
ar="${cross_prefix}${ar}"
442
strip="${cross_prefix}${strip}"
443

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

    
449
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
450
  : C compiler works ok
451
else
452
    echo "ERROR: \"$cc\" either does not exist or does not work"
453
    exit 1
454
fi
455

    
456
if test "$mingw32" = "yes" ; then
457
    linux="no"
458
    EXESUF=".exe"
459
    oss="no"
460
fi
461

    
462
# Check for gcc4, error if pre-gcc4
463
if test "$check_gcc" = "yes" ; then
464
    cat > $TMPC <<EOF
465
#if __GNUC__ < 4
466
#error gcc3
467
#endif
468
int main(){return 0;}
469
EOF
470
    if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
471
	echo "WARNING: \"$cc\" looks like gcc 4.x"
472
	found_compat_cc="no"
473
	if test "$gcc3_search" = "yes" ; then
474
	    echo "Looking for gcc 3.x"
475
	    for compat_cc in $gcc3_list ; do
476
		if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
477
		    echo "Found \"$compat_cc\""
478
		    cc="$cross_prefix$compat_cc"
479
		    found_compat_cc="yes"
480
		    break
481
		fi
482
	    done
483
	    if test "$found_compat_cc" = "no" ; then
484
		echo "gcc 3.x not found!"
485
	    fi
486
	fi
487
	if test "$found_compat_cc" = "no" ; then
488
	    echo "QEMU is known to have problems when compiled with gcc 4.x"
489
	    echo "It is recommended that you use gcc 3.x to build QEMU"
490
	    echo "To use this compiler anyway, configure with --disable-gcc-check"
491
	    exit 1;
492
	fi
493
    fi
494
fi
495

    
496
#
497
# Solaris specific configure tool chain decisions
498
#
499
if test "$solaris" = "yes" ; then
500
  #
501
  # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
502
  # override the check with --disable-gcc-check
503
  #
504
  if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
505
    solgcc=`which $cc`
506
    if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
507
      echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
508
      echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
509
      echo "or get the latest patch from SunSolve for gcc"
510
      exit 1
511
    fi
512
  fi
513
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
514
  if test -z "$solinst" ; then
515
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
516
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
517
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
518
    exit 1
519
  fi
520
  if test "$solinst" = "/usr/sbin/install" ; then
521
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
522
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
523
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
524
    exit 1
525
  fi
526
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
527
  if test -z "$sol_ar" ; then
528
    echo "Error: No path includes ar"
529
    if test -f /usr/ccs/bin/ar ; then
530
      echo "Add /usr/ccs/bin to your path and rerun configure"
531
    fi
532
    exit 1
533
  fi
534
fi
535

    
536

    
537
if test -z "$target_list" ; then
538
# these targets are portable
539
    if [ "$softmmu" = "yes" ] ; then
540
        target_list="\
541
i386-softmmu \
542
x86_64-softmmu \
543
arm-softmmu \
544
cris-softmmu \
545
m68k-softmmu \
546
mips-softmmu \
547
mipsel-softmmu \
548
mips64-softmmu \
549
mips64el-softmmu \
550
ppc-softmmu \
551
ppcemb-softmmu \
552
ppc64-softmmu \
553
sh4-softmmu \
554
sh4eb-softmmu \
555
sparc-softmmu \
556
"
557
    fi
558
# the following are Linux specific
559
    if [ "$linux_user" = "yes" ] ; then
560
        target_list="${target_list}\
561
i386-linux-user \
562
x86_64-linux-user \
563
alpha-linux-user \
564
arm-linux-user \
565
armeb-linux-user \
566
cris-linux-user \
567
m68k-linux-user \
568
mips-linux-user \
569
mipsel-linux-user \
570
ppc-linux-user \
571
ppc64-linux-user \
572
ppc64abi32-linux-user \
573
sh4-linux-user \
574
sh4eb-linux-user \
575
sparc-linux-user \
576
sparc64-linux-user \
577
sparc32plus-linux-user \
578
"
579
    fi
580
# the following are Darwin specific
581
    if [ "$darwin_user" = "yes" ] ; then
582
        target_list="$target_list i386-darwin-user ppc-darwin-user"
583
    fi
584
else
585
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
586
fi
587
if test -z "$target_list" ; then
588
    echo "No targets enabled"
589
    exit 1
590
fi
591

    
592
if test -z "$cross_prefix" ; then
593

    
594
# ---
595
# big/little endian test
596
cat > $TMPC << EOF
597
#include <inttypes.h>
598
int main(int argc, char ** argv){
599
        volatile uint32_t i=0x01234567;
600
        return (*((uint8_t*)(&i))) == 0x67;
601
}
602
EOF
603

    
604
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
605
$TMPE && bigendian="yes"
606
else
607
echo big/little test failed
608
fi
609

    
610
else
611

    
612
# if cross compiling, cannot launch a program, so make a static guess
613
if test "$cpu" = "armv4b" \
614
     -o "$cpu" = "hppa" \
615
     -o "$cpu" = "m68k" \
616
     -o "$cpu" = "mips" \
617
     -o "$cpu" = "mips64" \
618
     -o "$cpu" = "powerpc" \
619
     -o "$cpu" = "s390" \
620
     -o "$cpu" = "sparc" \
621
     -o "$cpu" = "sparc64"; then
622
    bigendian="yes"
623
fi
624

    
625
fi
626

    
627
# host long bits test
628
hostlongbits="32"
629
if test "$cpu" = "x86_64" \
630
     -o "$cpu" = "alpha" \
631
     -o "$cpu" = "ia64" \
632
     -o "$cpu" = "sparc64"; then
633
    hostlongbits="64"
634
fi
635

    
636
# check gcc options support
637
cat > $TMPC <<EOF
638
int main(void) {
639
}
640
EOF
641

    
642
# Check host NPTL support
643
cat > $TMPC <<EOF
644
#include <sched.h>
645
#include <linux/futex.h>
646
void foo()
647
{
648
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
649
#error bork
650
#endif
651
}
652
EOF
653

    
654
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
655
  :
656
else
657
   nptl="no"
658
fi
659

    
660
##########################################
661
# SDL probe
662

    
663
sdl_too_old=no
664

    
665
if test -z "$sdl" ; then
666
    sdl_config="sdl-config"
667
    sdl=no
668
    sdl_static=no
669

    
670
    if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
671
    # win32 cross compilation case
672
        sdl_config="i386-mingw32msvc-sdl-config"
673
        sdl=yes
674
    else
675
        # normal SDL probe
676
cat > $TMPC << EOF
677
#include <SDL.h>
678
#undef main /* We don't want SDL to override our main() */
679
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
680
EOF
681
        if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
682
            _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
683
            if test "$_sdlversion" -lt 121 ; then
684
                sdl_too_old=yes
685
            else
686
                if test "$cocoa" = "no" ; then
687
                    sdl=yes
688
                fi
689
            fi
690

    
691
            # static link with sdl ?
692
            if test "$sdl" = "yes" ; then
693
                aa="no"
694
                `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
695
                sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
696
                if [ "$aa" = "yes" ] ; then
697
                    sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
698
                fi
699

    
700
                if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
701
                    sdl_static=yes
702
                fi
703
            fi # static link
704
        fi # sdl compile test
705
    fi # cross compilation
706
else
707
    # Make sure to disable cocoa if sdl was set
708
    if test "$sdl" = "yes" ; then
709
       cocoa="no"
710
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
711
    fi
712
fi # -z $sdl
713

    
714
##########################################
715
# VNC TLS detection
716
if test "$vnc_tls" = "yes" ; then
717
  `pkg-config gnutls` || vnc_tls="no"
718
fi
719
if test "$vnc_tls" = "yes" ; then
720
  vnc_tls_cflags=`pkg-config --cflags gnutls`
721
  vnc_tls_libs=`pkg-config --libs gnutls`
722
fi
723

    
724
##########################################
725
# Sound support libraries probe
726

    
727
audio_drv_probe()
728
{
729
    drv=$1
730
    hdr=$2
731
    lib=$3
732
    exp=$4
733
    cfl=$5
734
        cat > $TMPC << EOF
735
#include <$hdr>
736
int main(void) { $exp }
737
EOF
738
    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
739
        :
740
    else
741
        echo
742
        echo "Error: $drv check failed"
743
        echo "Make sure to have the $drv libs and headers installed."
744
        echo
745
        exit 1
746
    fi
747
}
748

    
749
for drv in $audio_drv_list; do
750
    case $drv in
751
    alsa)
752
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
753
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
754
    ;;
755

    
756
    fmod)
757
    if test -z $fmod_lib || test -z $fmod_inc; then
758
        echo
759
        echo "Error: You must specify path to FMOD library and headers"
760
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
761
        echo
762
        exit 1
763
    fi
764
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
765
    ;;
766

    
767
    esd)
768
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
769
    ;;
770

    
771
    pa)
772
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
773
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
774
    ;;
775

    
776
    esac
777
done
778

    
779
##########################################
780
# BrlAPI probe
781

    
782
if test -z "$brlapi" ; then
783
    brlapi=no
784
cat > $TMPC << EOF
785
#include <brlapi.h>
786
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
787
EOF
788
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
789
	    brlapi=yes
790
    fi # brlapi compile test
791
fi # -z $brlapi
792

    
793
##########################################
794
# curses probe
795

    
796
if test "$curses" = "yes" ; then
797
  curses=no
798
  cat > $TMPC << EOF
799
#include <curses.h>
800
int main(void) { return curses_version(); }
801
EOF
802
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
803
    curses=yes
804
  fi
805
fi # test "$curses"
806

    
807
# Check if tools are available to build documentation.
808
if [ -x "`which texi2html 2>/dev/null`" ] && \
809
   [ -x "`which pod2man 2>/dev/null`" ]; then
810
  build_docs="yes"
811
fi
812

    
813
if test "$mingw32" = "yes" ; then
814
  if test -z "$prefix" ; then
815
      prefix="/c/Program Files/Qemu"
816
  fi
817
  mansuffix=""
818
  datasuffix=""
819
  docsuffix=""
820
  binsuffix=""
821
else
822
  if test -z "$prefix" ; then
823
      prefix="/usr/local"
824
  fi
825
  mansuffix="/share/man"
826
  datasuffix="/share/qemu"
827
  docsuffix="/share/doc/qemu"
828
  binsuffix="/bin"
829
fi
830

    
831
echo "Install prefix    $prefix"
832
echo "BIOS directory    $prefix$datasuffix"
833
echo "binary directory  $prefix$binsuffix"
834
if test "$mingw32" = "no" ; then
835
echo "Manual directory  $prefix$mansuffix"
836
echo "ELF interp prefix $interp_prefix"
837
fi
838
echo "Source path       $source_path"
839
echo "C compiler        $cc"
840
echo "Host C compiler   $host_cc"
841
echo "ARCH_CFLAGS       $ARCH_CFLAGS"
842
echo "make              $make"
843
echo "install           $install"
844
echo "host CPU          $cpu"
845
echo "host big endian   $bigendian"
846
echo "target list       $target_list"
847
echo "gprof enabled     $gprof"
848
echo "profiler          $profiler"
849
echo "static build      $static"
850
echo "-Werror enabled   $werror"
851
if test "$darwin" = "yes" ; then
852
    echo "Cocoa support     $cocoa"
853
fi
854
echo "SDL support       $sdl"
855
if test "$sdl" != "no" ; then
856
    echo "SDL static link   $sdl_static"
857
fi
858
echo "curses support    $curses"
859
echo "mingw32 support   $mingw32"
860
echo "Audio drivers     $audio_drv_list"
861
echo "Extra audio cards $audio_card_list"
862
echo "Mixer emulation   $mixemu"
863
echo "VNC TLS support   $vnc_tls"
864
if test "$vnc_tls" = "yes" ; then
865
    echo "    TLS CFLAGS    $vnc_tls_cflags"
866
    echo "    TLS LIBS      $vnc_tls_libs"
867
fi
868
if test -n "$sparc_cpu"; then
869
    echo "Target Sparc Arch $sparc_cpu"
870
fi
871
echo "kqemu support     $kqemu"
872
echo "brlapi support    $brlapi"
873
echo "Documentation     $build_docs"
874
[ ! -z "$uname_release" ] && \
875
echo "uname -r          $uname_release"
876
echo "NPTL support      $nptl"
877

    
878
if test $sdl_too_old = "yes"; then
879
echo "-> Your SDL version is too old - please upgrade to have SDL support"
880
fi
881
if [ -s /tmp/qemu-$$-sdl-config.log ]; then
882
  echo "The error log from compiling the libSDL test is: "
883
  cat /tmp/qemu-$$-sdl-config.log
884
fi
885
rm -f /tmp/qemu-$$-sdl-config.log
886
#if test "$sdl_static" = "no"; then
887
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
888
#fi
889
config_mak="config-host.mak"
890
config_h="config-host.h"
891

    
892
#echo "Creating $config_mak and $config_h"
893

    
894
test -f $config_h && mv $config_h ${config_h}~
895

    
896
echo "# Automatically generated by configure - do not modify" > $config_mak
897
echo "# Configured with: $0 $@" >> $config_mak
898
echo "/* Automatically generated by configure - do not modify */" > $config_h
899

    
900
echo "prefix=$prefix" >> $config_mak
901
echo "bindir=\${prefix}$binsuffix" >> $config_mak
902
echo "mandir=\${prefix}$mansuffix" >> $config_mak
903
echo "datadir=\${prefix}$datasuffix" >> $config_mak
904
echo "docdir=\${prefix}$docsuffix" >> $config_mak
905
echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
906
echo "MAKE=$make" >> $config_mak
907
echo "INSTALL=$install" >> $config_mak
908
echo "CC=$cc" >> $config_mak
909
echo "HOST_CC=$host_cc" >> $config_mak
910
echo "AR=$ar" >> $config_mak
911
echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
912
# XXX: only use CFLAGS and LDFLAGS ?  
913
# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
914
# compilation of dyngen tool (useful for win32 build on Linux host)
915
echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
916
echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
917
echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
918
echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
919
echo "CFLAGS=$CFLAGS" >> $config_mak
920
echo "LDFLAGS=$LDFLAGS" >> $config_mak
921
echo "EXESUF=$EXESUF" >> $config_mak
922
echo "AIOLIBS=$AIOLIBS" >> $config_mak
923
case "$cpu" in
924
  i386)
925
    echo "ARCH=i386" >> $config_mak
926
    echo "#define HOST_I386 1" >> $config_h
927
  ;;
928
  x86_64)
929
    echo "ARCH=x86_64" >> $config_mak
930
    echo "#define HOST_X86_64 1" >> $config_h
931
  ;;
932
  alpha)
933
    echo "ARCH=alpha" >> $config_mak
934
    echo "#define HOST_ALPHA 1" >> $config_h
935
  ;;
936
  armv4b)
937
    echo "ARCH=arm" >> $config_mak
938
    echo "#define HOST_ARM 1" >> $config_h
939
  ;;
940
  armv4l)
941
    echo "ARCH=arm" >> $config_mak
942
    echo "#define HOST_ARM 1" >> $config_h
943
  ;;
944
  cris)
945
    echo "ARCH=cris" >> $config_mak
946
    echo "#define HOST_CRIS 1" >> $config_h
947
  ;;
948
  hppa)
949
    echo "ARCH=hppa" >> $config_mak
950
    echo "#define HOST_HPPA 1" >> $config_h
951
  ;;
952
  ia64)
953
    echo "ARCH=ia64" >> $config_mak
954
    echo "#define HOST_IA64 1" >> $config_h
955
  ;;
956
  m68k)
957
    echo "ARCH=m68k" >> $config_mak
958
    echo "#define HOST_M68K 1" >> $config_h
959
  ;;
960
  mips)
961
    echo "ARCH=mips" >> $config_mak
962
    echo "#define HOST_MIPS 1" >> $config_h
963
  ;;
964
  mips64)
965
    echo "ARCH=mips64" >> $config_mak
966
    echo "#define HOST_MIPS64 1" >> $config_h
967
  ;;
968
  powerpc)
969
    echo "ARCH=ppc" >> $config_mak
970
    echo "#define HOST_PPC 1" >> $config_h
971
  ;;
972
  s390)
973
    echo "ARCH=s390" >> $config_mak
974
    echo "#define HOST_S390 1" >> $config_h
975
  ;;
976
  sparc)
977
    echo "ARCH=sparc" >> $config_mak
978
    echo "#define HOST_SPARC 1" >> $config_h
979
  ;;
980
  sparc64)
981
    echo "ARCH=sparc64" >> $config_mak
982
    echo "#define HOST_SPARC64 1" >> $config_h
983
  ;;
984
  *)
985
    echo "Unsupported CPU = $cpu"
986
    exit 1
987
  ;;
988
esac
989
if test "$bigendian" = "yes" ; then
990
  echo "WORDS_BIGENDIAN=yes" >> $config_mak
991
  echo "#define WORDS_BIGENDIAN 1" >> $config_h
992
fi
993
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
994
if test "$mingw32" = "yes" ; then
995
  echo "CONFIG_WIN32=yes" >> $config_mak
996
  echo "#define CONFIG_WIN32 1" >> $config_h
997
else
998
  cat > $TMPC << EOF
999
#include <byteswap.h>
1000
int main(void) { return bswap_32(0); }
1001
EOF
1002
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1003
    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1004
  fi
1005
fi
1006
if test "$darwin" = "yes" ; then
1007
  echo "CONFIG_DARWIN=yes" >> $config_mak
1008
  echo "#define CONFIG_DARWIN 1" >> $config_h
1009
fi
1010
if test "$solaris" = "yes" ; then
1011
  echo "CONFIG_SOLARIS=yes" >> $config_mak
1012
  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1013
  if test "$needs_libsunmath" = "yes" ; then
1014
    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1015
    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1016
  fi
1017
fi
1018
if test -n "$sparc_cpu"; then
1019
  echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1020
  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1021
fi
1022
if test "$gdbstub" = "yes" ; then
1023
  echo "CONFIG_GDBSTUB=yes" >> $config_mak
1024
  echo "#define CONFIG_GDBSTUB 1" >> $config_h
1025
fi
1026
if test "$gprof" = "yes" ; then
1027
  echo "TARGET_GPROF=yes" >> $config_mak
1028
  echo "#define HAVE_GPROF 1" >> $config_h
1029
fi
1030
if test "$static" = "yes" ; then
1031
  echo "CONFIG_STATIC=yes" >> $config_mak
1032
  echo "#define CONFIG_STATIC 1" >> $config_h
1033
fi
1034
if test $profiler = "yes" ; then
1035
  echo "#define CONFIG_PROFILER 1" >> $config_h
1036
fi
1037
if test "$slirp" = "yes" ; then
1038
  echo "CONFIG_SLIRP=yes" >> $config_mak
1039
  echo "#define CONFIG_SLIRP 1" >> $config_h
1040
fi
1041
for card in $audio_card_list; do
1042
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1043
    echo "$def=yes" >> $config_mak
1044
    echo "#define $def 1" >> $config_h
1045
done
1046
echo "#define AUDIO_DRIVERS \\" >> $config_h
1047
for drv in $audio_drv_list; do
1048
    echo "    &${drv}_audio_driver, \\" >>$config_h
1049
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1050
    echo "$def=yes" >> $config_mak
1051
    if test "$drv" = "fmod"; then
1052
        echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1053
        echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1054
    fi
1055
done
1056
echo "" >>$config_h
1057
if test "$mixemu" = "yes" ; then
1058
  echo "CONFIG_MIXEMU=yes" >> $config_mak
1059
  echo "#define CONFIG_MIXEMU 1" >> $config_h
1060
fi
1061
if test "$vnc_tls" = "yes" ; then
1062
  echo "CONFIG_VNC_TLS=yes" >> $config_mak
1063
  echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1064
  echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1065
  echo "#define CONFIG_VNC_TLS 1" >> $config_h
1066
fi
1067
qemu_version=`head $source_path/VERSION`
1068
echo "VERSION=$qemu_version" >>$config_mak
1069
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1070

    
1071
echo "SRC_PATH=$source_path" >> $config_mak
1072
if [ "$source_path_used" = "yes" ]; then
1073
  echo "VPATH=$source_path" >> $config_mak
1074
fi
1075
echo "TARGET_DIRS=$target_list" >> $config_mak
1076
if [ "$build_docs" = "yes" ] ; then
1077
  echo "BUILD_DOCS=yes" >> $config_mak
1078
fi
1079
if test "$static" = "yes"; then
1080
  sdl1=$sdl_static
1081
else
1082
  sdl1=$sdl
1083
fi
1084
if test "$sdl1" = "yes" ; then
1085
  echo "#define CONFIG_SDL 1" >> $config_h
1086
  echo "CONFIG_SDL=yes" >> $config_mak
1087
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1088
    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1089
  else
1090
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1091
  fi
1092
  if [ "${aa}" = "yes" ] ; then
1093
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1094
  else
1095
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1096
  fi
1097
fi
1098
if test "$cocoa" = "yes" ; then
1099
  echo "#define CONFIG_COCOA 1" >> $config_h
1100
  echo "CONFIG_COCOA=yes" >> $config_mak
1101
fi
1102
if test "$curses" = "yes" ; then
1103
  echo "#define CONFIG_CURSES 1" >> $config_h
1104
  echo "CONFIG_CURSES=yes" >> $config_mak
1105
  echo "CURSES_LIBS=-lcurses" >> $config_mak
1106
fi
1107
if test "$brlapi" = "yes" ; then
1108
  echo "CONFIG_BRLAPI=yes" >> $config_mak
1109
  echo "#define CONFIG_BRLAPI 1" >> $config_h
1110
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1111
fi
1112

    
1113
# XXX: suppress that
1114
if [ "$bsd" = "yes" ] ; then
1115
  echo "#define O_LARGEFILE 0" >> $config_h
1116
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1117
  echo "#define _BSD 1" >> $config_h
1118
fi
1119

    
1120
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1121

    
1122
tools=
1123
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1124
  tools="qemu-img\$(EXESUF) $tools"
1125
  if [ "$linux" = "yes" ] ; then
1126
      tools="qemu-nbd\$(EXESUF) $tools"
1127
  fi
1128
fi
1129
echo "TOOLS=$tools" >> $config_mak
1130

    
1131
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1132

    
1133
for target in $target_list; do
1134
target_dir="$target"
1135
config_mak=$target_dir/config.mak
1136
config_h=$target_dir/config.h
1137
target_cpu=`echo $target | cut -d '-' -f 1`
1138
target_bigendian="no"
1139
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1140
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1141
[ "$target_cpu" = "mips" ] && target_bigendian=yes
1142
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1143
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1144
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1145
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1146
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1147
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1148
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1149
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1150
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1151
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1152
target_softmmu="no"
1153
target_user_only="no"
1154
target_linux_user="no"
1155
target_darwin_user="no"
1156
case "$target" in
1157
  ${target_cpu}-softmmu)
1158
    target_softmmu="yes"
1159
    ;;
1160
  ${target_cpu}-linux-user)
1161
    target_user_only="yes"
1162
    target_linux_user="yes"
1163
    ;;
1164
  ${target_cpu}-darwin-user)
1165
    target_user_only="yes"
1166
    target_darwin_user="yes"
1167
    ;;
1168
  *)
1169
    echo "ERROR: Target '$target' not recognised"
1170
    exit 1
1171
    ;;
1172
esac
1173

    
1174
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1175
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1176
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1177
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1178
    echo "Note that this will disable all output from the virtual graphics card"
1179
    echo "except through VNC or curses."
1180
    exit 1;
1181
fi
1182

    
1183
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1184

    
1185
test -f $config_h && mv $config_h ${config_h}~
1186

    
1187
mkdir -p $target_dir
1188
mkdir -p $target_dir/fpu
1189
mkdir -p $target_dir/tcg
1190
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1191
  mkdir -p $target_dir/nwfpe
1192
fi
1193

    
1194
#
1195
# don't use ln -sf as not all "ln -sf" over write the file/link
1196
#
1197
rm -f $target_dir/Makefile
1198
ln -s $source_path/Makefile.target $target_dir/Makefile
1199

    
1200

    
1201
echo "# Automatically generated by configure - do not modify" > $config_mak
1202
echo "/* Automatically generated by configure - do not modify */" > $config_h
1203

    
1204

    
1205
echo "include ../config-host.mak" >> $config_mak
1206
echo "#include \"../config-host.h\"" >> $config_h
1207

    
1208
bflt="no"
1209
elfload32="no"
1210
target_nptl="no"
1211
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1212
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1213

    
1214
case "$target_cpu" in
1215
  i386)
1216
    echo "TARGET_ARCH=i386" >> $config_mak
1217
    echo "#define TARGET_ARCH \"i386\"" >> $config_h
1218
    echo "#define TARGET_I386 1" >> $config_h
1219
    if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1220
    then
1221
      echo "#define USE_KQEMU 1" >> $config_h
1222
    fi
1223
    gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1224
    if test -n "$gcc3minver" && test $gcc3minver -gt 3
1225
    then
1226
      echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1227
    else
1228
      echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1229
    fi
1230
  ;;
1231
  x86_64)
1232
    echo "TARGET_ARCH=x86_64" >> $config_mak
1233
    echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1234
    echo "#define TARGET_I386 1" >> $config_h
1235
    echo "#define TARGET_X86_64 1" >> $config_h
1236
    if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1237
    then
1238
      echo "#define USE_KQEMU 1" >> $config_h
1239
    fi
1240
  ;;
1241
  alpha)
1242
    echo "TARGET_ARCH=alpha" >> $config_mak
1243
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1244
    echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1245
    echo "#define TARGET_ALPHA 1" >> $config_h
1246
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1247
  ;;
1248
  arm|armeb)
1249
    echo "TARGET_ARCH=arm" >> $config_mak
1250
    echo "#define TARGET_ARCH \"arm\"" >> $config_h
1251
    echo "#define TARGET_ARM 1" >> $config_h
1252
    bflt="yes"
1253
    target_nptl="yes"
1254
  ;;
1255
  cris)
1256
    echo "TARGET_ARCH=cris" >> $config_mak
1257
    echo "#define TARGET_ARCH \"cris\"" >> $config_h
1258
    echo "#define TARGET_CRIS 1" >> $config_h
1259
  ;;
1260
  m68k)
1261
    echo "TARGET_ARCH=m68k" >> $config_mak
1262
    echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1263
    echo "#define TARGET_M68K 1" >> $config_h
1264
    bflt="yes"
1265
  ;;
1266
  mips|mipsel)
1267
    echo "TARGET_ARCH=mips" >> $config_mak
1268
    echo "#define TARGET_ARCH \"mips\"" >> $config_h
1269
    echo "#define TARGET_MIPS 1" >> $config_h
1270
    echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1271
  ;;
1272
  mipsn32|mipsn32el)
1273
    echo "TARGET_ARCH=mipsn32" >> $config_mak
1274
    echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1275
    echo "#define TARGET_MIPS 1" >> $config_h
1276
    echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1277
  ;;
1278
  mips64|mips64el)
1279
    echo "TARGET_ARCH=mips64" >> $config_mak
1280
    echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1281
    echo "#define TARGET_MIPS 1" >> $config_h
1282
    echo "#define TARGET_MIPS64 1" >> $config_h
1283
    echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1284
  ;;
1285
  ppc)
1286
    echo "TARGET_ARCH=ppc" >> $config_mak
1287
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1288
    echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1289
    echo "#define TARGET_PPC 1" >> $config_h
1290
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1291
  ;;
1292
  ppcemb)
1293
    echo "TARGET_ARCH=ppcemb" >> $config_mak
1294
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1295
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1296
    echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1297
    echo "#define TARGET_PPC 1" >> $config_h
1298
    echo "#define TARGET_PPCEMB 1" >> $config_h
1299
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1300
  ;;
1301
  ppc64)
1302
    echo "TARGET_ARCH=ppc64" >> $config_mak
1303
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1304
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1305
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1306
    echo "#define TARGET_PPC 1" >> $config_h
1307
    echo "#define TARGET_PPC64 1" >> $config_h
1308
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1309
  ;;
1310
  ppc64abi32)
1311
    echo "TARGET_ARCH=ppc64" >> $config_mak
1312
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1313
    echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1314
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1315
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1316
    echo "#define TARGET_PPC 1" >> $config_h
1317
    echo "#define TARGET_PPC64 1" >> $config_h
1318
    echo "#define TARGET_ABI32 1" >> $config_h
1319
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1320
  ;;
1321
  sh4|sh4eb)
1322
    echo "TARGET_ARCH=sh4" >> $config_mak
1323
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1324
    echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1325
    echo "#define TARGET_SH4 1" >> $config_h
1326
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1327
    bflt="yes"
1328
  ;;
1329
  sparc)
1330
    echo "TARGET_ARCH=sparc" >> $config_mak
1331
    echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1332
    echo "#define TARGET_SPARC 1" >> $config_h
1333
  ;;
1334
  sparc64)
1335
    echo "TARGET_ARCH=sparc64" >> $config_mak
1336
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1337
    echo "#define TARGET_SPARC 1" >> $config_h
1338
    echo "#define TARGET_SPARC64 1" >> $config_h
1339
    elfload32="yes"
1340
  ;;
1341
  sparc32plus)
1342
    echo "TARGET_ARCH=sparc64" >> $config_mak
1343
    echo "TARGET_ABI_DIR=sparc" >> $config_mak
1344
    echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1345
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1346
    echo "#define TARGET_SPARC 1" >> $config_h
1347
    echo "#define TARGET_SPARC64 1" >> $config_h
1348
    echo "#define TARGET_ABI32 1" >> $config_h
1349
  ;;
1350
  *)
1351
    echo "Unsupported target CPU"
1352
    exit 1
1353
  ;;
1354
esac
1355
if test "$target_bigendian" = "yes" ; then
1356
  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1357
  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1358
fi
1359
if test "$target_softmmu" = "yes" ; then
1360
  echo "CONFIG_SOFTMMU=yes" >> $config_mak
1361
  echo "#define CONFIG_SOFTMMU 1" >> $config_h
1362
fi
1363
if test "$target_user_only" = "yes" ; then
1364
  echo "CONFIG_USER_ONLY=yes" >> $config_mak
1365
  echo "#define CONFIG_USER_ONLY 1" >> $config_h
1366
fi
1367
if test "$target_linux_user" = "yes" ; then
1368
  echo "CONFIG_LINUX_USER=yes" >> $config_mak
1369
  echo "#define CONFIG_LINUX_USER 1" >> $config_h
1370
fi
1371
if test "$target_darwin_user" = "yes" ; then
1372
  echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1373
  echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1374
fi
1375

    
1376
if test "$target_cpu" = "arm" \
1377
     -o "$target_cpu" = "armeb" \
1378
     -o "$target_cpu" = "m68k" \
1379
     -o "$target_cpu" = "mips" \
1380
     -o "$target_cpu" = "mipsel" \
1381
     -o "$target_cpu" = "mipsn32" \
1382
     -o "$target_cpu" = "mipsn32el" \
1383
     -o "$target_cpu" = "mips64" \
1384
     -o "$target_cpu" = "mips64el" \
1385
     -o "$target_cpu" = "sparc" \
1386
     -o "$target_cpu" = "sparc64" \
1387
     -o "$target_cpu" = "sparc32plus"; then
1388
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1389
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1390
fi
1391
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1392
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1393
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1394
fi
1395
if test "$target_user_only" = "yes" \
1396
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1397
  echo "#define USE_NPTL 1" >> $config_h
1398
fi
1399
# 32 bit ELF loader in addition to native 64 bit loader?
1400
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1401
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1402
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1403
fi
1404

    
1405
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1406

    
1407
done # for target in $targets
1408

    
1409
# build tree in object directory if source path is different from current one
1410
if test "$source_path_used" = "yes" ; then
1411
    DIRS="tests tests/cris slirp audio"
1412
    FILES="Makefile tests/Makefile"
1413
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1414
    FILES="$FILES tests/test-mmap.c"
1415
    for dir in $DIRS ; do
1416
            mkdir -p $dir
1417
    done
1418
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1419
    for f in $FILES ; do
1420
        rm -f $f
1421
        ln -s $source_path/$f $f
1422
    done
1423
fi
1424

    
1425
rm -f $TMPO $TMPC $TMPE $TMPS