Statistics
| Branch: | Revision:

root / configure @ ac41a620

History | View | Annotate | Download (41.6 kB)

1
#!/bin/sh
2
#
3
# qemu configure script (c) 2003 Fabrice Bellard
4
#
5
# set temporary file name
6
if test ! -z "$TMPDIR" ; then
7
    TMPDIR1="${TMPDIR}"
8
elif test ! -z "$TEMPDIR" ; then
9
    TMPDIR1="${TEMPDIR}"
10
else
11
    TMPDIR1="/tmp"
12
fi
13

    
14
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
17
TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
18

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
562

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

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

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

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

    
636
else
637

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

    
651
fi
652

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

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

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

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

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

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

    
705
##########################################
706
# SDL probe
707

    
708
sdl_too_old=no
709

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

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

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

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

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

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

    
788
##########################################
789
# Sound support libraries probe
790

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

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

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

    
832
    esd)
833
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
834
    ;;
835

    
836
    pa)
837
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
838
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
839
    ;;
840

    
841
    oss|sdl|core|wav|dsound)
842
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
843
    ;;
844

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

    
857
##########################################
858
# BrlAPI probe
859

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

    
871
##########################################
872
# curses probe
873

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

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

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

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

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

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

    
985
#echo "Creating $config_mak and $config_h"
986

    
987
test -f $config_h && mv $config_h ${config_h}~
988

    
989
echo "# Automatically generated by configure - do not modify" > $config_mak
990
echo "# Configured with: $0 $@" >> $config_mak
991
echo "/* Automatically generated by configure - do not modify */" > $config_h
992

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

    
1105
if [ "$openbsd" = "yes" ] ; then
1106
  echo "#define ENOTSUP 4096" >> $config_h
1107
fi
1108

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

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

    
1227
# XXX: suppress that
1228
if [ "$bsd" = "yes" ] ; then
1229
  echo "#define O_LARGEFILE 0" >> $config_h
1230
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1231
  echo "#define _BSD 1" >> $config_h
1232
fi
1233

    
1234
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1235

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

    
1245
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1246

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

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

    
1297
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1298

    
1299
test -f $config_h && mv $config_h ${config_h}~
1300

    
1301
mkdir -p $target_dir
1302
mkdir -p $target_dir/fpu
1303
mkdir -p $target_dir/tcg
1304
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1305
  mkdir -p $target_dir/nwfpe
1306
fi
1307

    
1308
#
1309
# don't use ln -sf as not all "ln -sf" over write the file/link
1310
#
1311
rm -f $target_dir/Makefile
1312
ln -s $source_path/Makefile.target $target_dir/Makefile
1313

    
1314

    
1315
echo "# Automatically generated by configure - do not modify" > $config_mak
1316
echo "/* Automatically generated by configure - do not modify */" > $config_h
1317

    
1318

    
1319
echo "include ../config-host.mak" >> $config_mak
1320
echo "#include \"../config-host.h\"" >> $config_h
1321

    
1322
bflt="no"
1323
elfload32="no"
1324
target_nptl="no"
1325
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1326
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1327

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

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

    
1517
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1518

    
1519
done # for target in $targets
1520

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

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