Statistics
| Branch: | Revision:

root / configure @ 7fdf924f

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

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

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

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

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

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

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

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

    
389
if test x"$show_help" = x"yes" ; then
390
cat << EOF
391

    
392
Usage: configure [options]
393
Options: [defaults in brackets after descriptions]
394

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

    
444
cc="${cross_prefix}${cc}"
445
ar="${cross_prefix}${ar}"
446
strip="${cross_prefix}${strip}"
447

    
448
# check that the C compiler works.
449
cat > $TMPC <<EOF
450
int main(void) {}
451
EOF
452

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

    
460
# check compiler to see if we're on mingw32
461
cat > $TMPC <<EOF
462
#include <windows.h>
463
#ifndef _WIN32
464
#error not windows
465
#endif
466
int main(void) {}
467
EOF
468

    
469
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
470
    mingw32="yes"
471
fi
472

    
473
if test "$mingw32" = "yes" ; then
474
    linux="no"
475
    EXESUF=".exe"
476
    oss="no"
477
    linux_user="no"
478
fi
479

    
480
if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
481
    AIOLIBS=
482
else
483
    # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
484
    AIOLIBS="-lrt -lpthread"
485
fi
486

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

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

    
561

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

    
617
if test -z "$cross_prefix" ; then
618

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

    
629
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
630
$TMPE && bigendian="yes"
631
else
632
echo big/little test failed
633
fi
634

    
635
else
636

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

    
650
fi
651

    
652
# host long bits test
653
hostlongbits="32"
654
if test "$cpu" = "x86_64" \
655
     -o "$cpu" = "alpha" \
656
     -o "$cpu" = "ia64" \
657
     -o "$cpu" = "sparc64"; then
658
    hostlongbits="64"
659
fi
660

    
661
# ppc specific hostlongbits selection
662
if test "$cpu" = "powerpc" ; then
663
    cat > $TMPC <<EOF
664
int main(void){return sizeof(long);}
665
EOF
666

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

    
680
# check gcc options support
681
cat > $TMPC <<EOF
682
int main(void) {
683
}
684
EOF
685

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

    
698
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
699
  :
700
else
701
   nptl="no"
702
fi
703

    
704
##########################################
705
# SDL probe
706

    
707
sdl_too_old=no
708

    
709
if test -z "$sdl" ; then
710
    sdl_config="sdl-config"
711
    sdl=no
712
    sdl_static=no
713

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

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

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

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

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

    
782
##########################################
783
# Sound support libraries probe
784

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

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

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

    
826
    esd)
827
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
828
    ;;
829

    
830
    pa)
831
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
832
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
833
    ;;
834

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

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

    
851
##########################################
852
# BrlAPI probe
853

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

    
865
##########################################
866
# curses probe
867

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

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

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

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

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

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

    
979
#echo "Creating $config_mak and $config_h"
980

    
981
test -f $config_h && mv $config_h ${config_h}~
982

    
983
echo "# Automatically generated by configure - do not modify" > $config_mak
984
echo "# Configured with: $0 $@" >> $config_mak
985
echo "/* Automatically generated by configure - do not modify */" > $config_h
986

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

    
1099
if [ "$openbsd" = "yes" ] ; then
1100
  echo "#define ENOTSUP 4096" >> $config_h
1101
fi
1102

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

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

    
1220
# XXX: suppress that
1221
if [ "$bsd" = "yes" ] ; then
1222
  echo "#define O_LARGEFILE 0" >> $config_h
1223
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1224
  echo "#define _BSD 1" >> $config_h
1225
fi
1226

    
1227
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1228

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

    
1238
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1239

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

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

    
1290
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1291

    
1292
test -f $config_h && mv $config_h ${config_h}~
1293

    
1294
mkdir -p $target_dir
1295
mkdir -p $target_dir/fpu
1296
mkdir -p $target_dir/tcg
1297
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1298
  mkdir -p $target_dir/nwfpe
1299
fi
1300

    
1301
#
1302
# don't use ln -sf as not all "ln -sf" over write the file/link
1303
#
1304
rm -f $target_dir/Makefile
1305
ln -s $source_path/Makefile.target $target_dir/Makefile
1306

    
1307

    
1308
echo "# Automatically generated by configure - do not modify" > $config_mak
1309
echo "/* Automatically generated by configure - do not modify */" > $config_h
1310

    
1311

    
1312
echo "include ../config-host.mak" >> $config_mak
1313
echo "#include \"../config-host.h\"" >> $config_h
1314

    
1315
bflt="no"
1316
elfload32="no"
1317
target_nptl="no"
1318
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1319
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1320

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

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

    
1510
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1511

    
1512
done # for target in $targets
1513

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

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