Statistics
| Branch: | Revision:

root / configure @ 414f0dab

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

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

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

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

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

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

    
345
if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
346
    AIOLIBS=
347
else
348
    # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
349
    AIOLIBS="-lrt -lpthread"
350
fi
351

    
352
# default flags for all hosts
353
CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
354
LDFLAGS="$LDFLAGS -g"
355
if test "$werror" = "yes" ; then
356
CFLAGS="$CFLAGS -Werror"
357
fi
358

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

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

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

    
399
EOF
400
echo "Standard options:"
401
echo "  --help                   print this message"
402
echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
403
echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
404
echo "                           use %M for cpu name [$interp_prefix]"
405
echo "  --target-list=LIST       set target list [$target_list]"
406
echo ""
407
echo "kqemu kernel acceleration support:"
408
echo "  --disable-kqemu          disable kqemu support"
409
echo ""
410
echo "Advanced options (experts only):"
411
echo "  --source-path=PATH       path of source code [$source_path]"
412
echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
413
echo "  --cc=CC                  use C compiler CC [$cc]"
414
echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
415
echo "  --make=MAKE              use specified make [$make]"
416
echo "  --install=INSTALL        use specified install [$install]"
417
echo "  --static                 enable static build [$static]"
418
echo "  --disable-werror         disable compilation abort on warning"
419
echo "  --disable-sdl            disable SDL"
420
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
421
echo "  --enable-mingw32         enable Win32 cross compilation with mingw32"
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 "  --enable-uname-release=R Return R for uname -r in usermode emulation"
440
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
441
echo "  --disable-vde            disable support for vde network"
442
echo "  --disable-aio            disable AIO support"
443
echo ""
444
echo "NOTE: The object files are built at the place where configure is launched"
445
exit 1
446
fi
447

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

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

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

    
464
if test "$mingw32" = "yes" ; then
465
    linux="no"
466
    EXESUF=".exe"
467
    oss="no"
468
fi
469

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

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

    
544

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

    
600
if test -z "$cross_prefix" ; then
601

    
602
# ---
603
# big/little endian test
604
cat > $TMPC << EOF
605
#include <inttypes.h>
606
int main(int argc, char ** argv){
607
        volatile uint32_t i=0x01234567;
608
        return (*((uint8_t*)(&i))) == 0x67;
609
}
610
EOF
611

    
612
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
613
$TMPE && bigendian="yes"
614
else
615
echo big/little test failed
616
fi
617

    
618
else
619

    
620
# if cross compiling, cannot launch a program, so make a static guess
621
if test "$cpu" = "armv4b" \
622
     -o "$cpu" = "hppa" \
623
     -o "$cpu" = "m68k" \
624
     -o "$cpu" = "mips" \
625
     -o "$cpu" = "mips64" \
626
     -o "$cpu" = "powerpc" \
627
     -o "$cpu" = "s390" \
628
     -o "$cpu" = "sparc" \
629
     -o "$cpu" = "sparc64"; then
630
    bigendian="yes"
631
fi
632

    
633
fi
634

    
635
# host long bits test
636
hostlongbits="32"
637
if test "$cpu" = "x86_64" \
638
     -o "$cpu" = "alpha" \
639
     -o "$cpu" = "ia64" \
640
     -o "$cpu" = "sparc64"; then
641
    hostlongbits="64"
642
fi
643

    
644
# ppc specific hostlongbits selection
645
if test "$cpu" = "powerpc" ; then
646
    cat > $TMPC <<EOF
647
int main(void){return sizeof(long);}
648
EOF
649

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

    
663
# check gcc options support
664
cat > $TMPC <<EOF
665
int main(void) {
666
}
667
EOF
668

    
669
# Check host NPTL support
670
cat > $TMPC <<EOF
671
#include <sched.h>
672
#include <linux/futex.h>
673
void foo()
674
{
675
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
676
#error bork
677
#endif
678
}
679
EOF
680

    
681
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
682
  :
683
else
684
   nptl="no"
685
fi
686

    
687
##########################################
688
# SDL probe
689

    
690
sdl_too_old=no
691

    
692
if test -z "$sdl" ; then
693
    sdl_config="sdl-config"
694
    sdl=no
695
    sdl_static=no
696

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

    
718
            # static link with sdl ?
719
            if test "$sdl" = "yes" ; then
720
                aa="no"
721
                `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
722
                sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
723
                if [ "$aa" = "yes" ] ; then
724
                    sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
725
                fi
726

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

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

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

    
772
##########################################
773
# Sound support libraries probe
774

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

    
797
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
798
for drv in $audio_drv_list; do
799
    case $drv in
800
    alsa)
801
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
802
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
803
    ;;
804

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

    
816
    esd)
817
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
818
    ;;
819

    
820
    pa)
821
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
822
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
823
    ;;
824

    
825
    *)
826
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
827
        echo
828
        echo "Error: Unknown driver '$drv' selected"
829
        echo "Possible drivers are: $audio_possible_drivers"
830
        echo
831
        exit 1
832
    }
833
    ;;
834

    
835
    oss|sdl|core|wav|dsound)
836
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
837
    ;;
838

    
839
    esac
840
done
841

    
842
##########################################
843
# BrlAPI probe
844

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

    
856
##########################################
857
# curses probe
858

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

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

    
883
# Check if tools are available to build documentation.
884
if [ -x "`which texi2html 2>/dev/null`" ] && \
885
   [ -x "`which pod2man 2>/dev/null`" ]; then
886
  build_docs="yes"
887
fi
888

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

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

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

    
970
#echo "Creating $config_mak and $config_h"
971

    
972
test -f $config_h && mv $config_h ${config_h}~
973

    
974
echo "# Automatically generated by configure - do not modify" > $config_mak
975
echo "# Configured with: $0 $@" >> $config_mak
976
echo "/* Automatically generated by configure - do not modify */" > $config_h
977

    
978
echo "prefix=$prefix" >> $config_mak
979
echo "bindir=\${prefix}$binsuffix" >> $config_mak
980
echo "mandir=\${prefix}$mansuffix" >> $config_mak
981
echo "datadir=\${prefix}$datasuffix" >> $config_mak
982
echo "docdir=\${prefix}$docsuffix" >> $config_mak
983
echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
984
echo "MAKE=$make" >> $config_mak
985
echo "INSTALL=$install" >> $config_mak
986
echo "CC=$cc" >> $config_mak
987
echo "HOST_CC=$host_cc" >> $config_mak
988
echo "AR=$ar" >> $config_mak
989
echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
990
# XXX: only use CFLAGS and LDFLAGS ?  
991
# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
992
# compilation of dyngen tool (useful for win32 build on Linux host)
993
echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
994
echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
995
echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
996
echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
997
echo "CFLAGS=$CFLAGS" >> $config_mak
998
echo "LDFLAGS=$LDFLAGS" >> $config_mak
999
echo "EXESUF=$EXESUF" >> $config_mak
1000
echo "AIOLIBS=$AIOLIBS" >> $config_mak
1001
case "$cpu" in
1002
  i386)
1003
    echo "ARCH=i386" >> $config_mak
1004
    echo "#define HOST_I386 1" >> $config_h
1005
  ;;
1006
  x86_64)
1007
    echo "ARCH=x86_64" >> $config_mak
1008
    echo "#define HOST_X86_64 1" >> $config_h
1009
  ;;
1010
  alpha)
1011
    echo "ARCH=alpha" >> $config_mak
1012
    echo "#define HOST_ALPHA 1" >> $config_h
1013
  ;;
1014
  armv4b)
1015
    echo "ARCH=arm" >> $config_mak
1016
    echo "#define HOST_ARM 1" >> $config_h
1017
  ;;
1018
  armv4l)
1019
    echo "ARCH=arm" >> $config_mak
1020
    echo "#define HOST_ARM 1" >> $config_h
1021
  ;;
1022
  cris)
1023
    echo "ARCH=cris" >> $config_mak
1024
    echo "#define HOST_CRIS 1" >> $config_h
1025
  ;;
1026
  hppa)
1027
    echo "ARCH=hppa" >> $config_mak
1028
    echo "#define HOST_HPPA 1" >> $config_h
1029
  ;;
1030
  ia64)
1031
    echo "ARCH=ia64" >> $config_mak
1032
    echo "#define HOST_IA64 1" >> $config_h
1033
  ;;
1034
  m68k)
1035
    echo "ARCH=m68k" >> $config_mak
1036
    echo "#define HOST_M68K 1" >> $config_h
1037
  ;;
1038
  mips)
1039
    echo "ARCH=mips" >> $config_mak
1040
    echo "#define HOST_MIPS 1" >> $config_h
1041
  ;;
1042
  mips64)
1043
    echo "ARCH=mips64" >> $config_mak
1044
    echo "#define HOST_MIPS64 1" >> $config_h
1045
  ;;
1046
  powerpc)
1047
  if test "$hostlongbits" = "32"; then
1048
      echo "ARCH=ppc" >> $config_mak
1049
      echo "#define HOST_PPC 1" >> $config_h
1050
  else
1051
      echo "ARCH=ppc64" >> $config_mak
1052
      echo "#define HOST_PPC64 1" >> $config_h
1053
  fi
1054
  ;;
1055
  s390)
1056
    echo "ARCH=s390" >> $config_mak
1057
    echo "#define HOST_S390 1" >> $config_h
1058
  ;;
1059
  sparc)
1060
    echo "ARCH=sparc" >> $config_mak
1061
    echo "#define HOST_SPARC 1" >> $config_h
1062
  ;;
1063
  sparc64)
1064
    echo "ARCH=sparc64" >> $config_mak
1065
    echo "#define HOST_SPARC64 1" >> $config_h
1066
  ;;
1067
  *)
1068
    echo "Unsupported CPU = $cpu"
1069
    exit 1
1070
  ;;
1071
esac
1072
if test "$bigendian" = "yes" ; then
1073
  echo "WORDS_BIGENDIAN=yes" >> $config_mak
1074
  echo "#define WORDS_BIGENDIAN 1" >> $config_h
1075
fi
1076
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1077
if test "$mingw32" = "yes" ; then
1078
  echo "CONFIG_WIN32=yes" >> $config_mak
1079
  echo "#define CONFIG_WIN32 1" >> $config_h
1080
else
1081
  cat > $TMPC << EOF
1082
#include <byteswap.h>
1083
int main(void) { return bswap_32(0); }
1084
EOF
1085
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1086
    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1087
  fi
1088
fi
1089
if test "$darwin" = "yes" ; then
1090
  echo "CONFIG_DARWIN=yes" >> $config_mak
1091
  echo "#define CONFIG_DARWIN 1" >> $config_h
1092
fi
1093
if test "$solaris" = "yes" ; then
1094
  echo "CONFIG_SOLARIS=yes" >> $config_mak
1095
  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1096
  if test "$needs_libsunmath" = "yes" ; then
1097
    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1098
    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1099
  fi
1100
fi
1101
if test -n "$sparc_cpu"; then
1102
  echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1103
  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1104
fi
1105
if test "$gdbstub" = "yes" ; then
1106
  echo "CONFIG_GDBSTUB=yes" >> $config_mak
1107
  echo "#define CONFIG_GDBSTUB 1" >> $config_h
1108
fi
1109
if test "$gprof" = "yes" ; then
1110
  echo "TARGET_GPROF=yes" >> $config_mak
1111
  echo "#define HAVE_GPROF 1" >> $config_h
1112
fi
1113
if test "$static" = "yes" ; then
1114
  echo "CONFIG_STATIC=yes" >> $config_mak
1115
  echo "#define CONFIG_STATIC 1" >> $config_h
1116
fi
1117
if test $profiler = "yes" ; then
1118
  echo "#define CONFIG_PROFILER 1" >> $config_h
1119
fi
1120
if test "$slirp" = "yes" ; then
1121
  echo "CONFIG_SLIRP=yes" >> $config_mak
1122
  echo "#define CONFIG_SLIRP 1" >> $config_h
1123
fi
1124
if test "$vde" = "yes" ; then
1125
  echo "CONFIG_VDE=yes" >> $config_mak
1126
  echo "#define CONFIG_VDE 1" >> $config_h
1127
  echo "VDE_LIBS=-lvdeplug" >> $config_mak
1128
fi
1129
for card in $audio_card_list; do
1130
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1131
    echo "$def=yes" >> $config_mak
1132
    echo "#define $def 1" >> $config_h
1133
done
1134
echo "#define AUDIO_DRIVERS \\" >> $config_h
1135
for drv in $audio_drv_list; do
1136
    echo "    &${drv}_audio_driver, \\" >>$config_h
1137
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1138
    echo "$def=yes" >> $config_mak
1139
    if test "$drv" = "fmod"; then
1140
        echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1141
        echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1142
    fi
1143
done
1144
echo "" >>$config_h
1145
if test "$mixemu" = "yes" ; then
1146
  echo "CONFIG_MIXEMU=yes" >> $config_mak
1147
  echo "#define CONFIG_MIXEMU 1" >> $config_h
1148
fi
1149
if test "$vnc_tls" = "yes" ; then
1150
  echo "CONFIG_VNC_TLS=yes" >> $config_mak
1151
  echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1152
  echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1153
  echo "#define CONFIG_VNC_TLS 1" >> $config_h
1154
fi
1155
qemu_version=`head $source_path/VERSION`
1156
echo "VERSION=$qemu_version" >>$config_mak
1157
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1158

    
1159
echo "SRC_PATH=$source_path" >> $config_mak
1160
if [ "$source_path_used" = "yes" ]; then
1161
  echo "VPATH=$source_path" >> $config_mak
1162
fi
1163
echo "TARGET_DIRS=$target_list" >> $config_mak
1164
if [ "$build_docs" = "yes" ] ; then
1165
  echo "BUILD_DOCS=yes" >> $config_mak
1166
fi
1167
if test "$static" = "yes"; then
1168
  sdl1=$sdl_static
1169
else
1170
  sdl1=$sdl
1171
fi
1172
if test "$sdl1" = "yes" ; then
1173
  echo "#define CONFIG_SDL 1" >> $config_h
1174
  echo "CONFIG_SDL=yes" >> $config_mak
1175
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1176
    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1177
  else
1178
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1179
  fi
1180
  if [ "${aa}" = "yes" ] ; then
1181
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1182
  else
1183
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1184
  fi
1185
fi
1186
if test "$cocoa" = "yes" ; then
1187
  echo "#define CONFIG_COCOA 1" >> $config_h
1188
  echo "CONFIG_COCOA=yes" >> $config_mak
1189
fi
1190
if test "$curses" = "yes" ; then
1191
  echo "#define CONFIG_CURSES 1" >> $config_h
1192
  echo "CONFIG_CURSES=yes" >> $config_mak
1193
  echo "CURSES_LIBS=-lcurses" >> $config_mak
1194
fi
1195
if test "$brlapi" = "yes" ; then
1196
  echo "CONFIG_BRLAPI=yes" >> $config_mak
1197
  echo "#define CONFIG_BRLAPI 1" >> $config_h
1198
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1199
fi
1200
if test "$aio" = "yes" ; then
1201
  echo "#define CONFIG_AIO 1" >> $config_h
1202
fi
1203

    
1204
# XXX: suppress that
1205
if [ "$bsd" = "yes" ] ; then
1206
  echo "#define O_LARGEFILE 0" >> $config_h
1207
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1208
  echo "#define _BSD 1" >> $config_h
1209
fi
1210

    
1211
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1212

    
1213
tools=
1214
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1215
  tools="qemu-img\$(EXESUF) $tools"
1216
  if [ "$linux" = "yes" ] ; then
1217
      tools="qemu-nbd\$(EXESUF) $tools"
1218
  fi
1219
fi
1220
echo "TOOLS=$tools" >> $config_mak
1221

    
1222
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1223

    
1224
for target in $target_list; do
1225
target_dir="$target"
1226
config_mak=$target_dir/config.mak
1227
config_h=$target_dir/config.h
1228
target_cpu=`echo $target | cut -d '-' -f 1`
1229
target_bigendian="no"
1230
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1231
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1232
[ "$target_cpu" = "mips" ] && target_bigendian=yes
1233
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1234
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1235
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1236
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1237
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1238
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1239
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1240
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1241
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1242
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1243
target_softmmu="no"
1244
target_user_only="no"
1245
target_linux_user="no"
1246
target_darwin_user="no"
1247
case "$target" in
1248
  ${target_cpu}-softmmu)
1249
    target_softmmu="yes"
1250
    ;;
1251
  ${target_cpu}-linux-user)
1252
    target_user_only="yes"
1253
    target_linux_user="yes"
1254
    ;;
1255
  ${target_cpu}-darwin-user)
1256
    target_user_only="yes"
1257
    target_darwin_user="yes"
1258
    ;;
1259
  *)
1260
    echo "ERROR: Target '$target' not recognised"
1261
    exit 1
1262
    ;;
1263
esac
1264

    
1265
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1266
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1267
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1268
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1269
    echo "Note that this will disable all output from the virtual graphics card"
1270
    echo "except through VNC or curses."
1271
    exit 1;
1272
fi
1273

    
1274
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1275

    
1276
test -f $config_h && mv $config_h ${config_h}~
1277

    
1278
mkdir -p $target_dir
1279
mkdir -p $target_dir/fpu
1280
mkdir -p $target_dir/tcg
1281
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1282
  mkdir -p $target_dir/nwfpe
1283
fi
1284

    
1285
#
1286
# don't use ln -sf as not all "ln -sf" over write the file/link
1287
#
1288
rm -f $target_dir/Makefile
1289
ln -s $source_path/Makefile.target $target_dir/Makefile
1290

    
1291

    
1292
echo "# Automatically generated by configure - do not modify" > $config_mak
1293
echo "/* Automatically generated by configure - do not modify */" > $config_h
1294

    
1295

    
1296
echo "include ../config-host.mak" >> $config_mak
1297
echo "#include \"../config-host.h\"" >> $config_h
1298

    
1299
bflt="no"
1300
elfload32="no"
1301
target_nptl="no"
1302
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1303
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1304

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

    
1467
if test "$target_cpu" = "arm" \
1468
     -o "$target_cpu" = "armeb" \
1469
     -o "$target_cpu" = "m68k" \
1470
     -o "$target_cpu" = "mips" \
1471
     -o "$target_cpu" = "mipsel" \
1472
     -o "$target_cpu" = "mipsn32" \
1473
     -o "$target_cpu" = "mipsn32el" \
1474
     -o "$target_cpu" = "mips64" \
1475
     -o "$target_cpu" = "mips64el" \
1476
     -o "$target_cpu" = "sparc" \
1477
     -o "$target_cpu" = "sparc64" \
1478
     -o "$target_cpu" = "sparc32plus"; then
1479
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1480
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1481
fi
1482
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1483
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1484
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1485
fi
1486
if test "$target_user_only" = "yes" \
1487
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1488
  echo "#define USE_NPTL 1" >> $config_h
1489
fi
1490
# 32 bit ELF loader in addition to native 64 bit loader?
1491
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1492
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1493
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1494
fi
1495

    
1496
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1497

    
1498
done # for target in $targets
1499

    
1500
# build tree in object directory if source path is different from current one
1501
if test "$source_path_used" = "yes" ; then
1502
    DIRS="tests tests/cris slirp audio"
1503
    FILES="Makefile tests/Makefile"
1504
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1505
    FILES="$FILES tests/test-mmap.c"
1506
    for dir in $DIRS ; do
1507
            mkdir -p $dir
1508
    done
1509
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1510
    for f in $FILES ; do
1511
        rm -f $f
1512
        ln -s $source_path/$f $f
1513
    done
1514
fi
1515

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