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