Statistics
| Branch: | Revision:

root / configure @ e9df014c

History | View | Annotate | Download (28.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 gcc34 gcc-3.3 gcc33 gcc-3.2 gcc32"
27
host_cc="gcc"
28
ar="ar"
29
make="make"
30
install="install"
31
strip="strip"
32
cpu=`uname -m`
33
target_list=""
34
case "$cpu" in
35
  i386|i486|i586|i686|i86pc|BePC)
36
    cpu="i386"
37
  ;;
38
  armv*b)
39
    cpu="armv4b"
40
  ;;
41
  armv*l)
42
    cpu="armv4l"
43
  ;;
44
  alpha)
45
    cpu="alpha"
46
  ;;
47
  "Power Macintosh"|ppc|ppc64)
48
    cpu="powerpc"
49
  ;;
50
  mips)
51
    cpu="mips"
52
  ;;
53
  mips64)
54
    cpu="mips64"
55
  ;;
56
  s390)
57
    cpu="s390"
58
  ;;
59
  sparc|sun4[muv])
60
    cpu="sparc"
61
  ;;
62
  sparc64)
63
    cpu="sparc64"
64
  ;;
65
  ia64)
66
    cpu="ia64"
67
  ;;
68
  m68k)
69
    cpu="m68k"
70
  ;;
71
  x86_64|amd64)
72
    cpu="x86_64"
73
  ;;
74
  *)
75
    cpu="unknown"
76
  ;;
77
esac
78
gprof="no"
79
bigendian="no"
80
mingw32="no"
81
EXESUF=""
82
gdbstub="yes"
83
slirp="yes"
84
adlib="no"
85
oss="no"
86
dsound="no"
87
coreaudio="no"
88
alsa="no"
89
fmod="no"
90
fmod_lib=""
91
fmod_inc=""
92
bsd="no"
93
linux="no"
94
kqemu="no"
95
profiler="no"
96
cocoa="no"
97
check_gfx="yes"
98
check_gcc="yes"
99
softmmu="yes"
100
linux_user="no"
101
darwin_user="no"
102
build_docs="no"
103
uname_release=""
104

    
105
# OS specific
106
targetos=`uname -s`
107
case $targetos in
108
CYGWIN*)
109
mingw32="yes"
110
OS_CFLAGS="-mno-cygwin"
111
;;
112
MINGW32*)
113
mingw32="yes"
114
;;
115
FreeBSD)
116
bsd="yes"
117
oss="yes"
118
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
119
    kqemu="yes"
120
fi
121
;;
122
NetBSD)
123
bsd="yes"
124
oss="yes"
125
;;
126
OpenBSD)
127
bsd="yes"
128
oss="yes"
129
;;
130
Darwin)
131
bsd="yes"
132
darwin="yes"
133
darwin_user="yes"
134
cocoa="yes"
135
coreaudio="yes"
136
OS_CFLAGS="-mdynamic-no-pic"
137
;;
138
SunOS)
139
    solaris="yes"
140
    make="gmake"
141
    install="ginstall"
142
    needs_libsunmath="no"
143
    solarisrev=`uname -r | cut -f2 -d.`
144
    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
145
        if test "$solarisrev" -le 9 ; then
146
            if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
147
                needs_libsunmath="yes"
148
            else
149
                echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
150
                echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
151
                echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
152
                echo "Studio 11 can be downloaded from www.sun.com."
153
                exit 1
154
            fi
155
        fi
156
        if test "$solarisrev" -ge 9 ; then
157
            kqemu="yes"
158
        fi
159
    fi
160
;;
161
*)
162
oss="yes"
163
linux="yes"
164
linux_user="yes"
165
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
166
    kqemu="yes"
167
fi
168
;;
169
esac
170

    
171
if [ "$bsd" = "yes" ] ; then
172
  if [ "$darwin" != "yes" ] ; then
173
    make="gmake"
174
  fi
175
fi
176

    
177
# find source path
178
source_path=`dirname "$0"`
179
if [ -z "$source_path" ]; then
180
    source_path=`pwd`
181
else
182
    source_path=`cd "$source_path"; pwd`
183
fi
184
if test "$source_path" = `pwd` ; then
185
    source_path_used="no"
186
else
187
    source_path_used="yes"
188
fi
189

    
190
for opt do
191
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
192
  case "$opt" in
193
  --help|-h) show_help=yes
194
  ;;
195
  --prefix=*) prefix="$optarg"
196
  ;;
197
  --interp-prefix=*) interp_prefix="$optarg"
198
  ;;
199
  --source-path=*) source_path="$optarg"
200
  source_path_used="yes"
201
  ;;
202
  --cross-prefix=*) cross_prefix="$optarg"
203
  ;;
204
  --cc=*) cc="$optarg"
205
  gcc3_search="no"
206
  ;;
207
  --host-cc=*) host_cc="$optarg"
208
  ;;
209
  --make=*) make="$optarg"
210
  ;;
211
  --install=*) install="$optarg"
212
  ;;
213
  --extra-cflags=*) CFLAGS="$optarg"
214
  ;;
215
  --extra-ldflags=*) LDFLAGS="$optarg"
216
  ;;
217
  --cpu=*) cpu="$optarg"
218
  ;;
219
  --target-list=*) target_list="$optarg"
220
  ;;
221
  --enable-gprof) gprof="yes"
222
  ;;
223
  --static) static="yes"
224
  ;;
225
  --disable-sdl) sdl="no"
226
  ;;
227
  --enable-coreaudio) coreaudio="yes"
228
  ;;
229
  --enable-alsa) alsa="yes"
230
  ;;
231
  --enable-dsound) dsound="yes"
232
  ;;
233
  --enable-fmod) fmod="yes"
234
  ;;
235
  --fmod-lib=*) fmod_lib="$optarg"
236
  ;;
237
  --fmod-inc=*) fmod_inc="$optarg"
238
  ;;
239
  --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
240
  ;;
241
  --disable-slirp) slirp="no"
242
  ;;
243
  --enable-adlib) adlib="yes"
244
  ;;
245
  --disable-kqemu) kqemu="no"
246
  ;;
247
  --enable-profiler) profiler="yes"
248
  ;;
249
  --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
250
  ;;
251
  --disable-gfx-check) check_gfx="no"
252
  ;;
253
  --disable-gcc-check) check_gcc="no"
254
  ;;
255
  --disable-system) softmmu="no"
256
  ;;
257
  --enable-system) softmmu="yes"
258
  ;;
259
  --disable-linux-user) linux_user="no"
260
  ;;
261
  --enable-linux-user) linux_user="yes"
262
  ;;
263
  --disable-darwin-user) darwin_user="no"
264
  ;;
265
  --enable-darwin-user) darwin_user="yes"
266
  ;;
267
  --enable-uname-release=*) uname_release="$optarg"
268
  ;;
269
  esac
270
done
271

    
272
if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
273
    AIOLIBS=
274
else
275
    AIOLIBS="-lrt"
276
fi
277

    
278
# default flags for all hosts
279
CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
280
LDFLAGS="$LDFLAGS -g"
281

    
282
if test x"$show_help" = x"yes" ; then
283
cat << EOF
284

    
285
Usage: configure [options]
286
Options: [defaults in brackets after descriptions]
287

    
288
EOF
289
echo "Standard options:"
290
echo "  --help                   print this message"
291
echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
292
echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
293
echo "                           use %M for cpu name [$interp_prefix]"
294
echo "  --target-list=LIST       set target list [$target_list]"
295
echo ""
296
echo "kqemu kernel acceleration support:"
297
echo "  --disable-kqemu          disable kqemu support"
298
echo ""
299
echo "Advanced options (experts only):"
300
echo "  --source-path=PATH       path of source code [$source_path]"
301
echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
302
echo "  --cc=CC                  use C compiler CC [$cc]"
303
echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
304
echo "  --make=MAKE              use specified make [$make]"
305
echo "  --install=INSTALL        use specified install [$install]"
306
echo "  --static                 enable static build [$static]"
307
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
308
echo "  --enable-mingw32         enable Win32 cross compilation with mingw32"
309
echo "  --enable-adlib           enable Adlib emulation"
310
echo "  --enable-coreaudio       enable Coreaudio audio driver"
311
echo "  --enable-alsa            enable ALSA audio driver"
312
echo "  --enable-fmod            enable FMOD audio driver"
313
echo "  --enable-dsound          enable DirectSound audio driver"
314
echo "  --enable-system          enable all system emulation targets"
315
echo "  --disable-system         disable all system emulation targets"
316
echo "  --enable-linux-user      enable all linux usermode emulation targets"
317
echo "  --disable-linux-user     disable all linux usermode emulation targets"
318
echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
319
echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
320
echo "  --fmod-lib               path to FMOD library"
321
echo "  --fmod-inc               path to FMOD includes"
322
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
323
echo ""
324
echo "NOTE: The object files are built at the place where configure is launched"
325
exit 1
326
fi
327

    
328
cc="${cross_prefix}${cc}"
329
ar="${cross_prefix}${ar}"
330
strip="${cross_prefix}${strip}"
331

    
332
# check that the C compiler works.
333
cat > $TMPC <<EOF
334
int main(void) {}
335
EOF
336

    
337
if $cc -c -o $TMPO $TMPC 2> /dev/null ; then
338
  : C compiler works ok
339
else
340
    echo "ERROR: \"$cc\" either does not exist or does not work"
341
    exit 1
342
fi
343

    
344
if test "$mingw32" = "yes" ; then
345
    linux="no"
346
    EXESUF=".exe"
347
    oss="no"
348
    if [ "$cpu" = "i386" ] ; then
349
        kqemu="yes"
350
    fi
351
fi
352

    
353
# Check for gcc4, error if pre-gcc4 
354
if test "$check_gcc" = "yes" ; then
355
    cat > $TMPC <<EOF
356
#if __GNUC__ < 4
357
#error gcc3
358
#endif
359
int main(){return 0;}
360
EOF
361
    check_cc() {
362
	which "$1" 2> /dev/null
363
	return $?
364
    }
365

    
366
    if "$cc" -o $TMPE $TMPC 2> /dev/null ; then
367
	echo "WARNING: \"$cc\" looks like gcc 4.x"
368
	found_compat_cc="no"
369
	if test "$gcc3_search" = "yes" ; then
370
	    echo "Looking for gcc 3.x"
371
	    for compat_cc in $gcc3_list ; do
372
		if check_cc "$cross_prefix$compat_cc" ; then
373
		    echo "Found \"$compat_cc\""
374
		    cc="$cross_prefix$compat_cc"
375
		    found_compat_cc="yes"
376
		    break
377
		fi
378
	    done
379
	    if test "$found_compat_cc" = "no" ; then
380
		echo "gcc 3.x not found!"
381
	    fi
382
	fi
383
	if test "$found_compat_cc" = "no" ; then
384
	    echo "QEMU is known to have problems when compiled with gcc 4.x"
385
	    echo "It is recommended that you use gcc 3.x to build QEMU"
386
	    echo "To use this compiler anyway, configure with --disable-gcc-check"
387
	    exit 1;
388
	fi
389
    fi
390
fi
391

    
392
#
393
# Solaris specific configure tool chain decisions
394
#
395
if test "$solaris" = "yes" ; then
396
  #
397
  # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
398
  # override the check with --disable-gcc-check
399
  # 
400
  if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
401
    solgcc=`which $cc`
402
    if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
403
      echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
404
      echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
405
      echo "or get the latest patch from SunSolve for gcc"
406
      exit 1
407
    fi
408
  fi
409
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
410
  if test -z "$solinst" ; then
411
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
412
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
413
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
414
    exit 1
415
  fi
416
  if test "$solinst" = "/usr/sbin/install" ; then
417
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
418
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
419
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
420
    exit 1
421
  fi
422
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
423
  if test -z "$sol_ar" ; then
424
    echo "Error: No path includes ar"
425
    if test -f /usr/ccs/bin/ar ; then
426
      echo "Add /usr/ccs/bin to your path and rerun configure"
427
    fi
428
    exit 1
429
  fi
430
fi 
431

    
432

    
433
if test -z "$target_list" ; then
434
# these targets are portable
435
    if [ "$softmmu" = "yes" ] ; then
436
        target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc64-softmmu"
437
    fi
438
# the following are Linux specific
439
    if [ "$linux_user" = "yes" ] ; then
440
        target_list="i386-linux-user arm-linux-user armeb-linux-user sparc-linux-user ppc-linux-user mips-linux-user mipsel-linux-user m68k-linux-user alpha-linux-user $target_list"
441
    fi
442
# the following are Darwin specific
443
    if [ "$darwin_user" = "yes" ] ; then
444
        target_list="i386-darwin-user ppc-darwin-user $target_list"
445
    fi
446
else
447
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
448
fi
449
if test -z "$target_list" ; then
450
    echo "No targets enabled"
451
    exit 1
452
fi
453

    
454
if test -z "$cross_prefix" ; then
455

    
456
# ---
457
# big/little endian test
458
cat > $TMPC << EOF
459
#include <inttypes.h>
460
int main(int argc, char ** argv){
461
        volatile uint32_t i=0x01234567;
462
        return (*((uint8_t*)(&i))) == 0x67;
463
}
464
EOF
465

    
466
if $cc -o $TMPE $TMPC 2> /dev/null ; then
467
$TMPE && bigendian="yes"
468
else
469
echo big/little test failed
470
fi
471

    
472
else
473

    
474
# if cross compiling, cannot launch a program, so make a static guess
475
if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "mips64" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
476
    bigendian="yes"
477
fi
478

    
479
fi
480

    
481
# host long bits test
482
hostlongbits="32"
483
if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
484
    hostlongbits="64"
485
fi
486

    
487
# check gcc options support
488
cat > $TMPC <<EOF
489
int main(void) {
490
}
491
EOF
492

    
493
##########################################
494
# SDL probe
495

    
496
sdl_too_old=no
497

    
498
if test -z "$sdl" ; then
499

    
500
sdl_config="sdl-config"
501
sdl=no
502
sdl_static=no
503

    
504
if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
505
# win32 cross compilation case
506
    sdl_config="i386-mingw32msvc-sdl-config"
507
    sdl=yes
508
else
509
# normal SDL probe
510
cat > $TMPC << EOF
511
#include <SDL.h>
512
#undef main /* We don't want SDL to override our main() */
513
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
514
EOF
515

    
516
if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then
517
_sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
518
if test "$_sdlversion" -lt 121 ; then
519
sdl_too_old=yes
520
else
521
 if test "$cocoa" = "no" ; then
522
   sdl=yes
523
 fi
524
fi
525

    
526
# static link with sdl ?
527
if test "$sdl" = "yes" ; then
528
aa="no"
529
`$sdl_config --static-libs | grep \\\-laa > /dev/null` && aa="yes"
530
sdl_static_libs=`$sdl_config --static-libs`
531
if [ "$aa" = "yes" ] ; then
532
  sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
533
fi
534

    
535
if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
536
  sdl_static=yes
537
fi
538

    
539
fi # static link
540

    
541
fi # sdl compile test
542

    
543
fi # cross compilation
544

    
545
else
546
 # Make sure to disable cocoa if sdl was set
547
 if test "$sdl" = "yes" ; then
548
   cocoa="no"
549
   coreaudio="no"
550
 fi
551
fi # -z $sdl
552

    
553
##########################################
554
# alsa sound support libraries
555

    
556
if test "$alsa" = "yes" ; then
557
  cat > $TMPC << EOF
558
#include <alsa/asoundlib.h>
559
int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
560
EOF
561
  if $cc -o $TMPE $TMPC -lasound 2> /dev/null ; then
562
    :
563
  else
564
    echo
565
    echo "Error: Could not find alsa"
566
    echo "Make sure to have the alsa libs and headers installed."
567
    echo
568
    exit 1
569
  fi
570
fi
571

    
572
# Check if tools are available to build documentation.
573
if [ -x "`which texi2html`" ] && [ -x "`which pod2man`" ]; then
574
  build_docs="yes"
575
fi
576

    
577
if test "$mingw32" = "yes" ; then
578
  if test -z "$prefix" ; then
579
      prefix="/c/Program Files/Qemu"
580
  fi
581
  mansuffix=""
582
  datasuffix=""
583
  docsuffix=""
584
  binsuffix=""
585
else
586
  if test -z "$prefix" ; then
587
      prefix="/usr/local"
588
  fi
589
  mansuffix="/share/man"
590
  datasuffix="/share/qemu"
591
  docsuffix="/share/doc/qemu"
592
  binsuffix="/bin"
593
fi
594

    
595
echo "Install prefix    $prefix"
596
echo "BIOS directory    $prefix$datasuffix"
597
echo "binary directory  $prefix$binsuffix"
598
if test "$mingw32" = "no" ; then
599
echo "Manual directory  $prefix$mansuffix"
600
echo "ELF interp prefix $interp_prefix"
601
fi
602
echo "Source path       $source_path"
603
echo "C compiler        $cc"
604
echo "Host C compiler   $host_cc"
605
echo "make              $make"
606
echo "install           $install"
607
echo "host CPU          $cpu"
608
echo "host big endian   $bigendian"
609
echo "target list       $target_list"
610
echo "gprof enabled     $gprof"
611
echo "profiler          $profiler"
612
echo "static build      $static"
613
if test "$darwin" = "yes" ; then
614
    echo "Cocoa support     $cocoa"
615
fi
616
echo "SDL support       $sdl"
617
if test "$sdl" != "no" ; then
618
    echo "SDL static link   $sdl_static"
619
fi
620
echo "mingw32 support   $mingw32"
621
echo "Adlib support     $adlib"
622
echo "CoreAudio support $coreaudio"
623
echo "ALSA support      $alsa"
624
echo "DSound support    $dsound"
625
if test "$fmod" = "yes"; then
626
    if test -z $fmod_lib || test -z $fmod_inc; then
627
        echo
628
        echo "Error: You must specify path to FMOD library and headers"
629
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
630
        echo
631
        exit 1
632
    fi
633
    fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
634
else
635
    fmod_support=""
636
fi
637
echo "FMOD support      $fmod $fmod_support"
638
echo "kqemu support     $kqemu"
639
echo "Documentation     $build_docs"
640
[ ! -z "$uname_release" ] && \
641
echo "uname -r          $uname_release"
642

    
643
if test $sdl_too_old = "yes"; then
644
echo "-> Your SDL version is too old - please upgrade to have SDL support"
645
fi
646
#if test "$sdl_static" = "no"; then
647
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
648
#fi
649
config_mak="config-host.mak"
650
config_h="config-host.h"
651

    
652
#echo "Creating $config_mak and $config_h"
653

    
654
echo "# Automatically generated by configure - do not modify" > $config_mak
655
echo "# Configured with: $0 $@" >> $config_mak
656
echo "/* Automatically generated by configure - do not modify */" > $config_h
657

    
658
echo "prefix=$prefix" >> $config_mak
659
echo "bindir=\${prefix}$binsuffix" >> $config_mak
660
echo "mandir=\${prefix}$mansuffix" >> $config_mak
661
echo "datadir=\${prefix}$datasuffix" >> $config_mak
662
echo "docdir=\${prefix}$docsuffix" >> $config_mak
663
echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
664
echo "MAKE=$make" >> $config_mak
665
echo "INSTALL=$install" >> $config_mak
666
echo "CC=$cc" >> $config_mak
667
echo "HOST_CC=$host_cc" >> $config_mak
668
echo "AR=$ar" >> $config_mak
669
echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
670
echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
671
echo "CFLAGS=$CFLAGS" >> $config_mak
672
echo "LDFLAGS=$LDFLAGS" >> $config_mak
673
echo "EXESUF=$EXESUF" >> $config_mak
674
echo "AIOLIBS=$AIOLIBS" >> $config_mak
675
if test "$cpu" = "i386" ; then
676
  echo "ARCH=i386" >> $config_mak
677
  echo "#define HOST_I386 1" >> $config_h
678
elif test "$cpu" = "x86_64" ; then
679
  echo "ARCH=x86_64" >> $config_mak
680
  echo "#define HOST_X86_64 1" >> $config_h
681
elif test "$cpu" = "armv4b" ; then
682
  echo "ARCH=arm" >> $config_mak
683
  echo "#define HOST_ARM 1" >> $config_h
684
elif test "$cpu" = "armv4l" ; then
685
  echo "ARCH=arm" >> $config_mak
686
  echo "#define HOST_ARM 1" >> $config_h
687
elif test "$cpu" = "powerpc" ; then
688
  echo "ARCH=ppc" >> $config_mak
689
  echo "#define HOST_PPC 1" >> $config_h
690
elif test "$cpu" = "mips" ; then
691
  echo "ARCH=mips" >> $config_mak
692
  echo "#define HOST_MIPS 1" >> $config_h
693
elif test "$cpu" = "mips64" ; then
694
  echo "ARCH=mips64" >> $config_mak
695
  echo "#define HOST_MIPS64 1" >> $config_h
696
elif test "$cpu" = "s390" ; then
697
  echo "ARCH=s390" >> $config_mak
698
  echo "#define HOST_S390 1" >> $config_h
699
elif test "$cpu" = "alpha" ; then
700
  echo "ARCH=alpha" >> $config_mak
701
  echo "#define HOST_ALPHA 1" >> $config_h
702
elif test "$cpu" = "sparc" ; then
703
  echo "ARCH=sparc" >> $config_mak
704
  echo "#define HOST_SPARC 1" >> $config_h
705
elif test "$cpu" = "sparc64" ; then
706
  echo "ARCH=sparc64" >> $config_mak
707
  echo "#define HOST_SPARC64 1" >> $config_h
708
elif test "$cpu" = "ia64" ; then
709
  echo "ARCH=ia64" >> $config_mak
710
  echo "#define HOST_IA64 1" >> $config_h
711
elif test "$cpu" = "m68k" ; then
712
  echo "ARCH=m68k" >> $config_mak
713
  echo "#define HOST_M68K 1" >> $config_h
714
else
715
  echo "Unsupported CPU"
716
  exit 1
717
fi
718
if test "$bigendian" = "yes" ; then
719
  echo "WORDS_BIGENDIAN=yes" >> $config_mak
720
  echo "#define WORDS_BIGENDIAN 1" >> $config_h
721
fi
722
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
723
if test "$mingw32" = "yes" ; then
724
  echo "CONFIG_WIN32=yes" >> $config_mak
725
  echo "#define CONFIG_WIN32 1" >> $config_h
726
else
727
  cat > $TMPC << EOF
728
#include <byteswap.h>
729
int main(void) { return bswap_32(0); }
730
EOF
731
  if $cc -o $TMPE $TMPC 2> /dev/null ; then
732
    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
733
  fi
734
fi
735
if test "$darwin" = "yes" ; then
736
  echo "CONFIG_DARWIN=yes" >> $config_mak
737
  echo "#define CONFIG_DARWIN 1" >> $config_h
738
fi
739
if test "$solaris" = "yes" ; then
740
  echo "CONFIG_SOLARIS=yes" >> $config_mak
741
  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
742
  if test "$needs_libsunmath" = "yes" ; then
743
    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
744
    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
745
  fi
746
fi
747
if test "$gdbstub" = "yes" ; then
748
  echo "CONFIG_GDBSTUB=yes" >> $config_mak
749
  echo "#define CONFIG_GDBSTUB 1" >> $config_h
750
fi
751
if test "$gprof" = "yes" ; then
752
  echo "TARGET_GPROF=yes" >> $config_mak
753
  echo "#define HAVE_GPROF 1" >> $config_h
754
fi
755
if test "$static" = "yes" ; then
756
  echo "CONFIG_STATIC=yes" >> $config_mak
757
  echo "#define CONFIG_STATIC 1" >> $config_h
758
fi
759
if test $profiler = "yes" ; then
760
  echo "#define CONFIG_PROFILER 1" >> $config_h
761
fi
762
if test "$slirp" = "yes" ; then
763
  echo "CONFIG_SLIRP=yes" >> $config_mak
764
  echo "#define CONFIG_SLIRP 1" >> $config_h
765
fi
766
if test "$adlib" = "yes" ; then
767
  echo "CONFIG_ADLIB=yes" >> $config_mak
768
  echo "#define CONFIG_ADLIB 1" >> $config_h
769
fi
770
if test "$oss" = "yes" ; then
771
  echo "CONFIG_OSS=yes" >> $config_mak
772
  echo "#define CONFIG_OSS 1" >> $config_h
773
fi
774
if test "$coreaudio" = "yes" ; then
775
  echo "CONFIG_COREAUDIO=yes" >> $config_mak
776
  echo "#define CONFIG_COREAUDIO 1" >> $config_h
777
fi
778
if test "$alsa" = "yes" ; then
779
  echo "CONFIG_ALSA=yes" >> $config_mak
780
  echo "#define CONFIG_ALSA 1" >> $config_h
781
fi
782
if test "$dsound" = "yes" ; then
783
  echo "CONFIG_DSOUND=yes" >> $config_mak
784
  echo "#define CONFIG_DSOUND 1" >> $config_h
785
fi
786
if test "$fmod" = "yes" ; then
787
  echo "CONFIG_FMOD=yes" >> $config_mak
788
  echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
789
  echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
790
  echo "#define CONFIG_FMOD 1" >> $config_h
791
fi
792
qemu_version=`head $source_path/VERSION`
793
echo "VERSION=$qemu_version" >>$config_mak
794
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
795

    
796
echo "SRC_PATH=$source_path" >> $config_mak
797
if [ "$source_path_used" = "yes" ]; then
798
  echo "VPATH=$source_path" >> $config_mak
799
fi
800
echo "TARGET_DIRS=$target_list" >> $config_mak
801
if [ "$build_docs" = "yes" ] ; then
802
  echo "BUILD_DOCS=yes" >> $config_mak
803
fi
804

    
805
# XXX: suppress that
806
if [ "$bsd" = "yes" ] ; then
807
  echo "#define O_LARGEFILE 0" >> $config_h
808
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
809
  echo "#define _BSD 1" >> $config_h
810
fi
811

    
812
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
813

    
814
for target in $target_list; do
815
target_dir="$target"
816
config_mak=$target_dir/config.mak
817
config_h=$target_dir/config.h
818
target_cpu=`echo $target | cut -d '-' -f 1`
819
target_bigendian="no"
820
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
821
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
822
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
823
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
824
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
825
[ "$target_cpu" = "mips" ] && target_bigendian=yes
826
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
827
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
828
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
829
target_softmmu="no"
830
if expr $target : '.*-softmmu' > /dev/null ; then
831
  target_softmmu="yes"
832
fi
833
target_user_only="no"
834
if expr $target : '.*-user' > /dev/null ; then
835
  target_user_only="yes"
836
fi
837

    
838
target_linux_user="no"
839
if expr $target : '.*-linux-user' > /dev/null ; then
840
  target_linux_user="yes"
841
fi
842

    
843
target_darwin_user="no"
844
if expr $target : '.*-darwin-user' > /dev/null ; then
845
  target_darwin_user="yes"
846
fi
847

    
848
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
849
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
850
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
851
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
852
    echo "Note that this will disable all output from the virtual graphics card."
853
    exit 1;
854
fi
855

    
856
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
857

    
858
mkdir -p $target_dir
859
mkdir -p $target_dir/fpu
860
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
861
  mkdir -p $target_dir/nwfpe
862
fi
863
if test "$target_user_only" = "no" ; then
864
  mkdir -p $target_dir/slirp
865
fi
866

    
867
#
868
# don't use ln -sf as not all "ln -sf" over write the file/link
869
#
870
rm -f $target_dir/Makefile
871
ln -s $source_path/Makefile.target $target_dir/Makefile
872

    
873

    
874
echo "# Automatically generated by configure - do not modify" > $config_mak
875
echo "/* Automatically generated by configure - do not modify */" > $config_h
876

    
877

    
878
echo "include ../config-host.mak" >> $config_mak
879
echo "#include \"../config-host.h\"" >> $config_h
880

    
881
bflt="no"
882
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
883
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
884

    
885
if test "$target_cpu" = "i386" ; then
886
  echo "TARGET_ARCH=i386" >> $config_mak
887
  echo "#define TARGET_ARCH \"i386\"" >> $config_h
888
  echo "#define TARGET_I386 1" >> $config_h
889
  if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
890
    echo "#define USE_KQEMU 1" >> $config_h
891
  fi
892
elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
893
  echo "TARGET_ARCH=arm" >> $config_mak
894
  echo "#define TARGET_ARCH \"arm\"" >> $config_h
895
  echo "#define TARGET_ARM 1" >> $config_h
896
  bflt="yes"
897
elif test "$target_cpu" = "sparc" ; then
898
  echo "TARGET_ARCH=sparc" >> $config_mak
899
  echo "#define TARGET_ARCH \"sparc\"" >> $config_h
900
  echo "#define TARGET_SPARC 1" >> $config_h
901
elif test "$target_cpu" = "sparc64" ; then
902
  echo "TARGET_ARCH=sparc64" >> $config_mak
903
  echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
904
  echo "#define TARGET_SPARC 1" >> $config_h
905
  echo "#define TARGET_SPARC64 1" >> $config_h
906
elif test "$target_cpu" = "ppc" ; then
907
  echo "TARGET_ARCH=ppc" >> $config_mak
908
  echo "#define TARGET_ARCH \"ppc\"" >> $config_h
909
  echo "#define TARGET_PPC 1" >> $config_h
910
elif test "$target_cpu" = "ppc64" ; then
911
  echo "TARGET_ARCH=ppc64" >> $config_mak
912
  echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
913
  echo "#define TARGET_PPC 1" >> $config_h
914
  echo "#define TARGET_PPC64 1" >> $config_h
915
elif test "$target_cpu" = "x86_64" ; then
916
  echo "TARGET_ARCH=x86_64" >> $config_mak
917
  echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
918
  echo "#define TARGET_I386 1" >> $config_h
919
  echo "#define TARGET_X86_64 1" >> $config_h
920
  if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"  ; then
921
    echo "#define USE_KQEMU 1" >> $config_h
922
  fi
923
elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
924
  echo "TARGET_ARCH=mips" >> $config_mak
925
  echo "#define TARGET_ARCH \"mips\"" >> $config_h
926
  echo "#define TARGET_MIPS 1" >> $config_h
927
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
928
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
929
elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
930
  echo "TARGET_ARCH=mips64" >> $config_mak
931
  echo "#define TARGET_ARCH \"mips64\"" >> $config_h
932
  echo "#define TARGET_MIPS 1" >> $config_h
933
  echo "#define TARGET_MIPS64 1" >> $config_h
934
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
935
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
936
elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
937
  echo "TARGET_ARCH=sh4" >> $config_mak
938
  echo "#define TARGET_ARCH \"sh4\"" >> $config_h
939
  echo "#define TARGET_SH4 1" >> $config_h
940
  bflt="yes"
941
elif test "$target_cpu" = "m68k" ; then
942
  echo "TARGET_ARCH=m68k" >> $config_mak
943
  echo "#define TARGET_ARCH \"m68k\"" >> $config_h
944
  echo "#define TARGET_M68K 1" >> $config_h
945
  bflt="yes"
946
elif test "$target_cpu" = "alpha" ; then
947
  echo "TARGET_ARCH=alpha" >> $config_mak
948
  echo "#define TARGET_ARCH \"alpha\"" >> $config_h
949
  echo "#define TARGET_ALPHA 1" >> $config_h
950
else
951
  echo "Unsupported target CPU"
952
  exit 1
953
fi
954
if test "$target_bigendian" = "yes" ; then
955
  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
956
  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
957
fi
958
if test "$target_softmmu" = "yes" ; then
959
  echo "CONFIG_SOFTMMU=yes" >> $config_mak
960
  echo "#define CONFIG_SOFTMMU 1" >> $config_h
961
fi
962
if test "$target_user_only" = "yes" ; then
963
  echo "CONFIG_USER_ONLY=yes" >> $config_mak
964
  echo "#define CONFIG_USER_ONLY 1" >> $config_h
965
fi
966
if test "$target_linux_user" = "yes" ; then
967
  echo "CONFIG_LINUX_USER=yes" >> $config_mak
968
  echo "#define CONFIG_LINUX_USER 1" >> $config_h
969
fi
970
if test "$target_darwin_user" = "yes" ; then
971
  echo "CONFIG_DARWIN_USER=yes" >> $config_mak
972
  echo "#define CONFIG_DARWIN_USER 1" >> $config_h
973
fi
974

    
975
if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "m68k"; then
976
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
977
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
978
fi
979
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
980
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
981
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
982
fi
983
# sdl defines
984

    
985
if test "$target_user_only" = "no"; then
986
    if test "$target_softmmu" = "no" -o "$static" = "yes"; then
987
        sdl1=$sdl_static
988
    else
989
        sdl1=$sdl
990
    fi
991
    if test "$sdl1" = "yes" ; then
992
        echo "#define CONFIG_SDL 1" >> $config_h
993
        echo "CONFIG_SDL=yes" >> $config_mak
994
        if test "$target_softmmu" = "no" -o "$static" = "yes"; then
995
            echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
996
        else
997
            echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
998
        fi
999
        if [ "${aa}" = "yes" ] ; then
1000
            echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1001
        else
1002
            echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1003
        fi
1004
    fi
1005
fi
1006

    
1007
if test "$cocoa" = "yes" ; then
1008
    echo "#define CONFIG_COCOA 1" >> $config_h
1009
    echo "CONFIG_COCOA=yes" >> $config_mak
1010
fi
1011

    
1012
done # for target in $targets
1013

    
1014
# build tree in object directory if source path is different from current one
1015
if test "$source_path_used" = "yes" ; then
1016
    DIRS="tests"
1017
    FILES="Makefile tests/Makefile"
1018
    for dir in $DIRS ; do
1019
            mkdir -p $dir
1020
    done
1021
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1022
    for f in $FILES ; do
1023
        rm -f $f
1024
        ln -s $source_path/$f $f
1025
    done
1026
fi
1027

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