Statistics
| Branch: | Revision:

root / configure @ 2f6a1ab0

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"
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"
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
  --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
287
  ;;
288
  --disable-slirp) slirp="no"
289
  ;;
290
  --disable-vde) vde="no"
291
  ;;
292
  --disable-kqemu) kqemu="no"
293
  ;;
294
  --disable-brlapi) brlapi="no"
295
  ;;
296
  --enable-profiler) profiler="yes"
297
  ;;
298
  --enable-cocoa)
299
      cocoa="yes" ;
300
      sdl="no" ;
301
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
302
  ;;
303
  --disable-gfx-check) check_gfx="no"
304
  ;;
305
  --disable-gcc-check) check_gcc="no"
306
  ;;
307
  --disable-system) softmmu="no"
308
  ;;
309
  --enable-system) softmmu="yes"
310
  ;;
311
  --disable-linux-user) linux_user="no"
312
  ;;
313
  --enable-linux-user) linux_user="yes"
314
  ;;
315
  --disable-darwin-user) darwin_user="no"
316
  ;;
317
  --enable-darwin-user) darwin_user="yes"
318
  ;;
319
  --enable-uname-release=*) uname_release="$optarg"
320
  ;;
321
  --sparc_cpu=*)
322
      sparc_cpu="$optarg"
323
      case $sparc_cpu in
324
        v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
325
                 target_cpu="sparc"; cpu="sparc" ;;
326
        v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
327
                 target_cpu="sparc"; cpu="sparc" ;;
328
        v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
329
                 target_cpu="sparc64"; cpu="sparc64" ;;
330
        *)     echo "undefined SPARC architecture. Exiting";exit 1;;
331
      esac
332
  ;;
333
  --enable-werror) werror="yes"
334
  ;;
335
  --disable-werror) werror="no"
336
  ;;
337
  --disable-curses) curses="no"
338
  ;;
339
  --disable-nptl) nptl="no"
340
  ;;
341
  --enable-mixemu) mixemu="yes"
342
  ;;
343
  --disable-aio) aio="no"
344
  ;;
345
  *) echo "ERROR: unknown option $opt"; show_help="yes"
346
  ;;
347
  esac
348
done
349

    
350
if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
351
    AIOLIBS=
352
else
353
    # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
354
    AIOLIBS="-lrt -lpthread"
355
fi
356

    
357
# default flags for all hosts
358
CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
359
LDFLAGS="$LDFLAGS -g"
360
if test "$werror" = "yes" ; then
361
CFLAGS="$CFLAGS -Werror"
362
fi
363

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

    
398
if test x"$show_help" = x"yes" ; then
399
cat << EOF
400

    
401
Usage: configure [options]
402
Options: [defaults in brackets after descriptions]
403

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

    
454
cc="${cross_prefix}${cc}"
455
ar="${cross_prefix}${ar}"
456
strip="${cross_prefix}${strip}"
457

    
458
# check that the C compiler works.
459
cat > $TMPC <<EOF
460
int main(void) {}
461
EOF
462

    
463
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
464
  : C compiler works ok
465
else
466
    echo "ERROR: \"$cc\" either does not exist or does not work"
467
    exit 1
468
fi
469

    
470
if test "$mingw32" = "yes" ; then
471
    linux="no"
472
    EXESUF=".exe"
473
    oss="no"
474
fi
475

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

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

    
550

    
551
if test -z "$target_list" ; then
552
# these targets are portable
553
    if [ "$softmmu" = "yes" ] ; then
554
        target_list="\
555
i386-softmmu \
556
x86_64-softmmu \
557
arm-softmmu \
558
cris-softmmu \
559
m68k-softmmu \
560
mips-softmmu \
561
mipsel-softmmu \
562
mips64-softmmu \
563
mips64el-softmmu \
564
ppc-softmmu \
565
ppcemb-softmmu \
566
ppc64-softmmu \
567
sh4-softmmu \
568
sh4eb-softmmu \
569
sparc-softmmu \
570
"
571
    fi
572
# the following are Linux specific
573
    if [ "$linux_user" = "yes" ] ; then
574
        target_list="${target_list}\
575
i386-linux-user \
576
x86_64-linux-user \
577
alpha-linux-user \
578
arm-linux-user \
579
armeb-linux-user \
580
cris-linux-user \
581
m68k-linux-user \
582
mips-linux-user \
583
mipsel-linux-user \
584
ppc-linux-user \
585
ppc64-linux-user \
586
ppc64abi32-linux-user \
587
sh4-linux-user \
588
sh4eb-linux-user \
589
sparc-linux-user \
590
sparc64-linux-user \
591
sparc32plus-linux-user \
592
"
593
    fi
594
# the following are Darwin specific
595
    if [ "$darwin_user" = "yes" ] ; then
596
        target_list="$target_list i386-darwin-user ppc-darwin-user"
597
    fi
598
else
599
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
600
fi
601
if test -z "$target_list" ; then
602
    echo "No targets enabled"
603
    exit 1
604
fi
605

    
606
if test -z "$cross_prefix" ; then
607

    
608
# ---
609
# big/little endian test
610
cat > $TMPC << EOF
611
#include <inttypes.h>
612
int main(int argc, char ** argv){
613
        volatile uint32_t i=0x01234567;
614
        return (*((uint8_t*)(&i))) == 0x67;
615
}
616
EOF
617

    
618
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
619
$TMPE && bigendian="yes"
620
else
621
echo big/little test failed
622
fi
623

    
624
else
625

    
626
# if cross compiling, cannot launch a program, so make a static guess
627
if test "$cpu" = "armv4b" \
628
     -o "$cpu" = "hppa" \
629
     -o "$cpu" = "m68k" \
630
     -o "$cpu" = "mips" \
631
     -o "$cpu" = "mips64" \
632
     -o "$cpu" = "powerpc" \
633
     -o "$cpu" = "s390" \
634
     -o "$cpu" = "sparc" \
635
     -o "$cpu" = "sparc64"; then
636
    bigendian="yes"
637
fi
638

    
639
fi
640

    
641
# host long bits test
642
hostlongbits="32"
643
if test "$cpu" = "x86_64" \
644
     -o "$cpu" = "alpha" \
645
     -o "$cpu" = "ia64" \
646
     -o "$cpu" = "sparc64"; then
647
    hostlongbits="64"
648
fi
649

    
650
# ppc specific hostlongbits selection
651
if test "$cpu" = "powerpc" ; then
652
    cat > $TMPC <<EOF
653
int main(void){return sizeof(long);}
654
EOF
655

    
656
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
657
        $TMPE
658
        case $? in
659
            4) hostlongbits="32";;
660
            8) hostlongbits="64";;
661
            *) echo "Couldn't determine bits per long value"; exit 1;;
662
        esac
663
    else
664
        echo hostlongbits test failed
665
        exit 1
666
    fi
667
fi
668

    
669
# check gcc options support
670
cat > $TMPC <<EOF
671
int main(void) {
672
}
673
EOF
674

    
675
# Check host NPTL support
676
cat > $TMPC <<EOF
677
#include <sched.h>
678
#include <linux/futex.h>
679
void foo()
680
{
681
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
682
#error bork
683
#endif
684
}
685
EOF
686

    
687
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
688
  :
689
else
690
   nptl="no"
691
fi
692

    
693
##########################################
694
# SDL probe
695

    
696
sdl_too_old=no
697

    
698
if test -z "$sdl" ; then
699
    sdl_config="sdl-config"
700
    sdl=no
701
    sdl_static=no
702

    
703
    if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
704
    # win32 cross compilation case
705
        sdl_config="i386-mingw32msvc-sdl-config"
706
        sdl=yes
707
    else
708
        # normal SDL probe
709
cat > $TMPC << EOF
710
#include <SDL.h>
711
#undef main /* We don't want SDL to override our main() */
712
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
713
EOF
714
        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
715
            _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
716
            if test "$_sdlversion" -lt 121 ; then
717
                sdl_too_old=yes
718
            else
719
                if test "$cocoa" = "no" ; then
720
                    sdl=yes
721
                fi
722
            fi
723

    
724
            # static link with sdl ?
725
            if test "$sdl" = "yes" ; then
726
                aa="no"
727
                `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
728
                sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
729
                if [ "$aa" = "yes" ] ; then
730
                    sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
731
                fi
732

    
733
                if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
734
                    sdl_static=yes
735
                fi
736
            fi # static link
737
        fi # sdl compile test
738
    fi # cross compilation
739
else
740
    # Make sure to disable cocoa if sdl was set
741
    if test "$sdl" = "yes" ; then
742
       cocoa="no"
743
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
744
    fi
745
fi # -z $sdl
746

    
747
##########################################
748
# VNC TLS detection
749
if test "$vnc_tls" = "yes" ; then
750
cat > $TMPC <<EOF
751
#include <gnutls/gnutls.h>
752
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
753
EOF
754
    vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
755
    vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
756
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
757
           $vnc_tls_libs 2> /dev/null ; then
758
	:
759
    else
760
	vnc_tls="no"
761
    fi
762
fi
763

    
764
##########################################
765
# vde libraries probe
766
if test "$vde" = "yes" ; then
767
  cat > $TMPC << EOF
768
#include <libvdeplug.h>
769
int main(void) { struct vde_open_args a = {0, 0, 0} ; return 0;}
770
EOF
771
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
772
        :
773
    else
774
        vde="no"
775
    fi
776
fi
777

    
778
##########################################
779
# Sound support libraries probe
780

    
781
audio_drv_probe()
782
{
783
    drv=$1
784
    hdr=$2
785
    lib=$3
786
    exp=$4
787
    cfl=$5
788
        cat > $TMPC << EOF
789
#include <$hdr>
790
int main(void) { $exp }
791
EOF
792
    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
793
        :
794
    else
795
        echo
796
        echo "Error: $drv check failed"
797
        echo "Make sure to have the $drv libs and headers installed."
798
        echo
799
        exit 1
800
    fi
801
}
802

    
803
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
804
for drv in $audio_drv_list; do
805
    case $drv in
806
    alsa)
807
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
808
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
809
    ;;
810

    
811
    fmod)
812
    if test -z $fmod_lib || test -z $fmod_inc; then
813
        echo
814
        echo "Error: You must specify path to FMOD library and headers"
815
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
816
        echo
817
        exit 1
818
    fi
819
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
820
    ;;
821

    
822
    esd)
823
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
824
    ;;
825

    
826
    pa)
827
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
828
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
829
    ;;
830

    
831
    oss|sdl|core|wav|dsound)
832
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
833
    ;;
834

    
835
    *)
836
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
837
        echo
838
        echo "Error: Unknown driver '$drv' selected"
839
        echo "Possible drivers are: $audio_possible_drivers"
840
        echo
841
        exit 1
842
    }
843
    ;;
844
    esac
845
done
846

    
847
##########################################
848
# BrlAPI probe
849

    
850
if test -z "$brlapi" ; then
851
    brlapi=no
852
cat > $TMPC << EOF
853
#include <brlapi.h>
854
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
855
EOF
856
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
857
	    brlapi=yes
858
    fi # brlapi compile test
859
fi # -z $brlapi
860

    
861
##########################################
862
# curses probe
863

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

    
875
##########################################
876
# AIO probe
877
if test "$aio" = "yes" ; then
878
  aio=no
879
  cat > $TMPC << EOF
880
#include <aio.h>
881
int main(void) { return aio_write(NULL); }
882
EOF
883
  if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
884
    aio=yes
885
  fi
886
fi
887

    
888
# Check if tools are available to build documentation.
889
if [ -x "`which texi2html 2>/dev/null`" ] && \
890
   [ -x "`which pod2man 2>/dev/null`" ]; then
891
  build_docs="yes"
892
fi
893

    
894
if test "$mingw32" = "yes" ; then
895
  if test -z "$prefix" ; then
896
      prefix="/c/Program Files/Qemu"
897
  fi
898
  mansuffix=""
899
  datasuffix=""
900
  docsuffix=""
901
  binsuffix=""
902
else
903
  if test -z "$prefix" ; then
904
      prefix="/usr/local"
905
  fi
906
  mansuffix="/share/man"
907
  datasuffix="/share/qemu"
908
  docsuffix="/share/doc/qemu"
909
  binsuffix="/bin"
910
fi
911

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

    
961
if test $sdl_too_old = "yes"; then
962
echo "-> Your SDL version is too old - please upgrade to have SDL support"
963
fi
964
if [ -s /tmp/qemu-$$-sdl-config.log ]; then
965
  echo "The error log from compiling the libSDL test is: "
966
  cat /tmp/qemu-$$-sdl-config.log
967
fi
968
rm -f /tmp/qemu-$$-sdl-config.log
969
#if test "$sdl_static" = "no"; then
970
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
971
#fi
972
config_mak="config-host.mak"
973
config_h="config-host.h"
974

    
975
#echo "Creating $config_mak and $config_h"
976

    
977
test -f $config_h && mv $config_h ${config_h}~
978

    
979
echo "# Automatically generated by configure - do not modify" > $config_mak
980
echo "# Configured with: $0 $@" >> $config_mak
981
echo "/* Automatically generated by configure - do not modify */" > $config_h
982

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

    
1095
if [ "$openbsd" = "yes" ] ; then
1096
  echo "#define ENOTSUP 4096" >> $config_h
1097
fi
1098

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

    
1171
echo "SRC_PATH=$source_path" >> $config_mak
1172
if [ "$source_path_used" = "yes" ]; then
1173
  echo "VPATH=$source_path" >> $config_mak
1174
fi
1175
echo "TARGET_DIRS=$target_list" >> $config_mak
1176
if [ "$build_docs" = "yes" ] ; then
1177
  echo "BUILD_DOCS=yes" >> $config_mak
1178
fi
1179
if test "$static" = "yes"; then
1180
  sdl1=$sdl_static
1181
else
1182
  sdl1=$sdl
1183
fi
1184
if test "$sdl1" = "yes" ; then
1185
  echo "#define CONFIG_SDL 1" >> $config_h
1186
  echo "CONFIG_SDL=yes" >> $config_mak
1187
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1188
    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1189
  else
1190
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1191
  fi
1192
  if [ "${aa}" = "yes" ] ; then
1193
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1194
  else
1195
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1196
  fi
1197
fi
1198
if test "$cocoa" = "yes" ; then
1199
  echo "#define CONFIG_COCOA 1" >> $config_h
1200
  echo "CONFIG_COCOA=yes" >> $config_mak
1201
fi
1202
if test "$curses" = "yes" ; then
1203
  echo "#define CONFIG_CURSES 1" >> $config_h
1204
  echo "CONFIG_CURSES=yes" >> $config_mak
1205
  echo "CURSES_LIBS=-lcurses" >> $config_mak
1206
fi
1207
if test "$brlapi" = "yes" ; then
1208
  echo "CONFIG_BRLAPI=yes" >> $config_mak
1209
  echo "#define CONFIG_BRLAPI 1" >> $config_h
1210
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1211
fi
1212
if test "$aio" = "yes" ; then
1213
  echo "#define CONFIG_AIO 1" >> $config_h
1214
fi
1215

    
1216
# XXX: suppress that
1217
if [ "$bsd" = "yes" ] ; then
1218
  echo "#define O_LARGEFILE 0" >> $config_h
1219
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1220
  echo "#define _BSD 1" >> $config_h
1221
fi
1222

    
1223
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1224

    
1225
tools=
1226
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1227
  tools="qemu-img\$(EXESUF) $tools"
1228
  if [ "$linux" = "yes" ] ; then
1229
      tools="qemu-nbd\$(EXESUF) $tools"
1230
  fi
1231
fi
1232
echo "TOOLS=$tools" >> $config_mak
1233

    
1234
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1235

    
1236
for target in $target_list; do
1237
target_dir="$target"
1238
config_mak=$target_dir/config.mak
1239
config_h=$target_dir/config.h
1240
target_cpu=`echo $target | cut -d '-' -f 1`
1241
target_bigendian="no"
1242
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1243
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1244
[ "$target_cpu" = "mips" ] && target_bigendian=yes
1245
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1246
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1247
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1248
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1249
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1250
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1251
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1252
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1253
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1254
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1255
target_softmmu="no"
1256
target_user_only="no"
1257
target_linux_user="no"
1258
target_darwin_user="no"
1259
case "$target" in
1260
  ${target_cpu}-softmmu)
1261
    target_softmmu="yes"
1262
    ;;
1263
  ${target_cpu}-linux-user)
1264
    target_user_only="yes"
1265
    target_linux_user="yes"
1266
    ;;
1267
  ${target_cpu}-darwin-user)
1268
    target_user_only="yes"
1269
    target_darwin_user="yes"
1270
    ;;
1271
  *)
1272
    echo "ERROR: Target '$target' not recognised"
1273
    exit 1
1274
    ;;
1275
esac
1276

    
1277
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1278
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1279
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1280
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1281
    echo "Note that this will disable all output from the virtual graphics card"
1282
    echo "except through VNC or curses."
1283
    exit 1;
1284
fi
1285

    
1286
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1287

    
1288
test -f $config_h && mv $config_h ${config_h}~
1289

    
1290
mkdir -p $target_dir
1291
mkdir -p $target_dir/fpu
1292
mkdir -p $target_dir/tcg
1293
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1294
  mkdir -p $target_dir/nwfpe
1295
fi
1296

    
1297
#
1298
# don't use ln -sf as not all "ln -sf" over write the file/link
1299
#
1300
rm -f $target_dir/Makefile
1301
ln -s $source_path/Makefile.target $target_dir/Makefile
1302

    
1303

    
1304
echo "# Automatically generated by configure - do not modify" > $config_mak
1305
echo "/* Automatically generated by configure - do not modify */" > $config_h
1306

    
1307

    
1308
echo "include ../config-host.mak" >> $config_mak
1309
echo "#include \"../config-host.h\"" >> $config_h
1310

    
1311
bflt="no"
1312
elfload32="no"
1313
target_nptl="no"
1314
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1315
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1316

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

    
1479
if test "$target_cpu" = "arm" \
1480
     -o "$target_cpu" = "armeb" \
1481
     -o "$target_cpu" = "m68k" \
1482
     -o "$target_cpu" = "mips" \
1483
     -o "$target_cpu" = "mipsel" \
1484
     -o "$target_cpu" = "mipsn32" \
1485
     -o "$target_cpu" = "mipsn32el" \
1486
     -o "$target_cpu" = "mips64" \
1487
     -o "$target_cpu" = "mips64el" \
1488
     -o "$target_cpu" = "sparc" \
1489
     -o "$target_cpu" = "sparc64" \
1490
     -o "$target_cpu" = "sparc32plus"; then
1491
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1492
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1493
fi
1494
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1495
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1496
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1497
fi
1498
if test "$target_user_only" = "yes" \
1499
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1500
  echo "#define USE_NPTL 1" >> $config_h
1501
fi
1502
# 32 bit ELF loader in addition to native 64 bit loader?
1503
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1504
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1505
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1506
fi
1507

    
1508
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1509

    
1510
done # for target in $targets
1511

    
1512
# build tree in object directory if source path is different from current one
1513
if test "$source_path_used" = "yes" ; then
1514
    DIRS="tests tests/cris slirp audio"
1515
    FILES="Makefile tests/Makefile"
1516
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1517
    FILES="$FILES tests/test-mmap.c"
1518
    for dir in $DIRS ; do
1519
            mkdir -p $dir
1520
    done
1521
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1522
    for f in $FILES ; do
1523
        rm -f $f
1524
        ln -s $source_path/$f $f
1525
    done
1526
fi
1527

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