]> git.proxmox.com Git - mirror_qemu.git/blob - configure
gcc32 may well be a 4.x version for a 32bit target, so add an additional check, hopef...
[mirror_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 gcc3_search="yes"
26 gcc3_list="gcc-3.4 gcc34 gcc-3.3.6 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[cdmuv])
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 VL_OS_LDFLAGS="-mno-cygwin"
112 if [ "$cpu" = "i386" ] ; then
113 kqemu="yes"
114 fi
115 ;;
116 MINGW32*)
117 mingw32="yes"
118 if [ "$cpu" = "i386" ] ; then
119 kqemu="yes"
120 fi
121 ;;
122 GNU/kFreeBSD)
123 oss="yes"
124 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
125 kqemu="yes"
126 fi
127 ;;
128 FreeBSD)
129 bsd="yes"
130 oss="yes"
131 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
132 kqemu="yes"
133 fi
134 ;;
135 NetBSD)
136 bsd="yes"
137 oss="yes"
138 ;;
139 OpenBSD)
140 bsd="yes"
141 oss="yes"
142 ;;
143 Darwin)
144 bsd="yes"
145 darwin="yes"
146 darwin_user="yes"
147 cocoa="yes"
148 coreaudio="yes"
149 OS_CFLAGS="-mdynamic-no-pic"
150 ;;
151 SunOS)
152 solaris="yes"
153 make="gmake"
154 install="ginstall"
155 needs_libsunmath="no"
156 solarisrev=`uname -r | cut -f2 -d.`
157 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
158 if test "$solarisrev" -le 9 ; then
159 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
160 needs_libsunmath="yes"
161 else
162 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
163 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
164 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
165 echo "Studio 11 can be downloaded from www.sun.com."
166 exit 1
167 fi
168 fi
169 if test "$solarisrev" -ge 9 ; then
170 kqemu="yes"
171 fi
172 fi
173 if test -f /usr/include/sys/soundcard.h ; then
174 oss=yes
175 fi
176 ;;
177 *)
178 oss="yes"
179 linux="yes"
180 linux_user="yes"
181 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
182 kqemu="yes"
183 fi
184 ;;
185 esac
186
187 if [ "$bsd" = "yes" ] ; then
188 if [ "$darwin" != "yes" ] ; then
189 make="gmake"
190 fi
191 fi
192
193 # find source path
194 source_path=`dirname "$0"`
195 if [ -z "$source_path" ]; then
196 source_path=`pwd`
197 else
198 source_path=`cd "$source_path"; pwd`
199 fi
200 if test "$source_path" = `pwd` ; then
201 source_path_used="no"
202 else
203 source_path_used="yes"
204 fi
205
206 for opt do
207 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
208 case "$opt" in
209 --help|-h) show_help=yes
210 ;;
211 --prefix=*) prefix="$optarg"
212 ;;
213 --interp-prefix=*) interp_prefix="$optarg"
214 ;;
215 --source-path=*) source_path="$optarg"
216 source_path_used="yes"
217 ;;
218 --cross-prefix=*) cross_prefix="$optarg"
219 ;;
220 --cc=*) cc="$optarg"
221 gcc3_search="no"
222 ;;
223 --host-cc=*) host_cc="$optarg"
224 ;;
225 --make=*) make="$optarg"
226 ;;
227 --install=*) install="$optarg"
228 ;;
229 --extra-cflags=*) CFLAGS="$optarg"
230 ;;
231 --extra-ldflags=*) LDFLAGS="$optarg"
232 ;;
233 --cpu=*) cpu="$optarg"
234 ;;
235 --target-list=*) target_list="$optarg"
236 ;;
237 --enable-gprof) gprof="yes"
238 ;;
239 --static) static="yes"
240 ;;
241 --disable-sdl) sdl="no"
242 ;;
243 --enable-coreaudio) coreaudio="yes"
244 ;;
245 --enable-alsa) alsa="yes"
246 ;;
247 --enable-dsound) dsound="yes"
248 ;;
249 --enable-fmod) fmod="yes"
250 ;;
251 --fmod-lib=*) fmod_lib="$optarg"
252 ;;
253 --fmod-inc=*) fmod_inc="$optarg"
254 ;;
255 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
256 ;;
257 --disable-slirp) slirp="no"
258 ;;
259 --enable-adlib) adlib="yes"
260 ;;
261 --disable-kqemu) kqemu="no"
262 ;;
263 --enable-profiler) profiler="yes"
264 ;;
265 --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
266 ;;
267 --disable-gfx-check) check_gfx="no"
268 ;;
269 --disable-gcc-check) check_gcc="no"
270 ;;
271 --disable-system) softmmu="no"
272 ;;
273 --enable-system) softmmu="yes"
274 ;;
275 --disable-linux-user) linux_user="no"
276 ;;
277 --enable-linux-user) linux_user="yes"
278 ;;
279 --disable-darwin-user) darwin_user="no"
280 ;;
281 --enable-darwin-user) darwin_user="yes"
282 ;;
283 --enable-uname-release=*) uname_release="$optarg"
284 ;;
285 --sparc_cpu=*)
286 sparc_cpu="$optarg"
287 case $sparc_cpu in
288 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
289 target_cpu="sparc"; cpu="sparc" ;;
290 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
291 target_cpu="sparc"; cpu="sparc" ;;
292 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
293 target_cpu="sparc64"; cpu="sparc64" ;;
294 *) echo "undefined SPARC architecture. Exiting";exit 1;;
295 esac
296 ;;
297 esac
298 done
299
300 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
301 AIOLIBS=
302 else
303 AIOLIBS="-lrt"
304 fi
305
306 # default flags for all hosts
307 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
308 LDFLAGS="$LDFLAGS -g"
309
310 #
311 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
312 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
313 #
314 case $cpu in
315 sparc) if test -z "$sparc_cpu" ; then
316 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
317 ARCH_LDFLAGS="-m32"
318 else
319 ARCH_CFLAGS="${SP_CFLAGS}"
320 ARCH_LDFLAGS="${SP_LDFLAGS}"
321 fi
322 ;;
323 sparc64) if test -z "$sparc_cpu" ; then
324 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
325 ARCH_LDFLAGS="-m64"
326 else
327 ARCH_CFLAGS="${SP_CFLAGS}"
328 ARCH_LDFLAGS="${SP_LDFLAGS}"
329 fi
330 ;;
331 esac
332
333 if test x"$show_help" = x"yes" ; then
334 cat << EOF
335
336 Usage: configure [options]
337 Options: [defaults in brackets after descriptions]
338
339 EOF
340 echo "Standard options:"
341 echo " --help print this message"
342 echo " --prefix=PREFIX install in PREFIX [$prefix]"
343 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
344 echo " use %M for cpu name [$interp_prefix]"
345 echo " --target-list=LIST set target list [$target_list]"
346 echo ""
347 echo "kqemu kernel acceleration support:"
348 echo " --disable-kqemu disable kqemu support"
349 echo ""
350 echo "Advanced options (experts only):"
351 echo " --source-path=PATH path of source code [$source_path]"
352 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
353 echo " --cc=CC use C compiler CC [$cc]"
354 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
355 echo " --make=MAKE use specified make [$make]"
356 echo " --install=INSTALL use specified install [$install]"
357 echo " --static enable static build [$static]"
358 echo " --enable-cocoa enable COCOA (Mac OS X only)"
359 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
360 echo " --enable-adlib enable Adlib emulation"
361 echo " --enable-coreaudio enable Coreaudio audio driver"
362 echo " --enable-alsa enable ALSA audio driver"
363 echo " --enable-fmod enable FMOD audio driver"
364 echo " --enable-dsound enable DirectSound audio driver"
365 echo " --enable-system enable all system emulation targets"
366 echo " --disable-system disable all system emulation targets"
367 echo " --enable-linux-user enable all linux usermode emulation targets"
368 echo " --disable-linux-user disable all linux usermode emulation targets"
369 echo " --enable-darwin-user enable all darwin usermode emulation targets"
370 echo " --disable-darwin-user disable all darwin usermode emulation targets"
371 echo " --fmod-lib path to FMOD library"
372 echo " --fmod-inc path to FMOD includes"
373 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
374 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
375 echo ""
376 echo "NOTE: The object files are built at the place where configure is launched"
377 exit 1
378 fi
379
380 cc="${cross_prefix}${cc}"
381 ar="${cross_prefix}${ar}"
382 strip="${cross_prefix}${strip}"
383
384 # check that the C compiler works.
385 cat > $TMPC <<EOF
386 int main(void) {}
387 EOF
388
389 if $cc -c -o $TMPO $TMPC 2> /dev/null ; then
390 : C compiler works ok
391 else
392 echo "ERROR: \"$cc\" either does not exist or does not work"
393 exit 1
394 fi
395
396 if test "$mingw32" = "yes" ; then
397 linux="no"
398 EXESUF=".exe"
399 oss="no"
400 fi
401
402 # Check for gcc4, error if pre-gcc4
403 if test "$check_gcc" = "yes" ; then
404 cat > $TMPC <<EOF
405 #if __GNUC__ < 4
406 #error gcc3
407 #endif
408 int main(){return 0;}
409 EOF
410 if "$cc" -o $TMPE $TMPC 2> /dev/null ; then
411 echo "WARNING: \"$cc\" looks like gcc 4.x"
412 found_compat_cc="no"
413 if test "$gcc3_search" = "yes" ; then
414 echo "Looking for gcc 3.x"
415 for compat_cc in $gcc3_list ; do
416 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
417 echo "Found \"$compat_cc\""
418 cc="$cross_prefix$compat_cc"
419 found_compat_cc="yes"
420 break
421 fi
422 done
423 if test "$found_compat_cc" = "no" ; then
424 echo "gcc 3.x not found!"
425 fi
426 fi
427 if test "$found_compat_cc" = "no" ; then
428 echo "QEMU is known to have problems when compiled with gcc 4.x"
429 echo "It is recommended that you use gcc 3.x to build QEMU"
430 echo "To use this compiler anyway, configure with --disable-gcc-check"
431 exit 1;
432 fi
433 fi
434 fi
435
436 #
437 # Solaris specific configure tool chain decisions
438 #
439 if test "$solaris" = "yes" ; then
440 #
441 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
442 # override the check with --disable-gcc-check
443 #
444 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
445 solgcc=`which $cc`
446 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
447 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
448 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
449 echo "or get the latest patch from SunSolve for gcc"
450 exit 1
451 fi
452 fi
453 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
454 if test -z "$solinst" ; then
455 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
456 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
457 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
458 exit 1
459 fi
460 if test "$solinst" = "/usr/sbin/install" ; then
461 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
462 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
463 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
464 exit 1
465 fi
466 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
467 if test -z "$sol_ar" ; then
468 echo "Error: No path includes ar"
469 if test -f /usr/ccs/bin/ar ; then
470 echo "Add /usr/ccs/bin to your path and rerun configure"
471 fi
472 exit 1
473 fi
474 fi
475
476
477 if test -z "$target_list" ; then
478 # these targets are portable
479 if [ "$softmmu" = "yes" ] ; then
480 target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc64-softmmu ppcemb-softmmu m68k-softmmu"
481 fi
482 # the following are Linux specific
483 if [ "$linux_user" = "yes" ] ; then
484 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"
485 fi
486 # the following are Darwin specific
487 if [ "$darwin_user" = "yes" ] ; then
488 target_list="i386-darwin-user ppc-darwin-user $target_list"
489 fi
490 else
491 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
492 fi
493 if test -z "$target_list" ; then
494 echo "No targets enabled"
495 exit 1
496 fi
497
498 if test -z "$cross_prefix" ; then
499
500 # ---
501 # big/little endian test
502 cat > $TMPC << EOF
503 #include <inttypes.h>
504 int main(int argc, char ** argv){
505 volatile uint32_t i=0x01234567;
506 return (*((uint8_t*)(&i))) == 0x67;
507 }
508 EOF
509
510 if $cc -o $TMPE $TMPC 2> /dev/null ; then
511 $TMPE && bigendian="yes"
512 else
513 echo big/little test failed
514 fi
515
516 else
517
518 # if cross compiling, cannot launch a program, so make a static guess
519 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
520 bigendian="yes"
521 fi
522
523 fi
524
525 # host long bits test
526 hostlongbits="32"
527 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
528 hostlongbits="64"
529 fi
530
531 # check gcc options support
532 cat > $TMPC <<EOF
533 int main(void) {
534 }
535 EOF
536
537 ##########################################
538 # SDL probe
539
540 sdl_too_old=no
541
542 if test -z "$sdl" ; then
543 sdl_config="sdl-config"
544 sdl=no
545 sdl_static=no
546
547 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
548 # win32 cross compilation case
549 sdl_config="i386-mingw32msvc-sdl-config"
550 sdl=yes
551 else
552 # normal SDL probe
553 cat > $TMPC << EOF
554 #include <SDL.h>
555 #undef main /* We don't want SDL to override our main() */
556 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
557 EOF
558 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
559 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
560 if test "$_sdlversion" -lt 121 ; then
561 sdl_too_old=yes
562 else
563 if test "$cocoa" = "no" ; then
564 sdl=yes
565 fi
566 fi
567
568 # static link with sdl ?
569 if test "$sdl" = "yes" ; then
570 aa="no"
571 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
572 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
573 if [ "$aa" = "yes" ] ; then
574 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
575 fi
576
577 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
578 sdl_static=yes
579 fi
580 fi # static link
581 fi # sdl compile test
582 fi # cross compilation
583 else
584 # Make sure to disable cocoa if sdl was set
585 if test "$sdl" = "yes" ; then
586 cocoa="no"
587 coreaudio="no"
588 fi
589 fi # -z $sdl
590
591 ##########################################
592 # alsa sound support libraries
593
594 if test "$alsa" = "yes" ; then
595 cat > $TMPC << EOF
596 #include <alsa/asoundlib.h>
597 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
598 EOF
599 if $cc -o $TMPE $TMPC -lasound 2> /dev/null ; then
600 :
601 else
602 echo
603 echo "Error: Could not find alsa"
604 echo "Make sure to have the alsa libs and headers installed."
605 echo
606 exit 1
607 fi
608 fi
609
610 # Check if tools are available to build documentation.
611 if [ -x "`which texi2html 2>/dev/null`" ] && \
612 [ -x "`which pod2man 2>/dev/null`" ]; then
613 build_docs="yes"
614 fi
615
616 if test "$mingw32" = "yes" ; then
617 if test -z "$prefix" ; then
618 prefix="/c/Program Files/Qemu"
619 fi
620 mansuffix=""
621 datasuffix=""
622 docsuffix=""
623 binsuffix=""
624 else
625 if test -z "$prefix" ; then
626 prefix="/usr/local"
627 fi
628 mansuffix="/share/man"
629 datasuffix="/share/qemu"
630 docsuffix="/share/doc/qemu"
631 binsuffix="/bin"
632 fi
633
634 echo "Install prefix $prefix"
635 echo "BIOS directory $prefix$datasuffix"
636 echo "binary directory $prefix$binsuffix"
637 if test "$mingw32" = "no" ; then
638 echo "Manual directory $prefix$mansuffix"
639 echo "ELF interp prefix $interp_prefix"
640 fi
641 echo "Source path $source_path"
642 echo "C compiler $cc"
643 echo "Host C compiler $host_cc"
644 echo "make $make"
645 echo "install $install"
646 echo "host CPU $cpu"
647 echo "host big endian $bigendian"
648 echo "target list $target_list"
649 echo "gprof enabled $gprof"
650 echo "profiler $profiler"
651 echo "static build $static"
652 if test "$darwin" = "yes" ; then
653 echo "Cocoa support $cocoa"
654 fi
655 echo "SDL support $sdl"
656 if test "$sdl" != "no" ; then
657 echo "SDL static link $sdl_static"
658 fi
659 echo "mingw32 support $mingw32"
660 echo "Adlib support $adlib"
661 echo "CoreAudio support $coreaudio"
662 echo "ALSA support $alsa"
663 echo "DSound support $dsound"
664 if test "$fmod" = "yes"; then
665 if test -z $fmod_lib || test -z $fmod_inc; then
666 echo
667 echo "Error: You must specify path to FMOD library and headers"
668 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
669 echo
670 exit 1
671 fi
672 fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
673 else
674 fmod_support=""
675 fi
676 echo "FMOD support $fmod $fmod_support"
677 echo "OSS support $oss"
678 if test -n "$sparc_cpu"; then
679 echo "Target Sparc Arch $sparc_cpu"
680 fi
681 echo "kqemu support $kqemu"
682 echo "Documentation $build_docs"
683 [ ! -z "$uname_release" ] && \
684 echo "uname -r $uname_release"
685
686 if test $sdl_too_old = "yes"; then
687 echo "-> Your SDL version is too old - please upgrade to have SDL support"
688 fi
689 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
690 echo "The error log from compiling the libSDL test is: "
691 cat /tmp/qemu-$$-sdl-config.log
692 fi
693 rm -f /tmp/qemu-$$-sdl-config.log
694 #if test "$sdl_static" = "no"; then
695 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
696 #fi
697 config_mak="config-host.mak"
698 config_h="config-host.h"
699
700 #echo "Creating $config_mak and $config_h"
701
702 echo "# Automatically generated by configure - do not modify" > $config_mak
703 echo "# Configured with: $0 $@" >> $config_mak
704 echo "/* Automatically generated by configure - do not modify */" > $config_h
705
706 echo "prefix=$prefix" >> $config_mak
707 echo "bindir=\${prefix}$binsuffix" >> $config_mak
708 echo "mandir=\${prefix}$mansuffix" >> $config_mak
709 echo "datadir=\${prefix}$datasuffix" >> $config_mak
710 echo "docdir=\${prefix}$docsuffix" >> $config_mak
711 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
712 echo "MAKE=$make" >> $config_mak
713 echo "INSTALL=$install" >> $config_mak
714 echo "CC=$cc" >> $config_mak
715 echo "HOST_CC=$host_cc" >> $config_mak
716 echo "AR=$ar" >> $config_mak
717 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
718 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
719 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
720 echo "VL_OS_LDFLAGS=$VL_OS_LDFLAGS" >> $config_mak
721 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
722 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
723 echo "CFLAGS=$CFLAGS" >> $config_mak
724 echo "LDFLAGS=$LDFLAGS" >> $config_mak
725 echo "EXESUF=$EXESUF" >> $config_mak
726 echo "AIOLIBS=$AIOLIBS" >> $config_mak
727 if test "$cpu" = "i386" ; then
728 echo "ARCH=i386" >> $config_mak
729 echo "#define HOST_I386 1" >> $config_h
730 elif test "$cpu" = "x86_64" ; then
731 echo "ARCH=x86_64" >> $config_mak
732 echo "#define HOST_X86_64 1" >> $config_h
733 elif test "$cpu" = "armv4b" ; then
734 echo "ARCH=arm" >> $config_mak
735 echo "#define HOST_ARM 1" >> $config_h
736 elif test "$cpu" = "armv4l" ; then
737 echo "ARCH=arm" >> $config_mak
738 echo "#define HOST_ARM 1" >> $config_h
739 elif test "$cpu" = "powerpc" ; then
740 echo "ARCH=ppc" >> $config_mak
741 echo "#define HOST_PPC 1" >> $config_h
742 elif test "$cpu" = "mips" ; then
743 echo "ARCH=mips" >> $config_mak
744 echo "#define HOST_MIPS 1" >> $config_h
745 elif test "$cpu" = "mips64" ; then
746 echo "ARCH=mips64" >> $config_mak
747 echo "#define HOST_MIPS64 1" >> $config_h
748 elif test "$cpu" = "s390" ; then
749 echo "ARCH=s390" >> $config_mak
750 echo "#define HOST_S390 1" >> $config_h
751 elif test "$cpu" = "alpha" ; then
752 echo "ARCH=alpha" >> $config_mak
753 echo "#define HOST_ALPHA 1" >> $config_h
754 elif test "$cpu" = "sparc" ; then
755 echo "ARCH=sparc" >> $config_mak
756 echo "#define HOST_SPARC 1" >> $config_h
757 elif test "$cpu" = "sparc64" ; then
758 echo "ARCH=sparc64" >> $config_mak
759 echo "#define HOST_SPARC64 1" >> $config_h
760 elif test "$cpu" = "ia64" ; then
761 echo "ARCH=ia64" >> $config_mak
762 echo "#define HOST_IA64 1" >> $config_h
763 elif test "$cpu" = "m68k" ; then
764 echo "ARCH=m68k" >> $config_mak
765 echo "#define HOST_M68K 1" >> $config_h
766 else
767 echo "Unsupported CPU = $cpu"
768 exit 1
769 fi
770 if test "$bigendian" = "yes" ; then
771 echo "WORDS_BIGENDIAN=yes" >> $config_mak
772 echo "#define WORDS_BIGENDIAN 1" >> $config_h
773 fi
774 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
775 if test "$mingw32" = "yes" ; then
776 echo "CONFIG_WIN32=yes" >> $config_mak
777 echo "#define CONFIG_WIN32 1" >> $config_h
778 else
779 cat > $TMPC << EOF
780 #include <byteswap.h>
781 int main(void) { return bswap_32(0); }
782 EOF
783 if $cc -o $TMPE $TMPC 2> /dev/null ; then
784 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
785 fi
786 fi
787 if test "$darwin" = "yes" ; then
788 echo "CONFIG_DARWIN=yes" >> $config_mak
789 echo "#define CONFIG_DARWIN 1" >> $config_h
790 fi
791 if test "$solaris" = "yes" ; then
792 echo "CONFIG_SOLARIS=yes" >> $config_mak
793 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
794 if test "$needs_libsunmath" = "yes" ; then
795 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
796 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
797 fi
798 fi
799 if test -n "$sparc_cpu"; then
800 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
801 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
802 fi
803 if test "$gdbstub" = "yes" ; then
804 echo "CONFIG_GDBSTUB=yes" >> $config_mak
805 echo "#define CONFIG_GDBSTUB 1" >> $config_h
806 fi
807 if test "$gprof" = "yes" ; then
808 echo "TARGET_GPROF=yes" >> $config_mak
809 echo "#define HAVE_GPROF 1" >> $config_h
810 fi
811 if test "$static" = "yes" ; then
812 echo "CONFIG_STATIC=yes" >> $config_mak
813 echo "#define CONFIG_STATIC 1" >> $config_h
814 fi
815 if test $profiler = "yes" ; then
816 echo "#define CONFIG_PROFILER 1" >> $config_h
817 fi
818 if test "$slirp" = "yes" ; then
819 echo "CONFIG_SLIRP=yes" >> $config_mak
820 echo "#define CONFIG_SLIRP 1" >> $config_h
821 fi
822 if test "$adlib" = "yes" ; then
823 echo "CONFIG_ADLIB=yes" >> $config_mak
824 echo "#define CONFIG_ADLIB 1" >> $config_h
825 fi
826 if test "$oss" = "yes" ; then
827 echo "CONFIG_OSS=yes" >> $config_mak
828 echo "#define CONFIG_OSS 1" >> $config_h
829 fi
830 if test "$coreaudio" = "yes" ; then
831 echo "CONFIG_COREAUDIO=yes" >> $config_mak
832 echo "#define CONFIG_COREAUDIO 1" >> $config_h
833 fi
834 if test "$alsa" = "yes" ; then
835 echo "CONFIG_ALSA=yes" >> $config_mak
836 echo "#define CONFIG_ALSA 1" >> $config_h
837 fi
838 if test "$dsound" = "yes" ; then
839 echo "CONFIG_DSOUND=yes" >> $config_mak
840 echo "#define CONFIG_DSOUND 1" >> $config_h
841 fi
842 if test "$fmod" = "yes" ; then
843 echo "CONFIG_FMOD=yes" >> $config_mak
844 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
845 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
846 echo "#define CONFIG_FMOD 1" >> $config_h
847 fi
848 qemu_version=`head $source_path/VERSION`
849 echo "VERSION=$qemu_version" >>$config_mak
850 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
851
852 echo "SRC_PATH=$source_path" >> $config_mak
853 if [ "$source_path_used" = "yes" ]; then
854 echo "VPATH=$source_path" >> $config_mak
855 fi
856 echo "TARGET_DIRS=$target_list" >> $config_mak
857 if [ "$build_docs" = "yes" ] ; then
858 echo "BUILD_DOCS=yes" >> $config_mak
859 fi
860
861 # XXX: suppress that
862 if [ "$bsd" = "yes" ] ; then
863 echo "#define O_LARGEFILE 0" >> $config_h
864 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
865 echo "#define _BSD 1" >> $config_h
866 fi
867
868 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
869
870 for target in $target_list; do
871 target_dir="$target"
872 config_mak=$target_dir/config.mak
873 config_h=$target_dir/config.h
874 target_cpu=`echo $target | cut -d '-' -f 1`
875 target_bigendian="no"
876 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
877 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
878 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
879 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
880 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
881 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
882 [ "$target_cpu" = "mips" ] && target_bigendian=yes
883 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
884 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
885 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
886 target_softmmu="no"
887 target_user_only="no"
888 target_linux_user="no"
889 target_darwin_user="no"
890 case "$target" in
891 ${target_cpu}-softmmu)
892 target_softmmu="yes"
893 ;;
894 ${target_cpu}-linux-user)
895 target_user_only="yes"
896 target_linux_user="yes"
897 ;;
898 ${target_cpu}-darwin-user)
899 target_user_only="yes"
900 target_darwin_user="yes"
901 ;;
902 *)
903 echo "ERROR: Target '$target' not recognised"
904 exit 1
905 ;;
906 esac
907
908 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
909 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
910 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
911 echo "To build QEMU without graphical output configure with --disable-gfx-check"
912 echo "Note that this will disable all output from the virtual graphics card."
913 exit 1;
914 fi
915
916 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
917
918 mkdir -p $target_dir
919 mkdir -p $target_dir/fpu
920 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
921 mkdir -p $target_dir/nwfpe
922 fi
923 if test "$target_user_only" = "no" ; then
924 mkdir -p $target_dir/slirp
925 fi
926
927 #
928 # don't use ln -sf as not all "ln -sf" over write the file/link
929 #
930 rm -f $target_dir/Makefile
931 ln -s $source_path/Makefile.target $target_dir/Makefile
932
933
934 echo "# Automatically generated by configure - do not modify" > $config_mak
935 echo "/* Automatically generated by configure - do not modify */" > $config_h
936
937
938 echo "include ../config-host.mak" >> $config_mak
939 echo "#include \"../config-host.h\"" >> $config_h
940
941 bflt="no"
942 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
943 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
944
945 if test "$target_cpu" = "i386" ; then
946 echo "TARGET_ARCH=i386" >> $config_mak
947 echo "#define TARGET_ARCH \"i386\"" >> $config_h
948 echo "#define TARGET_I386 1" >> $config_h
949 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
950 echo "#define USE_KQEMU 1" >> $config_h
951 fi
952 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
953 echo "TARGET_ARCH=arm" >> $config_mak
954 echo "#define TARGET_ARCH \"arm\"" >> $config_h
955 echo "#define TARGET_ARM 1" >> $config_h
956 bflt="yes"
957 elif test "$target_cpu" = "sparc" ; then
958 echo "TARGET_ARCH=sparc" >> $config_mak
959 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
960 echo "#define TARGET_SPARC 1" >> $config_h
961 elif test "$target_cpu" = "sparc64" ; then
962 echo "TARGET_ARCH=sparc64" >> $config_mak
963 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
964 echo "#define TARGET_SPARC 1" >> $config_h
965 echo "#define TARGET_SPARC64 1" >> $config_h
966 elif test "$target_cpu" = "ppc" ; then
967 echo "TARGET_ARCH=ppc" >> $config_mak
968 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
969 echo "#define TARGET_PPC 1" >> $config_h
970 elif test "$target_cpu" = "ppc64" ; then
971 echo "TARGET_ARCH=ppc64" >> $config_mak
972 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
973 echo "#define TARGET_PPC 1" >> $config_h
974 echo "#define TARGET_PPC64 1" >> $config_h
975 elif test "$target_cpu" = "ppcemb" ; then
976 echo "TARGET_ARCH=ppcemb" >> $config_mak
977 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
978 echo "#define TARGET_PPC 1" >> $config_h
979 echo "#define TARGET_PPCEMB 1" >> $config_h
980 elif test "$target_cpu" = "x86_64" ; then
981 echo "TARGET_ARCH=x86_64" >> $config_mak
982 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
983 echo "#define TARGET_I386 1" >> $config_h
984 echo "#define TARGET_X86_64 1" >> $config_h
985 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
986 echo "#define USE_KQEMU 1" >> $config_h
987 fi
988 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
989 echo "TARGET_ARCH=mips" >> $config_mak
990 echo "#define TARGET_ARCH \"mips\"" >> $config_h
991 echo "#define TARGET_MIPS 1" >> $config_h
992 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
993 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
994 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
995 echo "TARGET_ARCH=mips64" >> $config_mak
996 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
997 echo "#define TARGET_MIPS 1" >> $config_h
998 echo "#define TARGET_MIPS64 1" >> $config_h
999 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1000 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1001 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1002 echo "TARGET_ARCH=sh4" >> $config_mak
1003 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1004 echo "#define TARGET_SH4 1" >> $config_h
1005 bflt="yes"
1006 elif test "$target_cpu" = "m68k" ; then
1007 echo "TARGET_ARCH=m68k" >> $config_mak
1008 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1009 echo "#define TARGET_M68K 1" >> $config_h
1010 bflt="yes"
1011 elif test "$target_cpu" = "alpha" ; then
1012 echo "TARGET_ARCH=alpha" >> $config_mak
1013 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1014 echo "#define TARGET_ALPHA 1" >> $config_h
1015 else
1016 echo "Unsupported target CPU"
1017 exit 1
1018 fi
1019 if test "$target_bigendian" = "yes" ; then
1020 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1021 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1022 fi
1023 if test "$target_softmmu" = "yes" ; then
1024 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1025 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1026 fi
1027 if test "$target_user_only" = "yes" ; then
1028 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1029 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1030 fi
1031 if test "$target_linux_user" = "yes" ; then
1032 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1033 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1034 fi
1035 if test "$target_darwin_user" = "yes" ; then
1036 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1037 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1038 fi
1039
1040 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "m68k"; then
1041 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1042 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1043 fi
1044 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1045 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1046 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1047 fi
1048 # sdl defines
1049
1050 if test "$target_user_only" = "no"; then
1051 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1052 sdl1=$sdl_static
1053 else
1054 sdl1=$sdl
1055 fi
1056 if test "$sdl1" = "yes" ; then
1057 echo "#define CONFIG_SDL 1" >> $config_h
1058 echo "CONFIG_SDL=yes" >> $config_mak
1059 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1060 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1061 else
1062 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1063 fi
1064 if [ "${aa}" = "yes" ] ; then
1065 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1066 else
1067 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1068 fi
1069 fi
1070 fi
1071
1072 if test "$cocoa" = "yes" ; then
1073 echo "#define CONFIG_COCOA 1" >> $config_h
1074 echo "CONFIG_COCOA=yes" >> $config_mak
1075 fi
1076
1077 done # for target in $targets
1078
1079 # build tree in object directory if source path is different from current one
1080 if test "$source_path_used" = "yes" ; then
1081 DIRS="tests"
1082 FILES="Makefile tests/Makefile"
1083 for dir in $DIRS ; do
1084 mkdir -p $dir
1085 done
1086 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1087 for f in $FILES ; do
1088 rm -f $f
1089 ln -s $source_path/$f $f
1090 done
1091 fi
1092
1093 rm -f $TMPO $TMPC $TMPE $TMPS