Statistics
| Branch: | Revision:

root / configure @ 2fa7d3bf

History | View | Annotate | Download (40.7 kB)

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

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

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

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

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

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

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

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

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

    
349
# default flags for all hosts
350
CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
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 "  --enable-mingw32         enable Win32 cross compilation with mingw32"
419
echo "  --audio-drv-list=LIST    set audio drivers list:"
420
echo "                           Available drivers: $audio_possible_drivers"
421
echo "  --audio-card-list=LIST   set list of additional emulated audio cards"
422
echo "                           Available cards: ac97 adlib cs4231a gus"
423
echo "  --enable-mixemu          enable mixer emulation"
424
echo "  --disable-brlapi         disable BrlAPI"
425
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
426
echo "  --disable-curses         disable curses output"
427
echo "  --disable-nptl           disable usermode NPTL support"
428
echo "  --enable-system          enable all system emulation targets"
429
echo "  --disable-system         disable all system emulation targets"
430
echo "  --enable-linux-user      enable all linux usermode emulation targets"
431
echo "  --disable-linux-user     disable all linux usermode emulation targets"
432
echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
433
echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
434
echo "  --fmod-lib               path to FMOD library"
435
echo "  --fmod-inc               path to FMOD includes"
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 ""
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
if test "$mingw32" = "yes" ; then
461
    linux="no"
462
    EXESUF=".exe"
463
    oss="no"
464
fi
465

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

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

    
540

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

    
596
if test -z "$cross_prefix" ; then
597

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

    
608
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
609
$TMPE && bigendian="yes"
610
else
611
echo big/little test failed
612
fi
613

    
614
else
615

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

    
629
fi
630

    
631
# host long bits test
632
hostlongbits="32"
633
if test "$cpu" = "x86_64" \
634
     -o "$cpu" = "alpha" \
635
     -o "$cpu" = "ia64" \
636
     -o "$cpu" = "sparc64"; then
637
    hostlongbits="64"
638
fi
639

    
640
# ppc specific hostlongbits selection
641
if test "$cpu" = "powerpc" ; then
642
    cat > $TMPC <<EOF
643
int main(void){return sizeof(long);}
644
EOF
645

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

    
659
# check gcc options support
660
cat > $TMPC <<EOF
661
int main(void) {
662
}
663
EOF
664

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

    
677
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
678
  :
679
else
680
   nptl="no"
681
fi
682

    
683
##########################################
684
# SDL probe
685

    
686
sdl_too_old=no
687

    
688
if test -z "$sdl" ; then
689
    sdl_config="sdl-config"
690
    sdl=no
691
    sdl_static=no
692

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

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

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

    
737
##########################################
738
# VNC TLS detection
739
if test "$vnc_tls" = "yes" ; then
740
  `pkg-config gnutls` || vnc_tls="no"
741
fi
742
if test "$vnc_tls" = "yes" ; then
743
  vnc_tls_cflags=`pkg-config --cflags gnutls`
744
  vnc_tls_libs=`pkg-config --libs gnutls`
745
fi
746

    
747
##########################################
748
# vde libraries probe
749
if test "$vde" = "yes" ; then
750
  cat > $TMPC << EOF
751
#include <libvdeplug.h>
752
int main(void) { struct vde_open_args a = {0, 0, 0} ; return 0;}
753
EOF
754
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
755
        :
756
    else
757
        vde="no"
758
    fi
759
fi
760

    
761
##########################################
762
# Sound support libraries probe
763

    
764
audio_drv_probe()
765
{
766
    drv=$1
767
    hdr=$2
768
    lib=$3
769
    exp=$4
770
    cfl=$5
771
        cat > $TMPC << EOF
772
#include <$hdr>
773
int main(void) { $exp }
774
EOF
775
    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
776
        :
777
    else
778
        echo
779
        echo "Error: $drv check failed"
780
        echo "Make sure to have the $drv libs and headers installed."
781
        echo
782
        exit 1
783
    fi
784
}
785

    
786
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
787
for drv in $audio_drv_list; do
788
    case $drv in
789
    alsa)
790
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
791
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
792
    ;;
793

    
794
    fmod)
795
    if test -z $fmod_lib || test -z $fmod_inc; then
796
        echo
797
        echo "Error: You must specify path to FMOD library and headers"
798
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
799
        echo
800
        exit 1
801
    fi
802
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
803
    ;;
804

    
805
    esd)
806
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
807
    ;;
808

    
809
    pa)
810
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
811
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
812
    ;;
813

    
814
    *)
815
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
816
        echo
817
        echo "Error: Unknown driver '$drv' selected"
818
        echo "Possible drivers are: $audio_possible_drivers"
819
        echo
820
        exit 1
821
    }
822
    ;;
823

    
824
    esac
825
done
826

    
827
##########################################
828
# BrlAPI probe
829

    
830
if test -z "$brlapi" ; then
831
    brlapi=no
832
cat > $TMPC << EOF
833
#include <brlapi.h>
834
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
835
EOF
836
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
837
	    brlapi=yes
838
    fi # brlapi compile test
839
fi # -z $brlapi
840

    
841
##########################################
842
# curses probe
843

    
844
if test "$curses" = "yes" ; then
845
  curses=no
846
  cat > $TMPC << EOF
847
#include <curses.h>
848
int main(void) { return curses_version(); }
849
EOF
850
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
851
    curses=yes
852
  fi
853
fi # test "$curses"
854

    
855
# Check if tools are available to build documentation.
856
if [ -x "`which texi2html 2>/dev/null`" ] && \
857
   [ -x "`which pod2man 2>/dev/null`" ]; then
858
  build_docs="yes"
859
fi
860

    
861
if test "$mingw32" = "yes" ; then
862
  if test -z "$prefix" ; then
863
      prefix="/c/Program Files/Qemu"
864
  fi
865
  mansuffix=""
866
  datasuffix=""
867
  docsuffix=""
868
  binsuffix=""
869
else
870
  if test -z "$prefix" ; then
871
      prefix="/usr/local"
872
  fi
873
  mansuffix="/share/man"
874
  datasuffix="/share/qemu"
875
  docsuffix="/share/doc/qemu"
876
  binsuffix="/bin"
877
fi
878

    
879
echo "Install prefix    $prefix"
880
echo "BIOS directory    $prefix$datasuffix"
881
echo "binary directory  $prefix$binsuffix"
882
if test "$mingw32" = "no" ; then
883
echo "Manual directory  $prefix$mansuffix"
884
echo "ELF interp prefix $interp_prefix"
885
fi
886
echo "Source path       $source_path"
887
echo "C compiler        $cc"
888
echo "Host C compiler   $host_cc"
889
echo "ARCH_CFLAGS       $ARCH_CFLAGS"
890
echo "make              $make"
891
echo "install           $install"
892
echo "host CPU          $cpu"
893
echo "host big endian   $bigendian"
894
echo "target list       $target_list"
895
echo "gprof enabled     $gprof"
896
echo "profiler          $profiler"
897
echo "static build      $static"
898
echo "-Werror enabled   $werror"
899
if test "$darwin" = "yes" ; then
900
    echo "Cocoa support     $cocoa"
901
fi
902
echo "SDL support       $sdl"
903
if test "$sdl" != "no" ; then
904
    echo "SDL static link   $sdl_static"
905
fi
906
echo "curses support    $curses"
907
echo "mingw32 support   $mingw32"
908
echo "Audio drivers     $audio_drv_list"
909
echo "Extra audio cards $audio_card_list"
910
echo "Mixer emulation   $mixemu"
911
echo "VNC TLS support   $vnc_tls"
912
if test "$vnc_tls" = "yes" ; then
913
    echo "    TLS CFLAGS    $vnc_tls_cflags"
914
    echo "    TLS LIBS      $vnc_tls_libs"
915
fi
916
if test -n "$sparc_cpu"; then
917
    echo "Target Sparc Arch $sparc_cpu"
918
fi
919
echo "kqemu support     $kqemu"
920
echo "brlapi support    $brlapi"
921
echo "Documentation     $build_docs"
922
[ ! -z "$uname_release" ] && \
923
echo "uname -r          $uname_release"
924
echo "NPTL support      $nptl"
925
echo "vde support       $vde"
926

    
927
if test $sdl_too_old = "yes"; then
928
echo "-> Your SDL version is too old - please upgrade to have SDL support"
929
fi
930
if [ -s /tmp/qemu-$$-sdl-config.log ]; then
931
  echo "The error log from compiling the libSDL test is: "
932
  cat /tmp/qemu-$$-sdl-config.log
933
fi
934
rm -f /tmp/qemu-$$-sdl-config.log
935
#if test "$sdl_static" = "no"; then
936
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
937
#fi
938
config_mak="config-host.mak"
939
config_h="config-host.h"
940

    
941
#echo "Creating $config_mak and $config_h"
942

    
943
test -f $config_h && mv $config_h ${config_h}~
944

    
945
echo "# Automatically generated by configure - do not modify" > $config_mak
946
echo "# Configured with: $0 $@" >> $config_mak
947
echo "/* Automatically generated by configure - do not modify */" > $config_h
948

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

    
1130
echo "SRC_PATH=$source_path" >> $config_mak
1131
if [ "$source_path_used" = "yes" ]; then
1132
  echo "VPATH=$source_path" >> $config_mak
1133
fi
1134
echo "TARGET_DIRS=$target_list" >> $config_mak
1135
if [ "$build_docs" = "yes" ] ; then
1136
  echo "BUILD_DOCS=yes" >> $config_mak
1137
fi
1138
if test "$static" = "yes"; then
1139
  sdl1=$sdl_static
1140
else
1141
  sdl1=$sdl
1142
fi
1143
if test "$sdl1" = "yes" ; then
1144
  echo "#define CONFIG_SDL 1" >> $config_h
1145
  echo "CONFIG_SDL=yes" >> $config_mak
1146
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1147
    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1148
  else
1149
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1150
  fi
1151
  if [ "${aa}" = "yes" ] ; then
1152
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1153
  else
1154
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1155
  fi
1156
fi
1157
if test "$cocoa" = "yes" ; then
1158
  echo "#define CONFIG_COCOA 1" >> $config_h
1159
  echo "CONFIG_COCOA=yes" >> $config_mak
1160
fi
1161
if test "$curses" = "yes" ; then
1162
  echo "#define CONFIG_CURSES 1" >> $config_h
1163
  echo "CONFIG_CURSES=yes" >> $config_mak
1164
  echo "CURSES_LIBS=-lcurses" >> $config_mak
1165
fi
1166
if test "$brlapi" = "yes" ; then
1167
  echo "CONFIG_BRLAPI=yes" >> $config_mak
1168
  echo "#define CONFIG_BRLAPI 1" >> $config_h
1169
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1170
fi
1171

    
1172
# XXX: suppress that
1173
if [ "$bsd" = "yes" ] ; then
1174
  echo "#define O_LARGEFILE 0" >> $config_h
1175
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1176
  echo "#define _BSD 1" >> $config_h
1177
fi
1178

    
1179
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1180

    
1181
tools=
1182
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1183
  tools="qemu-img\$(EXESUF) $tools"
1184
  if [ "$linux" = "yes" ] ; then
1185
      tools="qemu-nbd\$(EXESUF) $tools"
1186
  fi
1187
fi
1188
echo "TOOLS=$tools" >> $config_mak
1189

    
1190
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1191

    
1192
for target in $target_list; do
1193
target_dir="$target"
1194
config_mak=$target_dir/config.mak
1195
config_h=$target_dir/config.h
1196
target_cpu=`echo $target | cut -d '-' -f 1`
1197
target_bigendian="no"
1198
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1199
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1200
[ "$target_cpu" = "mips" ] && target_bigendian=yes
1201
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1202
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1203
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1204
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1205
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1206
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1207
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1208
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1209
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1210
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1211
target_softmmu="no"
1212
target_user_only="no"
1213
target_linux_user="no"
1214
target_darwin_user="no"
1215
case "$target" in
1216
  ${target_cpu}-softmmu)
1217
    target_softmmu="yes"
1218
    ;;
1219
  ${target_cpu}-linux-user)
1220
    target_user_only="yes"
1221
    target_linux_user="yes"
1222
    ;;
1223
  ${target_cpu}-darwin-user)
1224
    target_user_only="yes"
1225
    target_darwin_user="yes"
1226
    ;;
1227
  *)
1228
    echo "ERROR: Target '$target' not recognised"
1229
    exit 1
1230
    ;;
1231
esac
1232

    
1233
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1234
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1235
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1236
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1237
    echo "Note that this will disable all output from the virtual graphics card"
1238
    echo "except through VNC or curses."
1239
    exit 1;
1240
fi
1241

    
1242
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1243

    
1244
test -f $config_h && mv $config_h ${config_h}~
1245

    
1246
mkdir -p $target_dir
1247
mkdir -p $target_dir/fpu
1248
mkdir -p $target_dir/tcg
1249
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1250
  mkdir -p $target_dir/nwfpe
1251
fi
1252

    
1253
#
1254
# don't use ln -sf as not all "ln -sf" over write the file/link
1255
#
1256
rm -f $target_dir/Makefile
1257
ln -s $source_path/Makefile.target $target_dir/Makefile
1258

    
1259

    
1260
echo "# Automatically generated by configure - do not modify" > $config_mak
1261
echo "/* Automatically generated by configure - do not modify */" > $config_h
1262

    
1263

    
1264
echo "include ../config-host.mak" >> $config_mak
1265
echo "#include \"../config-host.h\"" >> $config_h
1266

    
1267
bflt="no"
1268
elfload32="no"
1269
target_nptl="no"
1270
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1271
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1272

    
1273
case "$target_cpu" in
1274
  i386)
1275
    echo "TARGET_ARCH=i386" >> $config_mak
1276
    echo "#define TARGET_ARCH \"i386\"" >> $config_h
1277
    echo "#define TARGET_I386 1" >> $config_h
1278
    if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1279
    then
1280
      echo "#define USE_KQEMU 1" >> $config_h
1281
    fi
1282
    gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1283
    if test -n "$gcc3minver" && test $gcc3minver -gt 3
1284
    then
1285
      echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1286
    else
1287
      echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1288
    fi
1289
  ;;
1290
  x86_64)
1291
    echo "TARGET_ARCH=x86_64" >> $config_mak
1292
    echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1293
    echo "#define TARGET_I386 1" >> $config_h
1294
    echo "#define TARGET_X86_64 1" >> $config_h
1295
    if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1296
    then
1297
      echo "#define USE_KQEMU 1" >> $config_h
1298
    fi
1299
  ;;
1300
  alpha)
1301
    echo "TARGET_ARCH=alpha" >> $config_mak
1302
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1303
    echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1304
    echo "#define TARGET_ALPHA 1" >> $config_h
1305
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1306
  ;;
1307
  arm|armeb)
1308
    echo "TARGET_ARCH=arm" >> $config_mak
1309
    echo "#define TARGET_ARCH \"arm\"" >> $config_h
1310
    echo "#define TARGET_ARM 1" >> $config_h
1311
    bflt="yes"
1312
    target_nptl="yes"
1313
  ;;
1314
  cris)
1315
    echo "TARGET_ARCH=cris" >> $config_mak
1316
    echo "#define TARGET_ARCH \"cris\"" >> $config_h
1317
    echo "#define TARGET_CRIS 1" >> $config_h
1318
  ;;
1319
  m68k)
1320
    echo "TARGET_ARCH=m68k" >> $config_mak
1321
    echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1322
    echo "#define TARGET_M68K 1" >> $config_h
1323
    bflt="yes"
1324
  ;;
1325
  mips|mipsel)
1326
    echo "TARGET_ARCH=mips" >> $config_mak
1327
    echo "#define TARGET_ARCH \"mips\"" >> $config_h
1328
    echo "#define TARGET_MIPS 1" >> $config_h
1329
    echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1330
  ;;
1331
  mipsn32|mipsn32el)
1332
    echo "TARGET_ARCH=mipsn32" >> $config_mak
1333
    echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1334
    echo "#define TARGET_MIPS 1" >> $config_h
1335
    echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1336
  ;;
1337
  mips64|mips64el)
1338
    echo "TARGET_ARCH=mips64" >> $config_mak
1339
    echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1340
    echo "#define TARGET_MIPS 1" >> $config_h
1341
    echo "#define TARGET_MIPS64 1" >> $config_h
1342
    echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1343
  ;;
1344
  ppc)
1345
    echo "TARGET_ARCH=ppc" >> $config_mak
1346
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1347
    echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1348
    echo "#define TARGET_PPC 1" >> $config_h
1349
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1350
  ;;
1351
  ppcemb)
1352
    echo "TARGET_ARCH=ppcemb" >> $config_mak
1353
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1354
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1355
    echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1356
    echo "#define TARGET_PPC 1" >> $config_h
1357
    echo "#define TARGET_PPCEMB 1" >> $config_h
1358
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1359
  ;;
1360
  ppc64)
1361
    echo "TARGET_ARCH=ppc64" >> $config_mak
1362
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1363
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1364
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1365
    echo "#define TARGET_PPC 1" >> $config_h
1366
    echo "#define TARGET_PPC64 1" >> $config_h
1367
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1368
  ;;
1369
  ppc64abi32)
1370
    echo "TARGET_ARCH=ppc64" >> $config_mak
1371
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1372
    echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1373
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1374
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1375
    echo "#define TARGET_PPC 1" >> $config_h
1376
    echo "#define TARGET_PPC64 1" >> $config_h
1377
    echo "#define TARGET_ABI32 1" >> $config_h
1378
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1379
  ;;
1380
  sh4|sh4eb)
1381
    echo "TARGET_ARCH=sh4" >> $config_mak
1382
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1383
    echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1384
    echo "#define TARGET_SH4 1" >> $config_h
1385
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1386
    bflt="yes"
1387
  ;;
1388
  sparc)
1389
    echo "TARGET_ARCH=sparc" >> $config_mak
1390
    echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1391
    echo "#define TARGET_SPARC 1" >> $config_h
1392
  ;;
1393
  sparc64)
1394
    echo "TARGET_ARCH=sparc64" >> $config_mak
1395
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1396
    echo "#define TARGET_SPARC 1" >> $config_h
1397
    echo "#define TARGET_SPARC64 1" >> $config_h
1398
    elfload32="yes"
1399
  ;;
1400
  sparc32plus)
1401
    echo "TARGET_ARCH=sparc64" >> $config_mak
1402
    echo "TARGET_ABI_DIR=sparc" >> $config_mak
1403
    echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1404
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1405
    echo "#define TARGET_SPARC 1" >> $config_h
1406
    echo "#define TARGET_SPARC64 1" >> $config_h
1407
    echo "#define TARGET_ABI32 1" >> $config_h
1408
  ;;
1409
  *)
1410
    echo "Unsupported target CPU"
1411
    exit 1
1412
  ;;
1413
esac
1414
if test "$target_bigendian" = "yes" ; then
1415
  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1416
  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1417
fi
1418
if test "$target_softmmu" = "yes" ; then
1419
  echo "CONFIG_SOFTMMU=yes" >> $config_mak
1420
  echo "#define CONFIG_SOFTMMU 1" >> $config_h
1421
fi
1422
if test "$target_user_only" = "yes" ; then
1423
  echo "CONFIG_USER_ONLY=yes" >> $config_mak
1424
  echo "#define CONFIG_USER_ONLY 1" >> $config_h
1425
fi
1426
if test "$target_linux_user" = "yes" ; then
1427
  echo "CONFIG_LINUX_USER=yes" >> $config_mak
1428
  echo "#define CONFIG_LINUX_USER 1" >> $config_h
1429
fi
1430
if test "$target_darwin_user" = "yes" ; then
1431
  echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1432
  echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1433
fi
1434

    
1435
if test "$target_cpu" = "arm" \
1436
     -o "$target_cpu" = "armeb" \
1437
     -o "$target_cpu" = "m68k" \
1438
     -o "$target_cpu" = "mips" \
1439
     -o "$target_cpu" = "mipsel" \
1440
     -o "$target_cpu" = "mipsn32" \
1441
     -o "$target_cpu" = "mipsn32el" \
1442
     -o "$target_cpu" = "mips64" \
1443
     -o "$target_cpu" = "mips64el" \
1444
     -o "$target_cpu" = "sparc" \
1445
     -o "$target_cpu" = "sparc64" \
1446
     -o "$target_cpu" = "sparc32plus"; then
1447
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1448
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1449
fi
1450
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1451
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1452
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1453
fi
1454
if test "$target_user_only" = "yes" \
1455
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1456
  echo "#define USE_NPTL 1" >> $config_h
1457
fi
1458
# 32 bit ELF loader in addition to native 64 bit loader?
1459
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1460
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1461
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1462
fi
1463

    
1464
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1465

    
1466
done # for target in $targets
1467

    
1468
# build tree in object directory if source path is different from current one
1469
if test "$source_path_used" = "yes" ; then
1470
    DIRS="tests tests/cris slirp audio"
1471
    FILES="Makefile tests/Makefile"
1472
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1473
    FILES="$FILES tests/test-mmap.c"
1474
    for dir in $DIRS ; do
1475
            mkdir -p $dir
1476
    done
1477
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1478
    for f in $FILES ; do
1479
        rm -f $f
1480
        ln -s $source_path/$f $f
1481
    done
1482
fi
1483

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