Statistics
| Branch: | Revision:

root / configure @ 4f26a486

History | View | Annotate | Download (41.8 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
vde="yes"
93
fmod_lib=""
94
fmod_inc=""
95
oss_lib=""
96
vnc_tls="yes"
97
bsd="no"
98
linux="no"
99
kqemu="no"
100
profiler="no"
101
cocoa="no"
102
check_gfx="yes"
103
check_gcc="yes"
104
softmmu="yes"
105
linux_user="no"
106
darwin_user="no"
107
build_docs="no"
108
uname_release=""
109
curses="yes"
110
aio="yes"
111
nptl="yes"
112
mixemu="no"
113

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

    
214
if [ "$bsd" = "yes" ] ; then
215
  if [ "$darwin" != "yes" ] ; then
216
    make="gmake"
217
  fi
218
fi
219

    
220
# find source path
221
source_path=`dirname "$0"`
222
source_path_used="no"
223
workdir=`pwd`
224
if [ -z "$source_path" ]; then
225
    source_path=$workdir
226
else
227
    source_path=`cd "$source_path"; pwd`
228
fi
229
[ -f "$workdir/vl.c" ] || source_path_used="yes"
230

    
231
werror="no"
232
# generate compile errors on warnings for development builds
233
#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
234
#werror="yes";
235
#fi
236

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

    
348
# default flags for all hosts
349
CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
350
CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
351
LDFLAGS="$LDFLAGS -g"
352
if test "$werror" = "yes" ; then
353
CFLAGS="$CFLAGS -Werror"
354
fi
355

    
356
if ld --version 2>/dev/null | grep -q "GNU ld" ; then
357
    LDFLAGS="$LDFLAGS -Wl,--warn-common"
358
fi
359

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

    
394
if test x"$show_help" = x"yes" ; then
395
cat << EOF
396

    
397
Usage: configure [options]
398
Options: [defaults in brackets after descriptions]
399

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

    
449
cc="${cross_prefix}${cc}"
450
ar="${cross_prefix}${ar}"
451
strip="${cross_prefix}${strip}"
452

    
453
# check that the C compiler works.
454
cat > $TMPC <<EOF
455
int main(void) {}
456
EOF
457

    
458
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
459
  : C compiler works ok
460
else
461
    echo "ERROR: \"$cc\" either does not exist or does not work"
462
    exit 1
463
fi
464

    
465
# check compiler to see if we're on mingw32
466
cat > $TMPC <<EOF
467
#include <windows.h>
468
#ifndef _WIN32
469
#error not windows
470
#endif
471
int main(void) {}
472
EOF
473

    
474
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
475
    mingw32="yes"
476
fi
477

    
478
if test "$mingw32" = "yes" ; then
479
    linux="no"
480
    EXESUF=".exe"
481
    oss="no"
482
    linux_user="no"
483
fi
484

    
485
if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
486
    AIOLIBS=
487
else
488
    # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
489
    AIOLIBS="-lrt -lpthread"
490
fi
491

    
492
# Check for gcc4, error if pre-gcc4
493
if test "$check_gcc" = "yes" ; then
494
    cat > $TMPC <<EOF
495
#if __GNUC__ < 4
496
#error gcc3
497
#endif
498
int main(){return 0;}
499
EOF
500
    if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
501
	echo "WARNING: \"$cc\" looks like gcc 4.x"
502
	found_compat_cc="no"
503
	if test "$gcc3_search" = "yes" ; then
504
	    echo "Looking for gcc 3.x"
505
	    for compat_cc in $gcc3_list ; do
506
		if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
507
		    echo "Found \"$compat_cc\""
508
		    cc="$cross_prefix$compat_cc"
509
		    found_compat_cc="yes"
510
		    break
511
		fi
512
	    done
513
	    if test "$found_compat_cc" = "no" ; then
514
		echo "gcc 3.x not found!"
515
	    fi
516
	fi
517
	if test "$found_compat_cc" = "no" ; then
518
	    echo "QEMU is known to have problems when compiled with gcc 4.x"
519
	    echo "It is recommended that you use gcc 3.x to build QEMU"
520
	    echo "To use this compiler anyway, configure with --disable-gcc-check"
521
	    exit 1;
522
	fi
523
    fi
524
fi
525

    
526
#
527
# Solaris specific configure tool chain decisions
528
#
529
if test "$solaris" = "yes" ; then
530
  #
531
  # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
532
  # override the check with --disable-gcc-check
533
  #
534
  if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
535
    solgcc=`which $cc`
536
    if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
537
      echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
538
      echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
539
      echo "or get the latest patch from SunSolve for gcc"
540
      exit 1
541
    fi
542
  fi
543
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
544
  if test -z "$solinst" ; then
545
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
546
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
547
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
548
    exit 1
549
  fi
550
  if test "$solinst" = "/usr/sbin/install" ; then
551
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
552
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
553
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
554
    exit 1
555
  fi
556
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
557
  if test -z "$sol_ar" ; then
558
    echo "Error: No path includes ar"
559
    if test -f /usr/ccs/bin/ar ; then
560
      echo "Add /usr/ccs/bin to your path and rerun configure"
561
    fi
562
    exit 1
563
  fi
564
fi
565

    
566

    
567
if test -z "$target_list" ; then
568
# these targets are portable
569
    if [ "$softmmu" = "yes" ] ; then
570
        target_list="\
571
i386-softmmu \
572
x86_64-softmmu \
573
arm-softmmu \
574
cris-softmmu \
575
m68k-softmmu \
576
mips-softmmu \
577
mipsel-softmmu \
578
mips64-softmmu \
579
mips64el-softmmu \
580
ppc-softmmu \
581
ppcemb-softmmu \
582
ppc64-softmmu \
583
sh4-softmmu \
584
sh4eb-softmmu \
585
sparc-softmmu \
586
"
587
    fi
588
# the following are Linux specific
589
    if [ "$linux_user" = "yes" ] ; then
590
        target_list="${target_list}\
591
i386-linux-user \
592
x86_64-linux-user \
593
alpha-linux-user \
594
arm-linux-user \
595
armeb-linux-user \
596
cris-linux-user \
597
m68k-linux-user \
598
mips-linux-user \
599
mipsel-linux-user \
600
ppc-linux-user \
601
ppc64-linux-user \
602
ppc64abi32-linux-user \
603
sh4-linux-user \
604
sh4eb-linux-user \
605
sparc-linux-user \
606
sparc64-linux-user \
607
sparc32plus-linux-user \
608
"
609
    fi
610
# the following are Darwin specific
611
    if [ "$darwin_user" = "yes" ] ; then
612
        target_list="$target_list i386-darwin-user ppc-darwin-user"
613
    fi
614
else
615
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
616
fi
617
if test -z "$target_list" ; then
618
    echo "No targets enabled"
619
    exit 1
620
fi
621

    
622
if test -z "$cross_prefix" ; then
623

    
624
# ---
625
# big/little endian test
626
cat > $TMPC << EOF
627
#include <inttypes.h>
628
int main(int argc, char ** argv){
629
        volatile uint32_t i=0x01234567;
630
        return (*((uint8_t*)(&i))) == 0x67;
631
}
632
EOF
633

    
634
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
635
$TMPE && bigendian="yes"
636
else
637
echo big/little test failed
638
fi
639

    
640
else
641

    
642
# if cross compiling, cannot launch a program, so make a static guess
643
if test "$cpu" = "armv4b" \
644
     -o "$cpu" = "hppa" \
645
     -o "$cpu" = "m68k" \
646
     -o "$cpu" = "mips" \
647
     -o "$cpu" = "mips64" \
648
     -o "$cpu" = "powerpc" \
649
     -o "$cpu" = "s390" \
650
     -o "$cpu" = "sparc" \
651
     -o "$cpu" = "sparc64"; then
652
    bigendian="yes"
653
fi
654

    
655
fi
656

    
657
# host long bits test
658
hostlongbits="32"
659
if test "$cpu" = "x86_64" \
660
     -o "$cpu" = "alpha" \
661
     -o "$cpu" = "ia64" \
662
     -o "$cpu" = "sparc64"; then
663
    hostlongbits="64"
664
fi
665

    
666
# ppc specific hostlongbits selection
667
if test "$cpu" = "powerpc" ; then
668
    cat > $TMPC <<EOF
669
int main(void){return sizeof(long);}
670
EOF
671

    
672
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
673
        $TMPE
674
        case $? in
675
            4) hostlongbits="32";;
676
            8) hostlongbits="64";;
677
            *) echo "Couldn't determine bits per long value"; exit 1;;
678
        esac
679
    else
680
        echo hostlongbits test failed
681
        exit 1
682
    fi
683
fi
684

    
685
# check gcc options support
686
cat > $TMPC <<EOF
687
int main(void) {
688
}
689
EOF
690

    
691
# Check host NPTL support
692
cat > $TMPC <<EOF
693
#include <sched.h>
694
#include <linux/futex.h>
695
void foo()
696
{
697
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
698
#error bork
699
#endif
700
}
701
EOF
702

    
703
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
704
  :
705
else
706
   nptl="no"
707
fi
708

    
709
##########################################
710
# SDL probe
711

    
712
sdl_too_old=no
713

    
714
if test -z "$sdl" ; then
715
    sdl_config="sdl-config"
716
    sdl=no
717
    sdl_static=no
718

    
719
cat > $TMPC << EOF
720
#include <SDL.h>
721
#undef main /* We don't want SDL to override our main() */
722
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
723
EOF
724
    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
725
        _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
726
        if test "$_sdlversion" -lt 121 ; then
727
            sdl_too_old=yes
728
        else
729
            if test "$cocoa" = "no" ; then
730
                sdl=yes
731
            fi
732
        fi
733

    
734
        # static link with sdl ?
735
        if test "$sdl" = "yes" ; then
736
            aa="no"
737
            `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
738
            sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
739
            if [ "$aa" = "yes" ] ; then
740
                sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
741
            fi
742

    
743
            if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
744
                sdl_static=yes
745
            fi
746
        fi # static link
747
    fi # sdl compile test
748
else
749
    # Make sure to disable cocoa if sdl was set
750
    if test "$sdl" = "yes" ; then
751
       cocoa="no"
752
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
753
    fi
754
fi # -z $sdl
755

    
756
##########################################
757
# VNC TLS detection
758
if test "$vnc_tls" = "yes" ; then
759
cat > $TMPC <<EOF
760
#include <gnutls/gnutls.h>
761
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
762
EOF
763
    vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
764
    vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
765
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
766
           $vnc_tls_libs 2> /dev/null ; then
767
	:
768
    else
769
	vnc_tls="no"
770
    fi
771
fi
772

    
773
##########################################
774
# vde libraries probe
775
if test "$vde" = "yes" ; then
776
  cat > $TMPC << EOF
777
#include <libvdeplug.h>
778
int main(void)
779
{
780
    struct vde_open_args a = {0, 0, 0};
781
    vde_open("", "", &a);
782
    return 0;
783
}
784
EOF
785
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
786
        :
787
    else
788
        vde="no"
789
    fi
790
fi
791

    
792
##########################################
793
# Sound support libraries probe
794

    
795
audio_drv_probe()
796
{
797
    drv=$1
798
    hdr=$2
799
    lib=$3
800
    exp=$4
801
    cfl=$5
802
        cat > $TMPC << EOF
803
#include <$hdr>
804
int main(void) { $exp }
805
EOF
806
    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
807
        :
808
    else
809
        echo
810
        echo "Error: $drv check failed"
811
        echo "Make sure to have the $drv libs and headers installed."
812
        echo
813
        exit 1
814
    fi
815
}
816

    
817
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
818
for drv in $audio_drv_list; do
819
    case $drv in
820
    alsa)
821
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
822
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
823
    ;;
824

    
825
    fmod)
826
    if test -z $fmod_lib || test -z $fmod_inc; then
827
        echo
828
        echo "Error: You must specify path to FMOD library and headers"
829
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
830
        echo
831
        exit 1
832
    fi
833
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
834
    ;;
835

    
836
    esd)
837
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
838
    ;;
839

    
840
    pa)
841
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
842
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
843
    ;;
844

    
845
    oss|sdl|core|wav|dsound)
846
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
847
    ;;
848

    
849
    *)
850
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
851
        echo
852
        echo "Error: Unknown driver '$drv' selected"
853
        echo "Possible drivers are: $audio_possible_drivers"
854
        echo
855
        exit 1
856
    }
857
    ;;
858
    esac
859
done
860

    
861
##########################################
862
# BrlAPI probe
863

    
864
if test -z "$brlapi" ; then
865
    brlapi=no
866
cat > $TMPC << EOF
867
#include <brlapi.h>
868
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
869
EOF
870
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
871
	    brlapi=yes
872
    fi # brlapi compile test
873
fi # -z $brlapi
874

    
875
##########################################
876
# curses probe
877

    
878
if test "$curses" = "yes" ; then
879
  curses=no
880
  cat > $TMPC << EOF
881
#include <curses.h>
882
int main(void) { return curses_version(); }
883
EOF
884
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
885
    curses=yes
886
  fi
887
fi # test "$curses"
888

    
889
##########################################
890
# AIO probe
891
if test "$aio" = "yes" ; then
892
  aio=no
893
  cat > $TMPC << EOF
894
#include <aio.h>
895
int main(void) { return aio_write(NULL); }
896
EOF
897
  if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
898
    aio=yes
899
  fi
900
fi
901

    
902
# Check if tools are available to build documentation.
903
if [ -x "`which texi2html 2>/dev/null`" ] && \
904
   [ -x "`which pod2man 2>/dev/null`" ]; then
905
  build_docs="yes"
906
fi
907

    
908
if test "$mingw32" = "yes" ; then
909
  if test -z "$prefix" ; then
910
      prefix="/c/Program Files/Qemu"
911
  fi
912
  mansuffix=""
913
  datasuffix=""
914
  docsuffix=""
915
  binsuffix=""
916
else
917
  if test -z "$prefix" ; then
918
      prefix="/usr/local"
919
  fi
920
  mansuffix="/share/man"
921
  datasuffix="/share/qemu"
922
  docsuffix="/share/doc/qemu"
923
  binsuffix="/bin"
924
fi
925

    
926
echo "Install prefix    $prefix"
927
echo "BIOS directory    $prefix$datasuffix"
928
echo "binary directory  $prefix$binsuffix"
929
if test "$mingw32" = "no" ; then
930
echo "Manual directory  $prefix$mansuffix"
931
echo "ELF interp prefix $interp_prefix"
932
fi
933
echo "Source path       $source_path"
934
echo "C compiler        $cc"
935
echo "Host C compiler   $host_cc"
936
echo "ARCH_CFLAGS       $ARCH_CFLAGS"
937
echo "make              $make"
938
echo "install           $install"
939
echo "host CPU          $cpu"
940
echo "host big endian   $bigendian"
941
echo "target list       $target_list"
942
echo "gprof enabled     $gprof"
943
echo "profiler          $profiler"
944
echo "static build      $static"
945
echo "-Werror enabled   $werror"
946
if test "$darwin" = "yes" ; then
947
    echo "Cocoa support     $cocoa"
948
fi
949
echo "SDL support       $sdl"
950
if test "$sdl" != "no" ; then
951
    echo "SDL static link   $sdl_static"
952
fi
953
echo "curses support    $curses"
954
echo "mingw32 support   $mingw32"
955
echo "Audio drivers     $audio_drv_list"
956
echo "Extra audio cards $audio_card_list"
957
echo "Mixer emulation   $mixemu"
958
echo "VNC TLS support   $vnc_tls"
959
if test "$vnc_tls" = "yes" ; then
960
    echo "    TLS CFLAGS    $vnc_tls_cflags"
961
    echo "    TLS LIBS      $vnc_tls_libs"
962
fi
963
if test -n "$sparc_cpu"; then
964
    echo "Target Sparc Arch $sparc_cpu"
965
fi
966
echo "kqemu support     $kqemu"
967
echo "brlapi support    $brlapi"
968
echo "Documentation     $build_docs"
969
[ ! -z "$uname_release" ] && \
970
echo "uname -r          $uname_release"
971
echo "NPTL support      $nptl"
972
echo "vde support       $vde"
973
echo "AIO support       $aio"
974

    
975
if test $sdl_too_old = "yes"; then
976
echo "-> Your SDL version is too old - please upgrade to have SDL support"
977
fi
978
if [ -s /tmp/qemu-$$-sdl-config.log ]; then
979
  echo "The error log from compiling the libSDL test is: "
980
  cat /tmp/qemu-$$-sdl-config.log
981
fi
982
rm -f /tmp/qemu-$$-sdl-config.log
983
#if test "$sdl_static" = "no"; then
984
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
985
#fi
986
config_mak="config-host.mak"
987
config_h="config-host.h"
988

    
989
#echo "Creating $config_mak and $config_h"
990

    
991
test -f $config_h && mv $config_h ${config_h}~
992

    
993
echo "# Automatically generated by configure - do not modify" > $config_mak
994
echo "# Configured with: $0 $@" >> $config_mak
995
echo "/* Automatically generated by configure - do not modify */" > $config_h
996

    
997
echo "prefix=$prefix" >> $config_mak
998
echo "bindir=\${prefix}$binsuffix" >> $config_mak
999
echo "mandir=\${prefix}$mansuffix" >> $config_mak
1000
echo "datadir=\${prefix}$datasuffix" >> $config_mak
1001
echo "docdir=\${prefix}$docsuffix" >> $config_mak
1002
echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1003
echo "MAKE=$make" >> $config_mak
1004
echo "INSTALL=$install" >> $config_mak
1005
echo "CC=$cc" >> $config_mak
1006
echo "HOST_CC=$host_cc" >> $config_mak
1007
echo "AR=$ar" >> $config_mak
1008
echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1009
# XXX: only use CFLAGS and LDFLAGS ?  
1010
# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1011
# compilation of dyngen tool (useful for win32 build on Linux host)
1012
echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1013
echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1014
echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1015
echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1016
echo "CFLAGS=$CFLAGS" >> $config_mak
1017
echo "LDFLAGS=$LDFLAGS" >> $config_mak
1018
echo "EXESUF=$EXESUF" >> $config_mak
1019
echo "AIOLIBS=$AIOLIBS" >> $config_mak
1020
case "$cpu" in
1021
  i386)
1022
    echo "ARCH=i386" >> $config_mak
1023
    echo "#define HOST_I386 1" >> $config_h
1024
  ;;
1025
  x86_64)
1026
    echo "ARCH=x86_64" >> $config_mak
1027
    echo "#define HOST_X86_64 1" >> $config_h
1028
  ;;
1029
  alpha)
1030
    echo "ARCH=alpha" >> $config_mak
1031
    echo "#define HOST_ALPHA 1" >> $config_h
1032
  ;;
1033
  armv4b)
1034
    echo "ARCH=arm" >> $config_mak
1035
    echo "#define HOST_ARM 1" >> $config_h
1036
  ;;
1037
  armv4l)
1038
    echo "ARCH=arm" >> $config_mak
1039
    echo "#define HOST_ARM 1" >> $config_h
1040
  ;;
1041
  cris)
1042
    echo "ARCH=cris" >> $config_mak
1043
    echo "#define HOST_CRIS 1" >> $config_h
1044
  ;;
1045
  hppa)
1046
    echo "ARCH=hppa" >> $config_mak
1047
    echo "#define HOST_HPPA 1" >> $config_h
1048
  ;;
1049
  ia64)
1050
    echo "ARCH=ia64" >> $config_mak
1051
    echo "#define HOST_IA64 1" >> $config_h
1052
  ;;
1053
  m68k)
1054
    echo "ARCH=m68k" >> $config_mak
1055
    echo "#define HOST_M68K 1" >> $config_h
1056
  ;;
1057
  mips)
1058
    echo "ARCH=mips" >> $config_mak
1059
    echo "#define HOST_MIPS 1" >> $config_h
1060
  ;;
1061
  mips64)
1062
    echo "ARCH=mips64" >> $config_mak
1063
    echo "#define HOST_MIPS64 1" >> $config_h
1064
  ;;
1065
  powerpc)
1066
  if test "$hostlongbits" = "32"; then
1067
      echo "ARCH=ppc" >> $config_mak
1068
      echo "#define HOST_PPC 1" >> $config_h
1069
  else
1070
      echo "ARCH=ppc64" >> $config_mak
1071
      echo "#define HOST_PPC64 1" >> $config_h
1072
  fi
1073
  ;;
1074
  s390)
1075
    echo "ARCH=s390" >> $config_mak
1076
    echo "#define HOST_S390 1" >> $config_h
1077
  ;;
1078
  sparc)
1079
    echo "ARCH=sparc" >> $config_mak
1080
    echo "#define HOST_SPARC 1" >> $config_h
1081
  ;;
1082
  sparc64)
1083
    echo "ARCH=sparc64" >> $config_mak
1084
    echo "#define HOST_SPARC64 1" >> $config_h
1085
  ;;
1086
  *)
1087
    echo "Unsupported CPU = $cpu"
1088
    exit 1
1089
  ;;
1090
esac
1091
if test "$bigendian" = "yes" ; then
1092
  echo "WORDS_BIGENDIAN=yes" >> $config_mak
1093
  echo "#define WORDS_BIGENDIAN 1" >> $config_h
1094
fi
1095
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1096
if test "$mingw32" = "yes" ; then
1097
  echo "CONFIG_WIN32=yes" >> $config_mak
1098
  echo "#define CONFIG_WIN32 1" >> $config_h
1099
else
1100
  cat > $TMPC << EOF
1101
#include <byteswap.h>
1102
int main(void) { return bswap_32(0); }
1103
EOF
1104
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1105
    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1106
  fi
1107
fi
1108

    
1109
if [ "$openbsd" = "yes" ] ; then
1110
  echo "#define ENOTSUP 4096" >> $config_h
1111
fi
1112

    
1113
if test "$darwin" = "yes" ; then
1114
  echo "CONFIG_DARWIN=yes" >> $config_mak
1115
  echo "#define CONFIG_DARWIN 1" >> $config_h
1116
fi
1117
if test "$solaris" = "yes" ; then
1118
  echo "CONFIG_SOLARIS=yes" >> $config_mak
1119
  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1120
  if test "$needs_libsunmath" = "yes" ; then
1121
    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1122
    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1123
  fi
1124
fi
1125
if test -n "$sparc_cpu"; then
1126
  echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1127
  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1128
fi
1129
if test "$gdbstub" = "yes" ; then
1130
  echo "CONFIG_GDBSTUB=yes" >> $config_mak
1131
  echo "#define CONFIG_GDBSTUB 1" >> $config_h
1132
fi
1133
if test "$gprof" = "yes" ; then
1134
  echo "TARGET_GPROF=yes" >> $config_mak
1135
  echo "#define HAVE_GPROF 1" >> $config_h
1136
fi
1137
if test "$static" = "yes" ; then
1138
  echo "CONFIG_STATIC=yes" >> $config_mak
1139
  echo "#define CONFIG_STATIC 1" >> $config_h
1140
fi
1141
if test $profiler = "yes" ; then
1142
  echo "#define CONFIG_PROFILER 1" >> $config_h
1143
fi
1144
if test "$slirp" = "yes" ; then
1145
  echo "CONFIG_SLIRP=yes" >> $config_mak
1146
  echo "#define CONFIG_SLIRP 1" >> $config_h
1147
fi
1148
if test "$vde" = "yes" ; then
1149
  echo "CONFIG_VDE=yes" >> $config_mak
1150
  echo "#define CONFIG_VDE 1" >> $config_h
1151
  echo "VDE_LIBS=-lvdeplug" >> $config_mak
1152
fi
1153
for card in $audio_card_list; do
1154
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1155
    echo "$def=yes" >> $config_mak
1156
    echo "#define $def 1" >> $config_h
1157
done
1158
echo "#define AUDIO_DRIVERS \\" >> $config_h
1159
for drv in $audio_drv_list; do
1160
    echo "    &${drv}_audio_driver, \\" >>$config_h
1161
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1162
    echo "$def=yes" >> $config_mak
1163
    if test "$drv" = "fmod"; then
1164
        echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1165
        echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1166
    elif test "$drv" = "oss"; then
1167
        echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1168
    fi
1169
done
1170
echo "" >>$config_h
1171
if test "$mixemu" = "yes" ; then
1172
  echo "CONFIG_MIXEMU=yes" >> $config_mak
1173
  echo "#define CONFIG_MIXEMU 1" >> $config_h
1174
fi
1175
if test "$vnc_tls" = "yes" ; then
1176
  echo "CONFIG_VNC_TLS=yes" >> $config_mak
1177
  echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1178
  echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1179
  echo "#define CONFIG_VNC_TLS 1" >> $config_h
1180
fi
1181
qemu_version=`head $source_path/VERSION`
1182
echo "VERSION=$qemu_version" >>$config_mak
1183
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1184

    
1185
echo "SRC_PATH=$source_path" >> $config_mak
1186
if [ "$source_path_used" = "yes" ]; then
1187
  echo "VPATH=$source_path" >> $config_mak
1188
fi
1189
echo "TARGET_DIRS=$target_list" >> $config_mak
1190
if [ "$build_docs" = "yes" ] ; then
1191
  echo "BUILD_DOCS=yes" >> $config_mak
1192
fi
1193
if test "$static" = "yes"; then
1194
  sdl1=$sdl_static
1195
else
1196
  sdl1=$sdl
1197
fi
1198
if test "$sdl1" = "yes" ; then
1199
  echo "#define CONFIG_SDL 1" >> $config_h
1200
  echo "CONFIG_SDL=yes" >> $config_mak
1201
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1202
    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1203
  else
1204
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1205
  fi
1206
  if [ "${aa}" = "yes" ] ; then
1207
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1208
  else
1209
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1210
  fi
1211
fi
1212
if test "$cocoa" = "yes" ; then
1213
  echo "#define CONFIG_COCOA 1" >> $config_h
1214
  echo "CONFIG_COCOA=yes" >> $config_mak
1215
fi
1216
if test "$curses" = "yes" ; then
1217
  echo "#define CONFIG_CURSES 1" >> $config_h
1218
  echo "CONFIG_CURSES=yes" >> $config_mak
1219
  echo "CURSES_LIBS=-lcurses" >> $config_mak
1220
fi
1221
if test "$brlapi" = "yes" ; then
1222
  echo "CONFIG_BRLAPI=yes" >> $config_mak
1223
  echo "#define CONFIG_BRLAPI 1" >> $config_h
1224
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1225
fi
1226
if test "$aio" = "yes" ; then
1227
  echo "#define CONFIG_AIO 1" >> $config_h
1228
  echo "CONFIG_AIO=yes" >> $config_mak
1229
fi
1230

    
1231
# XXX: suppress that
1232
if [ "$bsd" = "yes" ] ; then
1233
  echo "#define O_LARGEFILE 0" >> $config_h
1234
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1235
  echo "#define _BSD 1" >> $config_h
1236
fi
1237

    
1238
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1239

    
1240
tools=
1241
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1242
  tools="qemu-img\$(EXESUF) $tools"
1243
  if [ "$linux" = "yes" ] ; then
1244
      tools="qemu-nbd\$(EXESUF) $tools"
1245
  fi
1246
fi
1247
echo "TOOLS=$tools" >> $config_mak
1248

    
1249
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1250

    
1251
for target in $target_list; do
1252
target_dir="$target"
1253
config_mak=$target_dir/config.mak
1254
config_h=$target_dir/config.h
1255
target_cpu=`echo $target | cut -d '-' -f 1`
1256
target_bigendian="no"
1257
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1258
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1259
[ "$target_cpu" = "mips" ] && target_bigendian=yes
1260
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1261
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1262
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1263
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1264
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1265
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1266
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1267
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1268
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1269
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1270
target_softmmu="no"
1271
target_user_only="no"
1272
target_linux_user="no"
1273
target_darwin_user="no"
1274
case "$target" in
1275
  ${target_cpu}-softmmu)
1276
    target_softmmu="yes"
1277
    ;;
1278
  ${target_cpu}-linux-user)
1279
    target_user_only="yes"
1280
    target_linux_user="yes"
1281
    ;;
1282
  ${target_cpu}-darwin-user)
1283
    target_user_only="yes"
1284
    target_darwin_user="yes"
1285
    ;;
1286
  *)
1287
    echo "ERROR: Target '$target' not recognised"
1288
    exit 1
1289
    ;;
1290
esac
1291

    
1292
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1293
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1294
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1295
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1296
    echo "Note that this will disable all output from the virtual graphics card"
1297
    echo "except through VNC or curses."
1298
    exit 1;
1299
fi
1300

    
1301
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1302

    
1303
test -f $config_h && mv $config_h ${config_h}~
1304

    
1305
mkdir -p $target_dir
1306
mkdir -p $target_dir/fpu
1307
mkdir -p $target_dir/tcg
1308
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1309
  mkdir -p $target_dir/nwfpe
1310
fi
1311

    
1312
#
1313
# don't use ln -sf as not all "ln -sf" over write the file/link
1314
#
1315
rm -f $target_dir/Makefile
1316
ln -s $source_path/Makefile.target $target_dir/Makefile
1317

    
1318

    
1319
echo "# Automatically generated by configure - do not modify" > $config_mak
1320
echo "/* Automatically generated by configure - do not modify */" > $config_h
1321

    
1322

    
1323
echo "include ../config-host.mak" >> $config_mak
1324
echo "#include \"../config-host.h\"" >> $config_h
1325

    
1326
bflt="no"
1327
elfload32="no"
1328
target_nptl="no"
1329
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1330
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1331

    
1332
case "$target_cpu" in
1333
  i386)
1334
    echo "TARGET_ARCH=i386" >> $config_mak
1335
    echo "#define TARGET_ARCH \"i386\"" >> $config_h
1336
    echo "#define TARGET_I386 1" >> $config_h
1337
    if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1338
    then
1339
      echo "#define USE_KQEMU 1" >> $config_h
1340
    fi
1341
    gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1342
    if test -n "$gcc3minver" && test $gcc3minver -gt 3
1343
    then
1344
      echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1345
    else
1346
      echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1347
    fi
1348
  ;;
1349
  x86_64)
1350
    echo "TARGET_ARCH=x86_64" >> $config_mak
1351
    echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1352
    echo "#define TARGET_I386 1" >> $config_h
1353
    echo "#define TARGET_X86_64 1" >> $config_h
1354
    if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1355
    then
1356
      echo "#define USE_KQEMU 1" >> $config_h
1357
    fi
1358
  ;;
1359
  alpha)
1360
    echo "TARGET_ARCH=alpha" >> $config_mak
1361
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1362
    echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1363
    echo "#define TARGET_ALPHA 1" >> $config_h
1364
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1365
  ;;
1366
  arm|armeb)
1367
    echo "TARGET_ARCH=arm" >> $config_mak
1368
    echo "#define TARGET_ARCH \"arm\"" >> $config_h
1369
    echo "#define TARGET_ARM 1" >> $config_h
1370
    bflt="yes"
1371
    target_nptl="yes"
1372
  ;;
1373
  cris)
1374
    echo "TARGET_ARCH=cris" >> $config_mak
1375
    echo "#define TARGET_ARCH \"cris\"" >> $config_h
1376
    echo "#define TARGET_CRIS 1" >> $config_h
1377
  ;;
1378
  m68k)
1379
    echo "TARGET_ARCH=m68k" >> $config_mak
1380
    echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1381
    echo "#define TARGET_M68K 1" >> $config_h
1382
    bflt="yes"
1383
  ;;
1384
  mips|mipsel)
1385
    echo "TARGET_ARCH=mips" >> $config_mak
1386
    echo "#define TARGET_ARCH \"mips\"" >> $config_h
1387
    echo "#define TARGET_MIPS 1" >> $config_h
1388
    echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1389
  ;;
1390
  mipsn32|mipsn32el)
1391
    echo "TARGET_ARCH=mipsn32" >> $config_mak
1392
    echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1393
    echo "#define TARGET_MIPS 1" >> $config_h
1394
    echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1395
  ;;
1396
  mips64|mips64el)
1397
    echo "TARGET_ARCH=mips64" >> $config_mak
1398
    echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1399
    echo "#define TARGET_MIPS 1" >> $config_h
1400
    echo "#define TARGET_MIPS64 1" >> $config_h
1401
    echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1402
  ;;
1403
  ppc)
1404
    echo "TARGET_ARCH=ppc" >> $config_mak
1405
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1406
    echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1407
    echo "#define TARGET_PPC 1" >> $config_h
1408
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1409
  ;;
1410
  ppcemb)
1411
    echo "TARGET_ARCH=ppcemb" >> $config_mak
1412
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1413
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1414
    echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1415
    echo "#define TARGET_PPC 1" >> $config_h
1416
    echo "#define TARGET_PPCEMB 1" >> $config_h
1417
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1418
  ;;
1419
  ppc64)
1420
    echo "TARGET_ARCH=ppc64" >> $config_mak
1421
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1422
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1423
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1424
    echo "#define TARGET_PPC 1" >> $config_h
1425
    echo "#define TARGET_PPC64 1" >> $config_h
1426
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1427
  ;;
1428
  ppc64abi32)
1429
    echo "TARGET_ARCH=ppc64" >> $config_mak
1430
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1431
    echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1432
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1433
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1434
    echo "#define TARGET_PPC 1" >> $config_h
1435
    echo "#define TARGET_PPC64 1" >> $config_h
1436
    echo "#define TARGET_ABI32 1" >> $config_h
1437
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1438
  ;;
1439
  sh4|sh4eb)
1440
    echo "TARGET_ARCH=sh4" >> $config_mak
1441
    echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1442
    echo "#define TARGET_SH4 1" >> $config_h
1443
    bflt="yes"
1444
    target_nptl="yes"
1445
  ;;
1446
  sparc)
1447
    echo "TARGET_ARCH=sparc" >> $config_mak
1448
    echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1449
    echo "#define TARGET_SPARC 1" >> $config_h
1450
  ;;
1451
  sparc64)
1452
    echo "TARGET_ARCH=sparc64" >> $config_mak
1453
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1454
    echo "#define TARGET_SPARC 1" >> $config_h
1455
    echo "#define TARGET_SPARC64 1" >> $config_h
1456
    elfload32="yes"
1457
  ;;
1458
  sparc32plus)
1459
    echo "TARGET_ARCH=sparc64" >> $config_mak
1460
    echo "TARGET_ABI_DIR=sparc" >> $config_mak
1461
    echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1462
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1463
    echo "#define TARGET_SPARC 1" >> $config_h
1464
    echo "#define TARGET_SPARC64 1" >> $config_h
1465
    echo "#define TARGET_ABI32 1" >> $config_h
1466
  ;;
1467
  *)
1468
    echo "Unsupported target CPU"
1469
    exit 1
1470
  ;;
1471
esac
1472
if test "$target_bigendian" = "yes" ; then
1473
  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1474
  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1475
fi
1476
if test "$target_softmmu" = "yes" ; then
1477
  echo "CONFIG_SOFTMMU=yes" >> $config_mak
1478
  echo "#define CONFIG_SOFTMMU 1" >> $config_h
1479
fi
1480
if test "$target_user_only" = "yes" ; then
1481
  echo "CONFIG_USER_ONLY=yes" >> $config_mak
1482
  echo "#define CONFIG_USER_ONLY 1" >> $config_h
1483
fi
1484
if test "$target_linux_user" = "yes" ; then
1485
  echo "CONFIG_LINUX_USER=yes" >> $config_mak
1486
  echo "#define CONFIG_LINUX_USER 1" >> $config_h
1487
fi
1488
if test "$target_darwin_user" = "yes" ; then
1489
  echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1490
  echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1491
fi
1492

    
1493
if test "$target_cpu" = "arm" \
1494
     -o "$target_cpu" = "armeb" \
1495
     -o "$target_cpu" = "m68k" \
1496
     -o "$target_cpu" = "mips" \
1497
     -o "$target_cpu" = "mipsel" \
1498
     -o "$target_cpu" = "mipsn32" \
1499
     -o "$target_cpu" = "mipsn32el" \
1500
     -o "$target_cpu" = "mips64" \
1501
     -o "$target_cpu" = "mips64el" \
1502
     -o "$target_cpu" = "sparc" \
1503
     -o "$target_cpu" = "sparc64" \
1504
     -o "$target_cpu" = "sparc32plus"; then
1505
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1506
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1507
fi
1508
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1509
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1510
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1511
fi
1512
if test "$target_user_only" = "yes" \
1513
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1514
  echo "#define USE_NPTL 1" >> $config_h
1515
fi
1516
# 32 bit ELF loader in addition to native 64 bit loader?
1517
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1518
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1519
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1520
fi
1521

    
1522
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1523

    
1524
done # for target in $targets
1525

    
1526
# build tree in object directory if source path is different from current one
1527
if test "$source_path_used" = "yes" ; then
1528
    DIRS="tests tests/cris slirp audio"
1529
    FILES="Makefile tests/Makefile"
1530
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1531
    FILES="$FILES tests/test-mmap.c"
1532
    for dir in $DIRS ; do
1533
            mkdir -p $dir
1534
    done
1535
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1536
    for f in $FILES ; do
1537
        rm -f $f
1538
        ln -s $source_path/$f $f
1539
    done
1540
fi
1541

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