]> git.proxmox.com Git - qemu.git/blob - configure
Teach usermode emulation how to lie about uname -r.
[qemu.git] / configure
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 host_cc="gcc"
26 ar="ar"
27 make="make"
28 install="install"
29 strip="strip"
30 cpu=`uname -m`
31 target_list=""
32 case "$cpu" in
33 i386|i486|i586|i686|i86pc|BePC)
34 cpu="i386"
35 ;;
36 armv*b)
37 cpu="armv4b"
38 ;;
39 armv*l)
40 cpu="armv4l"
41 ;;
42 alpha)
43 cpu="alpha"
44 ;;
45 "Power Macintosh"|ppc|ppc64)
46 cpu="powerpc"
47 ;;
48 mips)
49 cpu="mips"
50 ;;
51 s390)
52 cpu="s390"
53 ;;
54 sparc|sun4[muv])
55 cpu="sparc"
56 ;;
57 sparc64)
58 cpu="sparc64"
59 ;;
60 ia64)
61 cpu="ia64"
62 ;;
63 m68k)
64 cpu="m68k"
65 ;;
66 x86_64|amd64)
67 cpu="x86_64"
68 ;;
69 *)
70 cpu="unknown"
71 ;;
72 esac
73 gprof="no"
74 bigendian="no"
75 mingw32="no"
76 EXESUF=""
77 gdbstub="yes"
78 slirp="yes"
79 adlib="no"
80 oss="no"
81 dsound="no"
82 coreaudio="no"
83 alsa="no"
84 fmod="no"
85 fmod_lib=""
86 fmod_inc=""
87 bsd="no"
88 linux="no"
89 kqemu="no"
90 profiler="no"
91 kernel_path=""
92 cocoa="no"
93 check_gfx="yes"
94 check_gcc="yes"
95 softmmu="yes"
96 user="no"
97 build_docs="no"
98 uname_release=""
99
100 # OS specific
101 targetos=`uname -s`
102 case $targetos in
103 CYGWIN*)
104 mingw32="yes"
105 CFLAGS="-O2 -mno-cygwin"
106 ;;
107 MINGW32*)
108 mingw32="yes"
109 ;;
110 FreeBSD)
111 bsd="yes"
112 oss="yes"
113 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
114 kqemu="yes"
115 fi
116 ;;
117 NetBSD)
118 bsd="yes"
119 oss="yes"
120 ;;
121 OpenBSD)
122 bsd="yes"
123 oss="yes"
124 ;;
125 Darwin)
126 bsd="yes"
127 darwin="yes"
128 ;;
129 SunOS)
130 solaris="yes"
131 ;;
132 *)
133 oss="yes"
134 linux="yes"
135 user="yes"
136 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
137 kqemu="yes"
138 fi
139 ;;
140 esac
141
142 if [ "$bsd" = "yes" ] ; then
143 if [ "$darwin" != "yes" ] ; then
144 make="gmake"
145 fi
146 fi
147
148 if [ "$solaris" = "yes" ] ; then
149 make="gmake"
150 install="ginstall"
151 solarisrev=`uname -r | cut -f2 -d.`
152 fi
153
154 # find source path
155 source_path=`dirname "$0"`
156 if [ -z "$source_path" ]; then
157 source_path=`pwd`
158 else
159 source_path=`cd "$source_path"; pwd`
160 fi
161 if test "$source_path" = `pwd` ; then
162 source_path_used="no"
163 else
164 source_path_used="yes"
165 fi
166
167 for opt do
168 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
169 case "$opt" in
170 --help|-h) show_help=yes
171 ;;
172 --prefix=*) prefix="$optarg"
173 ;;
174 --interp-prefix=*) interp_prefix="$optarg"
175 ;;
176 --source-path=*) source_path="$optarg"
177 source_path_used="yes"
178 ;;
179 --cross-prefix=*) cross_prefix="$optarg"
180 ;;
181 --cc=*) cc="$optarg"
182 ;;
183 --host-cc=*) host_cc="$optarg"
184 ;;
185 --make=*) make="$optarg"
186 ;;
187 --install=*) install="$optarg"
188 ;;
189 --extra-cflags=*) CFLAGS="$optarg"
190 ;;
191 --extra-ldflags=*) LDFLAGS="$optarg"
192 ;;
193 --cpu=*) cpu="$optarg"
194 ;;
195 --target-list=*) target_list="$optarg"
196 ;;
197 --enable-gprof) gprof="yes"
198 ;;
199 --static) static="yes"
200 ;;
201 --disable-sdl) sdl="no"
202 ;;
203 --enable-coreaudio) coreaudio="yes"
204 ;;
205 --enable-alsa) alsa="yes"
206 ;;
207 --enable-dsound) dsound="yes"
208 ;;
209 --enable-fmod) fmod="yes"
210 ;;
211 --fmod-lib=*) fmod_lib="$optarg"
212 ;;
213 --fmod-inc=*) fmod_inc="$optarg"
214 ;;
215 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-"
216 ;;
217 --disable-slirp) slirp="no"
218 ;;
219 --enable-adlib) adlib="yes"
220 ;;
221 --disable-kqemu) kqemu="no"
222 ;;
223 --enable-profiler) profiler="yes"
224 ;;
225 --kernel-path=*) kernel_path="$optarg"
226 ;;
227 --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
228 ;;
229 --disable-gfx-check) check_gfx="no"
230 ;;
231 --disable-gcc-check) check_gcc="no"
232 ;;
233 --disable-system) softmmu="no"
234 ;;
235 --enable-system) softmmu="yes"
236 ;;
237 --disable-user) user="no"
238 ;;
239 --enable-user) user="yes"
240 ;;
241 --enable-uname-release=*) uname_release="$optarg"
242 ;;
243 esac
244 done
245
246 # Checking for CFLAGS
247 if test -z "$CFLAGS"; then
248 CFLAGS="-O2"
249 fi
250
251 if test x"$show_help" = x"yes" ; then
252 cat << EOF
253
254 Usage: configure [options]
255 Options: [defaults in brackets after descriptions]
256
257 EOF
258 echo "Standard options:"
259 echo " --help print this message"
260 echo " --prefix=PREFIX install in PREFIX [$prefix]"
261 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
262 echo " use %M for cpu name [$interp_prefix]"
263 echo " --target-list=LIST set target list [$target_list]"
264 echo ""
265 echo "kqemu kernel acceleration support:"
266 echo " --disable-kqemu disable kqemu support"
267 echo " --kernel-path=PATH set the kernel path (configure probes it)"
268 echo ""
269 echo "Advanced options (experts only):"
270 echo " --source-path=PATH path of source code [$source_path]"
271 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
272 echo " --cc=CC use C compiler CC [$cc]"
273 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
274 echo " --make=MAKE use specified make [$make]"
275 echo " --install=INSTALL use specified install [$install]"
276 echo " --static enable static build [$static]"
277 echo " --enable-cocoa enable COCOA (Mac OS X only)"
278 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
279 echo " --enable-adlib enable Adlib emulation"
280 echo " --enable-coreaudio enable Coreaudio audio driver"
281 echo " --enable-alsa enable ALSA audio driver"
282 echo " --enable-fmod enable FMOD audio driver"
283 echo " --enabled-dsound enable DirectSound audio driver"
284 echo " --enable-system enable all system emulation targets"
285 echo " --disable-system disable all system emulation targets"
286 echo " --enable-user enable all linux usermode emulation targets"
287 echo " --disable-user disable all linux usermode emulation targets"
288 echo " --fmod-lib path to FMOD library"
289 echo " --fmod-inc path to FMOD includes"
290 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
291 echo ""
292 echo "NOTE: The object files are build at the place where configure is launched"
293 exit 1
294 fi
295
296 cc="${cross_prefix}${cc}"
297 ar="${cross_prefix}${ar}"
298 strip="${cross_prefix}${strip}"
299
300 # check that the C compiler works.
301 cat > $TMPC <<EOF
302 int main(void) {}
303 EOF
304
305 if $cc -c -o $TMPO $TMPC 2>/dev/null ; then
306 : C compiler works ok
307 else
308 echo "ERROR: \"$cc\" either does not exist or does not work"
309 exit 1
310 fi
311
312 if test "$mingw32" = "yes" ; then
313 linux="no"
314 EXESUF=".exe"
315 gdbstub="no"
316 oss="no"
317 if [ "$cpu" = "i386" ] ; then
318 kqemu="yes"
319 fi
320 fi
321
322 #
323 # Solaris specific configure tool chain decisions
324 #
325 if test "$solaris" = "yes" ; then
326 #
327 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
328 # override the check with --disable-gcc-check
329 #
330 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
331 solgcc=`which $cc`
332 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
333 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
334 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
335 echo "or get the latest patch from SunSolve for gcc"
336 exit 1
337 fi
338 fi
339 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
340 if test -z "$solinst" ; then
341 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
342 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
343 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
344 exit 1
345 fi
346 if test "$solinst" = "/usr/sbin/install" ; then
347 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
348 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
349 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
350 exit 1
351 fi
352 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
353 if test -z "$sol_ar" ; then
354 echo "Error: No path includes ar"
355 if test -f /usr/ccs/bin/ar ; then
356 echo "Add /usr/ccs/bin to your path and rerun configure"
357 fi
358 exit 1
359 fi
360 fi
361
362
363 if test -z "$target_list" ; then
364 # these targets are portable
365 if [ "$softmmu" = "yes" ] ; then
366 target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu arm-softmmu"
367 fi
368 # the following are Linux specific
369 if [ "$user" = "yes" ] ; then
370 target_list="i386-user arm-user armeb-user sparc-user ppc-user mips-user mipsel-user $target_list"
371 fi
372 else
373 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
374 fi
375 if test -z "$target_list" ; then
376 echo "No targets enabled"
377 exit 1
378 fi
379
380 if test -z "$cross_prefix" ; then
381
382 # ---
383 # big/little endian test
384 cat > $TMPC << EOF
385 #include <inttypes.h>
386 int main(int argc, char ** argv){
387 volatile uint32_t i=0x01234567;
388 return (*((uint8_t*)(&i))) == 0x67;
389 }
390 EOF
391
392 if $cc -o $TMPE $TMPC 2>/dev/null ; then
393 $TMPE && bigendian="yes"
394 else
395 echo big/little test failed
396 fi
397
398 else
399
400 # if cross compiling, cannot launch a program, so make a static guess
401 if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
402 bigendian="yes"
403 fi
404
405 fi
406
407 # host long bits test
408 hostlongbits="32"
409 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
410 hostlongbits="64"
411 fi
412
413 # check gcc options support
414 cat > $TMPC <<EOF
415 int main(void) {
416 }
417 EOF
418
419 have_gcc3_options="no"
420 if $cc -fno-reorder-blocks -fno-optimize-sibling-calls -o $TMPO $TMPC 2> /dev/null ; then
421 have_gcc3_options="yes"
422 fi
423
424 # Check for gcc4, error if pre-gcc4
425 if test "$check_gcc" = "yes" ; then
426 cat > $TMPC <<EOF
427 #if __GNUC__ < 4
428 #error gcc3
429 #endif
430 int main(){return 0;}
431 EOF
432 if $cc -o $TMPO $TMPC 2>/dev/null ; then
433 echo "ERROR: \"$cc\" looks like gcc 4.x"
434 echo "QEMU is known to have problems when compiled with gcc 4.x"
435 echo "It is recommended that you use gcc 3.x to build QEMU"
436 echo "To use this compiler anyway, configure with --disable-gcc-check"
437 exit 1;
438 fi
439 fi
440
441 ##########################################
442 # SDL probe
443
444 sdl_too_old=no
445
446 if test -z "$sdl" ; then
447
448 sdl_config="sdl-config"
449 sdl=no
450 sdl_static=no
451
452 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
453 # win32 cross compilation case
454 sdl_config="i386-mingw32msvc-sdl-config"
455 sdl=yes
456 else
457 # normal SDL probe
458 cat > $TMPC << EOF
459 #include <SDL.h>
460 #undef main /* We don't want SDL to override our main() */
461 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
462 EOF
463
464 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then
465 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
466 if test "$_sdlversion" -lt 121 ; then
467 sdl_too_old=yes
468 else
469 sdl=yes
470 fi
471
472 # static link with sdl ?
473 if test "$sdl" = "yes" ; then
474 aa="no"
475 `$sdl_config --static-libs | grep \\\-laa > /dev/null` && aa="yes"
476 sdl_static_libs=`$sdl_config --static-libs`
477 if [ "$aa" = "yes" ] ; then
478 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
479 fi
480
481 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
482 sdl_static=yes
483 fi
484
485 fi # static link
486
487 fi # sdl compile test
488
489 fi # cross compilation
490 fi # -z $sdl
491
492 # Check if tools are available to build documentation.
493 if [ -x "`which texi2html`" ] && [ -x "`which pod2man`" ]; then
494 build_docs="yes"
495 fi
496
497 if test "$mingw32" = "yes" ; then
498 if test -z "$prefix" ; then
499 prefix="/c/Program Files/Qemu"
500 fi
501 mandir="$prefix"
502 datadir="$prefix"
503 docdir="$prefix"
504 bindir="$prefix"
505 else
506 if test -z "$prefix" ; then
507 prefix="/usr/local"
508 fi
509 mandir="$prefix/share/man"
510 datadir="$prefix/share/qemu"
511 docdir="$prefix/share/doc/qemu"
512 bindir="$prefix/bin"
513 fi
514
515 echo "Install prefix $prefix"
516 echo "BIOS directory $datadir"
517 echo "binary directory $bindir"
518 if test "$mingw32" = "no" ; then
519 echo "Manual directory $mandir"
520 echo "ELF interp prefix $interp_prefix"
521 fi
522 echo "Source path $source_path"
523 echo "C compiler $cc"
524 echo "Host C compiler $host_cc"
525 echo "make $make"
526 echo "install $install"
527 echo "host CPU $cpu"
528 echo "host big endian $bigendian"
529 echo "target list $target_list"
530 echo "gprof enabled $gprof"
531 echo "profiler $profiler"
532 echo "static build $static"
533 if test "$darwin" = "yes" ; then
534 echo "Cocoa support $cocoa"
535 fi
536 echo "SDL support $sdl"
537 if test "$sdl" != "no" ; then
538 echo "SDL static link $sdl_static"
539 fi
540 echo "mingw32 support $mingw32"
541 echo "Adlib support $adlib"
542 echo "CoreAudio support $coreaudio"
543 echo "ALSA support $alsa"
544 echo "DSound support $dsound"
545 if test "$fmod" = "yes"; then
546 if test -z $fmod_lib || test -z $fmod_inc; then
547 echo
548 echo "Error: You must specify path to FMOD library and headers"
549 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
550 echo
551 exit 1
552 fi
553 fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
554 else
555 fmod_support=""
556 fi
557 echo "FMOD support $fmod $fmod_support"
558 echo "kqemu support $kqemu"
559 echo "Documentation $build_docs"
560 [ ! -z "$uname_release" ] && \
561 echo "uname -r $uname_release"
562
563 if test $sdl_too_old = "yes"; then
564 echo "-> Your SDL version is too old - please upgrade to have SDL support"
565 fi
566 #if test "$sdl_static" = "no"; then
567 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
568 #fi
569 config_mak="config-host.mak"
570 config_h="config-host.h"
571
572 #echo "Creating $config_mak and $config_h"
573
574 echo "# Automatically generated by configure - do not modify" > $config_mak
575 echo "# Configured with: $0 $@" >> $config_mak
576 echo "/* Automatically generated by configure - do not modify */" > $config_h
577
578 echo "prefix=$prefix" >> $config_mak
579 echo "bindir=$bindir" >> $config_mak
580 echo "mandir=$mandir" >> $config_mak
581 echo "datadir=$datadir" >> $config_mak
582 echo "docdir=$docdir" >> $config_mak
583 echo "#define CONFIG_QEMU_SHAREDIR \"$datadir\"" >> $config_h
584 echo "MAKE=$make" >> $config_mak
585 echo "INSTALL=$install" >> $config_mak
586 echo "CC=$cc" >> $config_mak
587 if test "$have_gcc3_options" = "yes" ; then
588 echo "HAVE_GCC3_OPTIONS=yes" >> $config_mak
589 fi
590 echo "HOST_CC=$host_cc" >> $config_mak
591 echo "AR=$ar" >> $config_mak
592 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
593 echo "CFLAGS=$CFLAGS" >> $config_mak
594 echo "LDFLAGS=$LDFLAGS" >> $config_mak
595 echo "EXESUF=$EXESUF" >> $config_mak
596 if test "$cpu" = "i386" ; then
597 echo "ARCH=i386" >> $config_mak
598 echo "#define HOST_I386 1" >> $config_h
599 elif test "$cpu" = "x86_64" ; then
600 echo "ARCH=x86_64" >> $config_mak
601 echo "#define HOST_X86_64 1" >> $config_h
602 elif test "$cpu" = "armv4b" ; then
603 echo "ARCH=arm" >> $config_mak
604 echo "#define HOST_ARM 1" >> $config_h
605 elif test "$cpu" = "armv4l" ; then
606 echo "ARCH=arm" >> $config_mak
607 echo "#define HOST_ARM 1" >> $config_h
608 elif test "$cpu" = "powerpc" ; then
609 echo "ARCH=ppc" >> $config_mak
610 echo "#define HOST_PPC 1" >> $config_h
611 elif test "$cpu" = "mips" ; then
612 echo "ARCH=mips" >> $config_mak
613 echo "#define HOST_MIPS 1" >> $config_h
614 elif test "$cpu" = "s390" ; then
615 echo "ARCH=s390" >> $config_mak
616 echo "#define HOST_S390 1" >> $config_h
617 elif test "$cpu" = "alpha" ; then
618 echo "ARCH=alpha" >> $config_mak
619 echo "#define HOST_ALPHA 1" >> $config_h
620 elif test "$cpu" = "sparc" ; then
621 echo "ARCH=sparc" >> $config_mak
622 echo "#define HOST_SPARC 1" >> $config_h
623 elif test "$cpu" = "sparc64" ; then
624 echo "ARCH=sparc64" >> $config_mak
625 echo "#define HOST_SPARC64 1" >> $config_h
626 elif test "$cpu" = "ia64" ; then
627 echo "ARCH=ia64" >> $config_mak
628 echo "#define HOST_IA64 1" >> $config_h
629 elif test "$cpu" = "m68k" ; then
630 echo "ARCH=m68k" >> $config_mak
631 echo "#define HOST_M68K 1" >> $config_h
632 else
633 echo "Unsupported CPU"
634 exit 1
635 fi
636 if test "$bigendian" = "yes" ; then
637 echo "WORDS_BIGENDIAN=yes" >> $config_mak
638 echo "#define WORDS_BIGENDIAN 1" >> $config_h
639 fi
640 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
641 if test "$mingw32" = "yes" ; then
642 echo "CONFIG_WIN32=yes" >> $config_mak
643 echo "#define CONFIG_WIN32 1" >> $config_h
644 elif test -f "/usr/include/byteswap.h" ; then
645 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
646 fi
647 if test "$darwin" = "yes" ; then
648 echo "CONFIG_DARWIN=yes" >> $config_mak
649 echo "#define CONFIG_DARWIN 1" >> $config_h
650 fi
651 if test "$solaris" = "yes" ; then
652 echo "CONFIG_SOLARIS=yes" >> $config_mak
653 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
654 fi
655 if test "$gdbstub" = "yes" ; then
656 echo "CONFIG_GDBSTUB=yes" >> $config_mak
657 echo "#define CONFIG_GDBSTUB 1" >> $config_h
658 fi
659 if test "$gprof" = "yes" ; then
660 echo "TARGET_GPROF=yes" >> $config_mak
661 echo "#define HAVE_GPROF 1" >> $config_h
662 fi
663 if test "$static" = "yes" ; then
664 echo "CONFIG_STATIC=yes" >> $config_mak
665 echo "#define CONFIG_STATIC 1" >> $config_h
666 fi
667 if test $profiler = "yes" ; then
668 echo "#define CONFIG_PROFILER 1" >> $config_h
669 fi
670 if test "$slirp" = "yes" ; then
671 echo "CONFIG_SLIRP=yes" >> $config_mak
672 echo "#define CONFIG_SLIRP 1" >> $config_h
673 fi
674 if test "$adlib" = "yes" ; then
675 echo "CONFIG_ADLIB=yes" >> $config_mak
676 echo "#define CONFIG_ADLIB 1" >> $config_h
677 fi
678 if test "$oss" = "yes" ; then
679 echo "CONFIG_OSS=yes" >> $config_mak
680 echo "#define CONFIG_OSS 1" >> $config_h
681 fi
682 if test "$coreaudio" = "yes" ; then
683 echo "CONFIG_COREAUDIO=yes" >> $config_mak
684 echo "#define CONFIG_COREAUDIO 1" >> $config_h
685 fi
686 if test "$alsa" = "yes" ; then
687 echo "CONFIG_ALSA=yes" >> $config_mak
688 echo "#define CONFIG_ALSA 1" >> $config_h
689 fi
690 if test "$dsound" = "yes" ; then
691 echo "CONFIG_DSOUND=yes" >> $config_mak
692 echo "#define CONFIG_DSOUND 1" >> $config_h
693 fi
694 if test "$fmod" = "yes" ; then
695 echo "CONFIG_FMOD=yes" >> $config_mak
696 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
697 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
698 echo "#define CONFIG_FMOD 1" >> $config_h
699 fi
700 qemu_version=`head $source_path/VERSION`
701 echo "VERSION=$qemu_version" >>$config_mak
702 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
703
704 echo "SRC_PATH=$source_path" >> $config_mak
705 if [ "$source_path_used" = "yes" ]; then
706 echo "VPATH=$source_path" >> $config_mak
707 fi
708 echo "TARGET_DIRS=$target_list" >> $config_mak
709 if [ "$build_docs" = "yes" ] ; then
710 echo "BUILD_DOCS=yes" >> $config_mak
711 fi
712
713 # XXX: suppress that
714 if [ "$bsd" = "yes" ] ; then
715 echo "#define O_LARGEFILE 0" >> $config_h
716 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
717 echo "#define _BSD 1" >> $config_h
718 fi
719
720 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
721
722 for target in $target_list; do
723 target_dir="$target"
724 config_mak=$target_dir/config.mak
725 config_h=$target_dir/config.h
726 target_cpu=`echo $target | cut -d '-' -f 1`
727 target_bigendian="no"
728 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
729 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
730 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
731 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
732 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
733 [ "$target_cpu" = "mips" ] && target_bigendian=yes
734 target_softmmu="no"
735 if expr $target : '.*-softmmu' > /dev/null ; then
736 target_softmmu="yes"
737 fi
738 target_user_only="no"
739 if expr $target : '.*-user' > /dev/null ; then
740 target_user_only="yes"
741 fi
742
743 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
744 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
745 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
746 echo "To build QEMU without graphical output configure with --disable-gfx-check"
747 echo "Note that this will disable all output from the virtual graphics card."
748 exit 1;
749 fi
750
751 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
752
753 mkdir -p $target_dir
754 mkdir -p $target_dir/fpu
755 if test "$target" = "arm-user" -o "$target" = "armeb-user" ; then
756 mkdir -p $target_dir/nwfpe
757 fi
758 if test "$target_user_only" = "no" ; then
759 mkdir -p $target_dir/slirp
760 fi
761
762 #
763 # don't use ln -sf as not all "ln -sf" over write the file/link
764 #
765 rm -f $target_dir/Makefile
766 ln -s $source_path/Makefile.target $target_dir/Makefile
767
768
769 echo "# Automatically generated by configure - do not modify" > $config_mak
770 echo "/* Automatically generated by configure - do not modify */" > $config_h
771
772
773 echo "include ../config-host.mak" >> $config_mak
774 echo "#include \"../config-host.h\"" >> $config_h
775
776 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
777 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
778
779 if test "$target_cpu" = "i386" ; then
780 echo "TARGET_ARCH=i386" >> $config_mak
781 echo "#define TARGET_ARCH \"i386\"" >> $config_h
782 echo "#define TARGET_I386 1" >> $config_h
783 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
784 echo "#define USE_KQEMU 1" >> $config_h
785 fi
786 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
787 echo "TARGET_ARCH=arm" >> $config_mak
788 echo "#define TARGET_ARCH \"arm\"" >> $config_h
789 echo "#define TARGET_ARM 1" >> $config_h
790 elif test "$target_cpu" = "sparc" ; then
791 echo "TARGET_ARCH=sparc" >> $config_mak
792 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
793 echo "#define TARGET_SPARC 1" >> $config_h
794 elif test "$target_cpu" = "sparc64" ; then
795 echo "TARGET_ARCH=sparc64" >> $config_mak
796 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
797 echo "#define TARGET_SPARC 1" >> $config_h
798 echo "#define TARGET_SPARC64 1" >> $config_h
799 elif test "$target_cpu" = "ppc" ; then
800 echo "TARGET_ARCH=ppc" >> $config_mak
801 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
802 echo "#define TARGET_PPC 1" >> $config_h
803 elif test "$target_cpu" = "ppc64" ; then
804 echo "TARGET_ARCH=ppc64" >> $config_mak
805 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
806 echo "#define TARGET_PPC 1" >> $config_h
807 echo "#define TARGET_PPC64 1" >> $config_h
808 elif test "$target_cpu" = "x86_64" ; then
809 echo "TARGET_ARCH=x86_64" >> $config_mak
810 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
811 echo "#define TARGET_I386 1" >> $config_h
812 echo "#define TARGET_X86_64 1" >> $config_h
813 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
814 echo "#define USE_KQEMU 1" >> $config_h
815 fi
816 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
817 echo "TARGET_ARCH=mips" >> $config_mak
818 echo "#define TARGET_ARCH \"mips\"" >> $config_h
819 echo "#define TARGET_MIPS 1" >> $config_h
820 elif test "$target_cpu" = "sh4" ; then
821 echo "TARGET_ARCH=sh4" >> $config_mak
822 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
823 echo "#define TARGET_SH4 1" >> $config_h
824 else
825 echo "Unsupported target CPU"
826 exit 1
827 fi
828 if test "$target_bigendian" = "yes" ; then
829 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
830 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
831 fi
832 if test "$target_softmmu" = "yes" ; then
833 echo "CONFIG_SOFTMMU=yes" >> $config_mak
834 echo "#define CONFIG_SOFTMMU 1" >> $config_h
835 fi
836 if test "$target_user_only" = "yes" ; then
837 echo "CONFIG_USER_ONLY=yes" >> $config_mak
838 echo "#define CONFIG_USER_ONLY 1" >> $config_h
839 fi
840
841 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
842 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
843 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
844 fi
845 # sdl defines
846
847 if test "$target_user_only" = "no"; then
848 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
849 sdl1=$sdl_static
850 else
851 sdl1=$sdl
852 fi
853 if test "$sdl1" = "yes" ; then
854 echo "#define CONFIG_SDL 1" >> $config_h
855 echo "CONFIG_SDL=yes" >> $config_mak
856 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
857 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
858 else
859 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
860 fi
861 if [ "${aa}" = "yes" ] ; then
862 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
863 else
864 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
865 fi
866 fi
867 fi
868
869 if test "$cocoa" = "yes" ; then
870 echo "#define CONFIG_COCOA 1" >> $config_h
871 echo "CONFIG_COCOA=yes" >> $config_mak
872 fi
873
874 done # for target in $targets
875
876 # build tree in object directory if source path is different from current one
877 if test "$source_path_used" = "yes" ; then
878 DIRS="tests"
879 FILES="Makefile tests/Makefile"
880 for dir in $DIRS ; do
881 mkdir -p $dir
882 done
883 # remove the link and recreate it, as not all "ln -sf" overwrite the link
884 for f in $FILES ; do
885 rm -f $f
886 ln -s $source_path/$f $f
887 done
888 fi
889
890 rm -f $TMPO $TMPC $TMPE $TMPS