]> git.proxmox.com Git - mirror_qemu.git/blob - configure
Fix libvdeplug link test.
[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.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
27 audio_drv_list=""
28 audio_card_list=""
29 host_cc="gcc"
30 ar="ar"
31 make="make"
32 install="install"
33 strip="strip"
34 cpu=`uname -m`
35 target_list=""
36 case "$cpu" in
37 i386|i486|i586|i686|i86pc|BePC)
38 cpu="i386"
39 ;;
40 x86_64|amd64)
41 cpu="x86_64"
42 ;;
43 alpha)
44 cpu="alpha"
45 ;;
46 armv*b)
47 cpu="armv4b"
48 ;;
49 armv*l)
50 cpu="armv4l"
51 ;;
52 cris)
53 cpu="cris"
54 ;;
55 parisc|parisc64)
56 cpu="hppa"
57 ;;
58 ia64)
59 cpu="ia64"
60 ;;
61 m68k)
62 cpu="m68k"
63 ;;
64 mips)
65 cpu="mips"
66 ;;
67 mips64)
68 cpu="mips64"
69 ;;
70 "Power Macintosh"|ppc|ppc64)
71 cpu="powerpc"
72 ;;
73 s390*)
74 cpu="s390"
75 ;;
76 sparc|sun4[cdmuv])
77 cpu="sparc"
78 ;;
79 sparc64)
80 cpu="sparc64"
81 ;;
82 *)
83 cpu="unknown"
84 ;;
85 esac
86 gprof="no"
87 bigendian="no"
88 mingw32="no"
89 EXESUF=""
90 gdbstub="yes"
91 slirp="yes"
92 vde="yes"
93 fmod_lib=""
94 fmod_inc=""
95 oss_lib=""
96 vnc_tls="yes"
97 bsd="no"
98 linux="no"
99 kqemu="no"
100 profiler="no"
101 cocoa="no"
102 check_gfx="yes"
103 check_gcc="yes"
104 softmmu="yes"
105 linux_user="no"
106 darwin_user="no"
107 build_docs="no"
108 uname_release=""
109 curses="yes"
110 aio="yes"
111 nptl="yes"
112 mixemu="no"
113
114 # OS specific
115 targetos=`uname -s`
116 case $targetos in
117 CYGWIN*)
118 mingw32="yes"
119 OS_CFLAGS="-mno-cygwin"
120 if [ "$cpu" = "i386" ] ; then
121 kqemu="yes"
122 fi
123 audio_possible_drivers="sdl"
124 ;;
125 MINGW32*)
126 mingw32="yes"
127 if [ "$cpu" = "i386" ] ; then
128 kqemu="yes"
129 fi
130 audio_possible_drivers="dsound sdl fmod"
131 ;;
132 GNU/kFreeBSD)
133 audio_drv_list="oss"
134 audio_possible_drivers="oss sdl esd pa"
135 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
136 kqemu="yes"
137 fi
138 ;;
139 FreeBSD)
140 bsd="yes"
141 audio_drv_list="oss"
142 audio_possible_drivers="oss sdl esd pa"
143 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
144 kqemu="yes"
145 fi
146 ;;
147 NetBSD)
148 bsd="yes"
149 audio_drv_list="oss"
150 audio_possible_drivers="oss sdl esd"
151 ;;
152 OpenBSD)
153 bsd="yes"
154 openbsd="yes"
155 audio_drv_list="oss"
156 audio_possible_drivers="oss sdl esd"
157 oss_lib="-lossaudio"
158 ;;
159 Darwin)
160 bsd="yes"
161 darwin="yes"
162 darwin_user="yes"
163 cocoa="yes"
164 audio_drv_list="coreaudio"
165 audio_possible_drivers="coreaudio sdl fmod"
166 OS_CFLAGS="-mdynamic-no-pic"
167 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
168 ;;
169 SunOS)
170 solaris="yes"
171 make="gmake"
172 install="ginstall"
173 needs_libsunmath="no"
174 solarisrev=`uname -r | cut -f2 -d.`
175 # have to select again, because `uname -m` returns i86pc
176 # even on an x86_64 box.
177 solariscpu=`isainfo -k`
178 if test "${solariscpu}" = "amd64" ; then
179 cpu="x86_64"
180 fi
181 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
182 if test "$solarisrev" -le 9 ; then
183 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
184 needs_libsunmath="yes"
185 else
186 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
187 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
188 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
189 echo "Studio 11 can be downloaded from www.sun.com."
190 exit 1
191 fi
192 fi
193 if test "$solarisrev" -ge 9 ; then
194 kqemu="yes"
195 fi
196 fi
197 if test -f /usr/include/sys/soundcard.h ; then
198 audio_drv_list="oss"
199 fi
200 audio_possible_drivers="oss sdl"
201 ;;
202 *)
203 audio_drv_list="oss"
204 audio_possible_drivers="oss alsa sdl esd pa"
205 linux="yes"
206 linux_user="yes"
207 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
208 kqemu="yes"
209 audio_possible_drivers="$audio_possible_drivers fmod"
210 fi
211 ;;
212 esac
213
214 if [ "$bsd" = "yes" ] ; then
215 if [ "$darwin" != "yes" ] ; then
216 make="gmake"
217 fi
218 fi
219
220 # find source path
221 source_path=`dirname "$0"`
222 source_path_used="no"
223 workdir=`pwd`
224 if [ -z "$source_path" ]; then
225 source_path=$workdir
226 else
227 source_path=`cd "$source_path"; pwd`
228 fi
229 [ -f "$workdir/vl.c" ] || source_path_used="yes"
230
231 werror="no"
232 # generate compile errors on warnings for development builds
233 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
234 #werror="yes";
235 #fi
236
237 for opt do
238 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
239 case "$opt" in
240 --help|-h) show_help=yes
241 ;;
242 --prefix=*) prefix="$optarg"
243 ;;
244 --interp-prefix=*) interp_prefix="$optarg"
245 ;;
246 --source-path=*) source_path="$optarg"
247 source_path_used="yes"
248 ;;
249 --cross-prefix=*) cross_prefix="$optarg"
250 ;;
251 --cc=*) cc="$optarg"
252 gcc3_search="no"
253 ;;
254 --host-cc=*) host_cc="$optarg"
255 ;;
256 --make=*) make="$optarg"
257 ;;
258 --install=*) install="$optarg"
259 ;;
260 --extra-cflags=*) CFLAGS="$optarg"
261 ;;
262 --extra-ldflags=*) LDFLAGS="$optarg"
263 ;;
264 --cpu=*) cpu="$optarg"
265 ;;
266 --target-list=*) target_list="$optarg"
267 ;;
268 --enable-gprof) gprof="yes"
269 ;;
270 --static) static="yes"
271 ;;
272 --disable-sdl) sdl="no"
273 ;;
274 --fmod-lib=*) fmod_lib="$optarg"
275 ;;
276 --fmod-inc=*) fmod_inc="$optarg"
277 ;;
278 --oss-lib=*) oss_lib="$optarg"
279 ;;
280 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
281 ;;
282 --audio-drv-list=*) audio_drv_list="$optarg"
283 ;;
284 --disable-vnc-tls) vnc_tls="no"
285 ;;
286 --disable-slirp) slirp="no"
287 ;;
288 --disable-vde) vde="no"
289 ;;
290 --disable-kqemu) kqemu="no"
291 ;;
292 --disable-brlapi) brlapi="no"
293 ;;
294 --enable-profiler) profiler="yes"
295 ;;
296 --enable-cocoa)
297 cocoa="yes" ;
298 sdl="no" ;
299 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
300 ;;
301 --disable-gfx-check) check_gfx="no"
302 ;;
303 --disable-gcc-check) check_gcc="no"
304 ;;
305 --disable-system) softmmu="no"
306 ;;
307 --enable-system) softmmu="yes"
308 ;;
309 --disable-linux-user) linux_user="no"
310 ;;
311 --enable-linux-user) linux_user="yes"
312 ;;
313 --disable-darwin-user) darwin_user="no"
314 ;;
315 --enable-darwin-user) darwin_user="yes"
316 ;;
317 --enable-uname-release=*) uname_release="$optarg"
318 ;;
319 --sparc_cpu=*)
320 sparc_cpu="$optarg"
321 case $sparc_cpu in
322 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
323 target_cpu="sparc"; cpu="sparc" ;;
324 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
325 target_cpu="sparc"; cpu="sparc" ;;
326 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
327 target_cpu="sparc64"; cpu="sparc64" ;;
328 *) echo "undefined SPARC architecture. Exiting";exit 1;;
329 esac
330 ;;
331 --enable-werror) werror="yes"
332 ;;
333 --disable-werror) werror="no"
334 ;;
335 --disable-curses) curses="no"
336 ;;
337 --disable-nptl) nptl="no"
338 ;;
339 --enable-mixemu) mixemu="yes"
340 ;;
341 --disable-aio) aio="no"
342 ;;
343 *) echo "ERROR: unknown option $opt"; show_help="yes"
344 ;;
345 esac
346 done
347
348 # default flags for all hosts
349 CFLAGS="$CFLAGS -Wall -Wundef -O2 -g -fno-strict-aliasing"
350 LDFLAGS="$LDFLAGS -g"
351 if test "$werror" = "yes" ; then
352 CFLAGS="$CFLAGS -Werror"
353 fi
354
355 #
356 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
357 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
358 #
359 case "$cpu" in
360 sparc) if test -z "$sparc_cpu" ; then
361 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
362 ARCH_LDFLAGS="-m32"
363 else
364 ARCH_CFLAGS="${SP_CFLAGS}"
365 ARCH_LDFLAGS="${SP_LDFLAGS}"
366 fi
367 ;;
368 sparc64) if test -z "$sparc_cpu" ; then
369 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
370 ARCH_LDFLAGS="-m64"
371 else
372 ARCH_CFLAGS="${SP_CFLAGS}"
373 ARCH_LDFLAGS="${SP_LDFLAGS}"
374 fi
375 ;;
376 s390)
377 ARCH_CFLAGS="-march=z900"
378 ;;
379 i386)
380 ARCH_CFLAGS="-m32"
381 ARCH_LDFLAGS="-m32"
382 ;;
383 x86_64)
384 ARCH_CFLAGS="-m64"
385 ARCH_LDFLAGS="-m64"
386 ;;
387 esac
388
389 if test x"$show_help" = x"yes" ; then
390 cat << EOF
391
392 Usage: configure [options]
393 Options: [defaults in brackets after descriptions]
394
395 EOF
396 echo "Standard options:"
397 echo " --help print this message"
398 echo " --prefix=PREFIX install in PREFIX [$prefix]"
399 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
400 echo " use %M for cpu name [$interp_prefix]"
401 echo " --target-list=LIST set target list [$target_list]"
402 echo ""
403 echo "kqemu kernel acceleration support:"
404 echo " --disable-kqemu disable kqemu support"
405 echo ""
406 echo "Advanced options (experts only):"
407 echo " --source-path=PATH path of source code [$source_path]"
408 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
409 echo " --cc=CC use C compiler CC [$cc]"
410 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
411 echo " --make=MAKE use specified make [$make]"
412 echo " --install=INSTALL use specified install [$install]"
413 echo " --static enable static build [$static]"
414 echo " --disable-werror disable compilation abort on warning"
415 echo " --disable-sdl disable SDL"
416 echo " --enable-cocoa enable COCOA (Mac OS X only)"
417 echo " --audio-drv-list=LIST set audio drivers list:"
418 echo " Available drivers: $audio_possible_drivers"
419 echo " --audio-card-list=LIST set list of additional emulated audio cards"
420 echo " Available cards: ac97 adlib cs4231a gus"
421 echo " --enable-mixemu enable mixer emulation"
422 echo " --disable-brlapi disable BrlAPI"
423 echo " --disable-vnc-tls disable TLS encryption for VNC server"
424 echo " --disable-curses disable curses output"
425 echo " --disable-nptl disable usermode NPTL support"
426 echo " --enable-system enable all system emulation targets"
427 echo " --disable-system disable all system emulation targets"
428 echo " --enable-linux-user enable all linux usermode emulation targets"
429 echo " --disable-linux-user disable all linux usermode emulation targets"
430 echo " --enable-darwin-user enable all darwin usermode emulation targets"
431 echo " --disable-darwin-user disable all darwin usermode emulation targets"
432 echo " --fmod-lib path to FMOD library"
433 echo " --fmod-inc path to FMOD includes"
434 echo " --oss-lib path to OSS library"
435 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
436 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
437 echo " --disable-vde disable support for vde network"
438 echo " --disable-aio disable AIO support"
439 echo ""
440 echo "NOTE: The object files are built at the place where configure is launched"
441 exit 1
442 fi
443
444 cc="${cross_prefix}${cc}"
445 ar="${cross_prefix}${ar}"
446 strip="${cross_prefix}${strip}"
447
448 # check that the C compiler works.
449 cat > $TMPC <<EOF
450 int main(void) {}
451 EOF
452
453 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
454 : C compiler works ok
455 else
456 echo "ERROR: \"$cc\" either does not exist or does not work"
457 exit 1
458 fi
459
460 # check compiler to see if we're on mingw32
461 cat > $TMPC <<EOF
462 #include <windows.h>
463 #ifndef _WIN32
464 #error not windows
465 #endif
466 int main(void) {}
467 EOF
468
469 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
470 mingw32="yes"
471 fi
472
473 if test "$mingw32" = "yes" ; then
474 linux="no"
475 EXESUF=".exe"
476 oss="no"
477 linux_user="no"
478 fi
479
480 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
481 AIOLIBS=
482 else
483 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
484 AIOLIBS="-lrt -lpthread"
485 fi
486
487 # Check for gcc4, error if pre-gcc4
488 if test "$check_gcc" = "yes" ; then
489 cat > $TMPC <<EOF
490 #if __GNUC__ < 4
491 #error gcc3
492 #endif
493 int main(){return 0;}
494 EOF
495 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
496 echo "WARNING: \"$cc\" looks like gcc 4.x"
497 found_compat_cc="no"
498 if test "$gcc3_search" = "yes" ; then
499 echo "Looking for gcc 3.x"
500 for compat_cc in $gcc3_list ; do
501 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
502 echo "Found \"$compat_cc\""
503 cc="$cross_prefix$compat_cc"
504 found_compat_cc="yes"
505 break
506 fi
507 done
508 if test "$found_compat_cc" = "no" ; then
509 echo "gcc 3.x not found!"
510 fi
511 fi
512 if test "$found_compat_cc" = "no" ; then
513 echo "QEMU is known to have problems when compiled with gcc 4.x"
514 echo "It is recommended that you use gcc 3.x to build QEMU"
515 echo "To use this compiler anyway, configure with --disable-gcc-check"
516 exit 1;
517 fi
518 fi
519 fi
520
521 #
522 # Solaris specific configure tool chain decisions
523 #
524 if test "$solaris" = "yes" ; then
525 #
526 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
527 # override the check with --disable-gcc-check
528 #
529 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
530 solgcc=`which $cc`
531 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
532 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
533 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
534 echo "or get the latest patch from SunSolve for gcc"
535 exit 1
536 fi
537 fi
538 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
539 if test -z "$solinst" ; then
540 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
541 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
542 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
543 exit 1
544 fi
545 if test "$solinst" = "/usr/sbin/install" ; then
546 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
547 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
548 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
549 exit 1
550 fi
551 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
552 if test -z "$sol_ar" ; then
553 echo "Error: No path includes ar"
554 if test -f /usr/ccs/bin/ar ; then
555 echo "Add /usr/ccs/bin to your path and rerun configure"
556 fi
557 exit 1
558 fi
559 fi
560
561
562 if test -z "$target_list" ; then
563 # these targets are portable
564 if [ "$softmmu" = "yes" ] ; then
565 target_list="\
566 i386-softmmu \
567 x86_64-softmmu \
568 arm-softmmu \
569 cris-softmmu \
570 m68k-softmmu \
571 mips-softmmu \
572 mipsel-softmmu \
573 mips64-softmmu \
574 mips64el-softmmu \
575 ppc-softmmu \
576 ppcemb-softmmu \
577 ppc64-softmmu \
578 sh4-softmmu \
579 sh4eb-softmmu \
580 sparc-softmmu \
581 "
582 fi
583 # the following are Linux specific
584 if [ "$linux_user" = "yes" ] ; then
585 target_list="${target_list}\
586 i386-linux-user \
587 x86_64-linux-user \
588 alpha-linux-user \
589 arm-linux-user \
590 armeb-linux-user \
591 cris-linux-user \
592 m68k-linux-user \
593 mips-linux-user \
594 mipsel-linux-user \
595 ppc-linux-user \
596 ppc64-linux-user \
597 ppc64abi32-linux-user \
598 sh4-linux-user \
599 sh4eb-linux-user \
600 sparc-linux-user \
601 sparc64-linux-user \
602 sparc32plus-linux-user \
603 "
604 fi
605 # the following are Darwin specific
606 if [ "$darwin_user" = "yes" ] ; then
607 target_list="$target_list i386-darwin-user ppc-darwin-user"
608 fi
609 else
610 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
611 fi
612 if test -z "$target_list" ; then
613 echo "No targets enabled"
614 exit 1
615 fi
616
617 if test -z "$cross_prefix" ; then
618
619 # ---
620 # big/little endian test
621 cat > $TMPC << EOF
622 #include <inttypes.h>
623 int main(int argc, char ** argv){
624 volatile uint32_t i=0x01234567;
625 return (*((uint8_t*)(&i))) == 0x67;
626 }
627 EOF
628
629 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
630 $TMPE && bigendian="yes"
631 else
632 echo big/little test failed
633 fi
634
635 else
636
637 # if cross compiling, cannot launch a program, so make a static guess
638 if test "$cpu" = "armv4b" \
639 -o "$cpu" = "hppa" \
640 -o "$cpu" = "m68k" \
641 -o "$cpu" = "mips" \
642 -o "$cpu" = "mips64" \
643 -o "$cpu" = "powerpc" \
644 -o "$cpu" = "s390" \
645 -o "$cpu" = "sparc" \
646 -o "$cpu" = "sparc64"; then
647 bigendian="yes"
648 fi
649
650 fi
651
652 # host long bits test
653 hostlongbits="32"
654 if test "$cpu" = "x86_64" \
655 -o "$cpu" = "alpha" \
656 -o "$cpu" = "ia64" \
657 -o "$cpu" = "sparc64"; then
658 hostlongbits="64"
659 fi
660
661 # ppc specific hostlongbits selection
662 if test "$cpu" = "powerpc" ; then
663 cat > $TMPC <<EOF
664 int main(void){return sizeof(long);}
665 EOF
666
667 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
668 $TMPE
669 case $? in
670 4) hostlongbits="32";;
671 8) hostlongbits="64";;
672 *) echo "Couldn't determine bits per long value"; exit 1;;
673 esac
674 else
675 echo hostlongbits test failed
676 exit 1
677 fi
678 fi
679
680 # check gcc options support
681 cat > $TMPC <<EOF
682 int main(void) {
683 }
684 EOF
685
686 # Check host NPTL support
687 cat > $TMPC <<EOF
688 #include <sched.h>
689 #include <linux/futex.h>
690 void foo()
691 {
692 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
693 #error bork
694 #endif
695 }
696 EOF
697
698 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
699 :
700 else
701 nptl="no"
702 fi
703
704 ##########################################
705 # SDL probe
706
707 sdl_too_old=no
708
709 if test -z "$sdl" ; then
710 sdl_config="sdl-config"
711 sdl=no
712 sdl_static=no
713
714 cat > $TMPC << EOF
715 #include <SDL.h>
716 #undef main /* We don't want SDL to override our main() */
717 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
718 EOF
719 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
720 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
721 if test "$_sdlversion" -lt 121 ; then
722 sdl_too_old=yes
723 else
724 if test "$cocoa" = "no" ; then
725 sdl=yes
726 fi
727 fi
728
729 # static link with sdl ?
730 if test "$sdl" = "yes" ; then
731 aa="no"
732 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
733 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
734 if [ "$aa" = "yes" ] ; then
735 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
736 fi
737
738 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
739 sdl_static=yes
740 fi
741 fi # static link
742 fi # sdl compile test
743 else
744 # Make sure to disable cocoa if sdl was set
745 if test "$sdl" = "yes" ; then
746 cocoa="no"
747 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
748 fi
749 fi # -z $sdl
750
751 ##########################################
752 # VNC TLS detection
753 if test "$vnc_tls" = "yes" ; then
754 cat > $TMPC <<EOF
755 #include <gnutls/gnutls.h>
756 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
757 EOF
758 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
759 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
760 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
761 $vnc_tls_libs 2> /dev/null ; then
762 :
763 else
764 vnc_tls="no"
765 fi
766 fi
767
768 ##########################################
769 # vde libraries probe
770 if test "$vde" = "yes" ; then
771 cat > $TMPC << EOF
772 #include <libvdeplug.h>
773 int main(void)
774 {
775 struct vde_open_args a = {0, 0, 0};
776 vde_open("", "", &a);
777 return 0;
778 }
779 EOF
780 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
781 :
782 else
783 vde="no"
784 fi
785 fi
786
787 ##########################################
788 # Sound support libraries probe
789
790 audio_drv_probe()
791 {
792 drv=$1
793 hdr=$2
794 lib=$3
795 exp=$4
796 cfl=$5
797 cat > $TMPC << EOF
798 #include <$hdr>
799 int main(void) { $exp }
800 EOF
801 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
802 :
803 else
804 echo
805 echo "Error: $drv check failed"
806 echo "Make sure to have the $drv libs and headers installed."
807 echo
808 exit 1
809 fi
810 }
811
812 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
813 for drv in $audio_drv_list; do
814 case $drv in
815 alsa)
816 audio_drv_probe $drv alsa/asoundlib.h -lasound \
817 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
818 ;;
819
820 fmod)
821 if test -z $fmod_lib || test -z $fmod_inc; then
822 echo
823 echo "Error: You must specify path to FMOD library and headers"
824 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
825 echo
826 exit 1
827 fi
828 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
829 ;;
830
831 esd)
832 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
833 ;;
834
835 pa)
836 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
837 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
838 ;;
839
840 oss|sdl|core|wav|dsound)
841 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
842 ;;
843
844 *)
845 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
846 echo
847 echo "Error: Unknown driver '$drv' selected"
848 echo "Possible drivers are: $audio_possible_drivers"
849 echo
850 exit 1
851 }
852 ;;
853 esac
854 done
855
856 ##########################################
857 # BrlAPI probe
858
859 if test -z "$brlapi" ; then
860 brlapi=no
861 cat > $TMPC << EOF
862 #include <brlapi.h>
863 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
864 EOF
865 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
866 brlapi=yes
867 fi # brlapi compile test
868 fi # -z $brlapi
869
870 ##########################################
871 # curses probe
872
873 if test "$curses" = "yes" ; then
874 curses=no
875 cat > $TMPC << EOF
876 #include <curses.h>
877 int main(void) { return curses_version(); }
878 EOF
879 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
880 curses=yes
881 fi
882 fi # test "$curses"
883
884 ##########################################
885 # AIO probe
886 if test "$aio" = "yes" ; then
887 aio=no
888 cat > $TMPC << EOF
889 #include <aio.h>
890 int main(void) { return aio_write(NULL); }
891 EOF
892 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
893 aio=yes
894 fi
895 fi
896
897 # Check if tools are available to build documentation.
898 if [ -x "`which texi2html 2>/dev/null`" ] && \
899 [ -x "`which pod2man 2>/dev/null`" ]; then
900 build_docs="yes"
901 fi
902
903 if test "$mingw32" = "yes" ; then
904 if test -z "$prefix" ; then
905 prefix="/c/Program Files/Qemu"
906 fi
907 mansuffix=""
908 datasuffix=""
909 docsuffix=""
910 binsuffix=""
911 else
912 if test -z "$prefix" ; then
913 prefix="/usr/local"
914 fi
915 mansuffix="/share/man"
916 datasuffix="/share/qemu"
917 docsuffix="/share/doc/qemu"
918 binsuffix="/bin"
919 fi
920
921 echo "Install prefix $prefix"
922 echo "BIOS directory $prefix$datasuffix"
923 echo "binary directory $prefix$binsuffix"
924 if test "$mingw32" = "no" ; then
925 echo "Manual directory $prefix$mansuffix"
926 echo "ELF interp prefix $interp_prefix"
927 fi
928 echo "Source path $source_path"
929 echo "C compiler $cc"
930 echo "Host C compiler $host_cc"
931 echo "ARCH_CFLAGS $ARCH_CFLAGS"
932 echo "make $make"
933 echo "install $install"
934 echo "host CPU $cpu"
935 echo "host big endian $bigendian"
936 echo "target list $target_list"
937 echo "gprof enabled $gprof"
938 echo "profiler $profiler"
939 echo "static build $static"
940 echo "-Werror enabled $werror"
941 if test "$darwin" = "yes" ; then
942 echo "Cocoa support $cocoa"
943 fi
944 echo "SDL support $sdl"
945 if test "$sdl" != "no" ; then
946 echo "SDL static link $sdl_static"
947 fi
948 echo "curses support $curses"
949 echo "mingw32 support $mingw32"
950 echo "Audio drivers $audio_drv_list"
951 echo "Extra audio cards $audio_card_list"
952 echo "Mixer emulation $mixemu"
953 echo "VNC TLS support $vnc_tls"
954 if test "$vnc_tls" = "yes" ; then
955 echo " TLS CFLAGS $vnc_tls_cflags"
956 echo " TLS LIBS $vnc_tls_libs"
957 fi
958 if test -n "$sparc_cpu"; then
959 echo "Target Sparc Arch $sparc_cpu"
960 fi
961 echo "kqemu support $kqemu"
962 echo "brlapi support $brlapi"
963 echo "Documentation $build_docs"
964 [ ! -z "$uname_release" ] && \
965 echo "uname -r $uname_release"
966 echo "NPTL support $nptl"
967 echo "vde support $vde"
968 echo "AIO support $aio"
969
970 if test $sdl_too_old = "yes"; then
971 echo "-> Your SDL version is too old - please upgrade to have SDL support"
972 fi
973 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
974 echo "The error log from compiling the libSDL test is: "
975 cat /tmp/qemu-$$-sdl-config.log
976 fi
977 rm -f /tmp/qemu-$$-sdl-config.log
978 #if test "$sdl_static" = "no"; then
979 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
980 #fi
981 config_mak="config-host.mak"
982 config_h="config-host.h"
983
984 #echo "Creating $config_mak and $config_h"
985
986 test -f $config_h && mv $config_h ${config_h}~
987
988 echo "# Automatically generated by configure - do not modify" > $config_mak
989 echo "# Configured with: $0 $@" >> $config_mak
990 echo "/* Automatically generated by configure - do not modify */" > $config_h
991
992 echo "prefix=$prefix" >> $config_mak
993 echo "bindir=\${prefix}$binsuffix" >> $config_mak
994 echo "mandir=\${prefix}$mansuffix" >> $config_mak
995 echo "datadir=\${prefix}$datasuffix" >> $config_mak
996 echo "docdir=\${prefix}$docsuffix" >> $config_mak
997 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
998 echo "MAKE=$make" >> $config_mak
999 echo "INSTALL=$install" >> $config_mak
1000 echo "CC=$cc" >> $config_mak
1001 echo "HOST_CC=$host_cc" >> $config_mak
1002 echo "AR=$ar" >> $config_mak
1003 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1004 # XXX: only use CFLAGS and LDFLAGS ?
1005 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1006 # compilation of dyngen tool (useful for win32 build on Linux host)
1007 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1008 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1009 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1010 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1011 echo "CFLAGS=$CFLAGS" >> $config_mak
1012 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1013 echo "EXESUF=$EXESUF" >> $config_mak
1014 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1015 case "$cpu" in
1016 i386)
1017 echo "ARCH=i386" >> $config_mak
1018 echo "#define HOST_I386 1" >> $config_h
1019 ;;
1020 x86_64)
1021 echo "ARCH=x86_64" >> $config_mak
1022 echo "#define HOST_X86_64 1" >> $config_h
1023 ;;
1024 alpha)
1025 echo "ARCH=alpha" >> $config_mak
1026 echo "#define HOST_ALPHA 1" >> $config_h
1027 ;;
1028 armv4b)
1029 echo "ARCH=arm" >> $config_mak
1030 echo "#define HOST_ARM 1" >> $config_h
1031 ;;
1032 armv4l)
1033 echo "ARCH=arm" >> $config_mak
1034 echo "#define HOST_ARM 1" >> $config_h
1035 ;;
1036 cris)
1037 echo "ARCH=cris" >> $config_mak
1038 echo "#define HOST_CRIS 1" >> $config_h
1039 ;;
1040 hppa)
1041 echo "ARCH=hppa" >> $config_mak
1042 echo "#define HOST_HPPA 1" >> $config_h
1043 ;;
1044 ia64)
1045 echo "ARCH=ia64" >> $config_mak
1046 echo "#define HOST_IA64 1" >> $config_h
1047 ;;
1048 m68k)
1049 echo "ARCH=m68k" >> $config_mak
1050 echo "#define HOST_M68K 1" >> $config_h
1051 ;;
1052 mips)
1053 echo "ARCH=mips" >> $config_mak
1054 echo "#define HOST_MIPS 1" >> $config_h
1055 ;;
1056 mips64)
1057 echo "ARCH=mips64" >> $config_mak
1058 echo "#define HOST_MIPS64 1" >> $config_h
1059 ;;
1060 powerpc)
1061 if test "$hostlongbits" = "32"; then
1062 echo "ARCH=ppc" >> $config_mak
1063 echo "#define HOST_PPC 1" >> $config_h
1064 else
1065 echo "ARCH=ppc64" >> $config_mak
1066 echo "#define HOST_PPC64 1" >> $config_h
1067 fi
1068 ;;
1069 s390)
1070 echo "ARCH=s390" >> $config_mak
1071 echo "#define HOST_S390 1" >> $config_h
1072 ;;
1073 sparc)
1074 echo "ARCH=sparc" >> $config_mak
1075 echo "#define HOST_SPARC 1" >> $config_h
1076 ;;
1077 sparc64)
1078 echo "ARCH=sparc64" >> $config_mak
1079 echo "#define HOST_SPARC64 1" >> $config_h
1080 ;;
1081 *)
1082 echo "Unsupported CPU = $cpu"
1083 exit 1
1084 ;;
1085 esac
1086 if test "$bigendian" = "yes" ; then
1087 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1088 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1089 fi
1090 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1091 if test "$mingw32" = "yes" ; then
1092 echo "CONFIG_WIN32=yes" >> $config_mak
1093 echo "#define CONFIG_WIN32 1" >> $config_h
1094 else
1095 cat > $TMPC << EOF
1096 #include <byteswap.h>
1097 int main(void) { return bswap_32(0); }
1098 EOF
1099 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1100 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1101 fi
1102 fi
1103
1104 if [ "$openbsd" = "yes" ] ; then
1105 echo "#define ENOTSUP 4096" >> $config_h
1106 fi
1107
1108 if test "$darwin" = "yes" ; then
1109 echo "CONFIG_DARWIN=yes" >> $config_mak
1110 echo "#define CONFIG_DARWIN 1" >> $config_h
1111 fi
1112 if test "$solaris" = "yes" ; then
1113 echo "CONFIG_SOLARIS=yes" >> $config_mak
1114 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1115 if test "$needs_libsunmath" = "yes" ; then
1116 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1117 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1118 fi
1119 fi
1120 if test -n "$sparc_cpu"; then
1121 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1122 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1123 fi
1124 if test "$gdbstub" = "yes" ; then
1125 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1126 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1127 fi
1128 if test "$gprof" = "yes" ; then
1129 echo "TARGET_GPROF=yes" >> $config_mak
1130 echo "#define HAVE_GPROF 1" >> $config_h
1131 fi
1132 if test "$static" = "yes" ; then
1133 echo "CONFIG_STATIC=yes" >> $config_mak
1134 echo "#define CONFIG_STATIC 1" >> $config_h
1135 fi
1136 if test $profiler = "yes" ; then
1137 echo "#define CONFIG_PROFILER 1" >> $config_h
1138 fi
1139 if test "$slirp" = "yes" ; then
1140 echo "CONFIG_SLIRP=yes" >> $config_mak
1141 echo "#define CONFIG_SLIRP 1" >> $config_h
1142 fi
1143 if test "$vde" = "yes" ; then
1144 echo "CONFIG_VDE=yes" >> $config_mak
1145 echo "#define CONFIG_VDE 1" >> $config_h
1146 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1147 fi
1148 for card in $audio_card_list; do
1149 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1150 echo "$def=yes" >> $config_mak
1151 echo "#define $def 1" >> $config_h
1152 done
1153 echo "#define AUDIO_DRIVERS \\" >> $config_h
1154 for drv in $audio_drv_list; do
1155 echo " &${drv}_audio_driver, \\" >>$config_h
1156 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1157 echo "$def=yes" >> $config_mak
1158 if test "$drv" = "fmod"; then
1159 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1160 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1161 elif test "$drv" = "oss"; then
1162 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1163 fi
1164 done
1165 echo "" >>$config_h
1166 if test "$mixemu" = "yes" ; then
1167 echo "CONFIG_MIXEMU=yes" >> $config_mak
1168 echo "#define CONFIG_MIXEMU 1" >> $config_h
1169 fi
1170 if test "$vnc_tls" = "yes" ; then
1171 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1172 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1173 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1174 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1175 fi
1176 qemu_version=`head $source_path/VERSION`
1177 echo "VERSION=$qemu_version" >>$config_mak
1178 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1179
1180 echo "SRC_PATH=$source_path" >> $config_mak
1181 if [ "$source_path_used" = "yes" ]; then
1182 echo "VPATH=$source_path" >> $config_mak
1183 fi
1184 echo "TARGET_DIRS=$target_list" >> $config_mak
1185 if [ "$build_docs" = "yes" ] ; then
1186 echo "BUILD_DOCS=yes" >> $config_mak
1187 fi
1188 if test "$static" = "yes"; then
1189 sdl1=$sdl_static
1190 else
1191 sdl1=$sdl
1192 fi
1193 if test "$sdl1" = "yes" ; then
1194 echo "#define CONFIG_SDL 1" >> $config_h
1195 echo "CONFIG_SDL=yes" >> $config_mak
1196 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1197 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1198 else
1199 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1200 fi
1201 if [ "${aa}" = "yes" ] ; then
1202 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1203 else
1204 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1205 fi
1206 fi
1207 if test "$cocoa" = "yes" ; then
1208 echo "#define CONFIG_COCOA 1" >> $config_h
1209 echo "CONFIG_COCOA=yes" >> $config_mak
1210 fi
1211 if test "$curses" = "yes" ; then
1212 echo "#define CONFIG_CURSES 1" >> $config_h
1213 echo "CONFIG_CURSES=yes" >> $config_mak
1214 echo "CURSES_LIBS=-lcurses" >> $config_mak
1215 fi
1216 if test "$brlapi" = "yes" ; then
1217 echo "CONFIG_BRLAPI=yes" >> $config_mak
1218 echo "#define CONFIG_BRLAPI 1" >> $config_h
1219 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1220 fi
1221 if test "$aio" = "yes" ; then
1222 echo "#define CONFIG_AIO 1" >> $config_h
1223 fi
1224
1225 # XXX: suppress that
1226 if [ "$bsd" = "yes" ] ; then
1227 echo "#define O_LARGEFILE 0" >> $config_h
1228 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1229 echo "#define _BSD 1" >> $config_h
1230 fi
1231
1232 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1233
1234 tools=
1235 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1236 tools="qemu-img\$(EXESUF) $tools"
1237 if [ "$linux" = "yes" ] ; then
1238 tools="qemu-nbd\$(EXESUF) $tools"
1239 fi
1240 fi
1241 echo "TOOLS=$tools" >> $config_mak
1242
1243 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1244
1245 for target in $target_list; do
1246 target_dir="$target"
1247 config_mak=$target_dir/config.mak
1248 config_h=$target_dir/config.h
1249 target_cpu=`echo $target | cut -d '-' -f 1`
1250 target_bigendian="no"
1251 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1252 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1253 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1254 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1255 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1256 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1257 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1258 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1259 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1260 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1261 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1262 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1263 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1264 target_softmmu="no"
1265 target_user_only="no"
1266 target_linux_user="no"
1267 target_darwin_user="no"
1268 case "$target" in
1269 ${target_cpu}-softmmu)
1270 target_softmmu="yes"
1271 ;;
1272 ${target_cpu}-linux-user)
1273 target_user_only="yes"
1274 target_linux_user="yes"
1275 ;;
1276 ${target_cpu}-darwin-user)
1277 target_user_only="yes"
1278 target_darwin_user="yes"
1279 ;;
1280 *)
1281 echo "ERROR: Target '$target' not recognised"
1282 exit 1
1283 ;;
1284 esac
1285
1286 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1287 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1288 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1289 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1290 echo "Note that this will disable all output from the virtual graphics card"
1291 echo "except through VNC or curses."
1292 exit 1;
1293 fi
1294
1295 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1296
1297 test -f $config_h && mv $config_h ${config_h}~
1298
1299 mkdir -p $target_dir
1300 mkdir -p $target_dir/fpu
1301 mkdir -p $target_dir/tcg
1302 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1303 mkdir -p $target_dir/nwfpe
1304 fi
1305
1306 #
1307 # don't use ln -sf as not all "ln -sf" over write the file/link
1308 #
1309 rm -f $target_dir/Makefile
1310 ln -s $source_path/Makefile.target $target_dir/Makefile
1311
1312
1313 echo "# Automatically generated by configure - do not modify" > $config_mak
1314 echo "/* Automatically generated by configure - do not modify */" > $config_h
1315
1316
1317 echo "include ../config-host.mak" >> $config_mak
1318 echo "#include \"../config-host.h\"" >> $config_h
1319
1320 bflt="no"
1321 elfload32="no"
1322 target_nptl="no"
1323 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1324 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1325
1326 case "$target_cpu" in
1327 i386)
1328 echo "TARGET_ARCH=i386" >> $config_mak
1329 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1330 echo "#define TARGET_I386 1" >> $config_h
1331 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1332 then
1333 echo "#define USE_KQEMU 1" >> $config_h
1334 fi
1335 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1336 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1337 then
1338 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1339 else
1340 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1341 fi
1342 ;;
1343 x86_64)
1344 echo "TARGET_ARCH=x86_64" >> $config_mak
1345 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1346 echo "#define TARGET_I386 1" >> $config_h
1347 echo "#define TARGET_X86_64 1" >> $config_h
1348 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1349 then
1350 echo "#define USE_KQEMU 1" >> $config_h
1351 fi
1352 ;;
1353 alpha)
1354 echo "TARGET_ARCH=alpha" >> $config_mak
1355 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1356 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1357 echo "#define TARGET_ALPHA 1" >> $config_h
1358 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1359 ;;
1360 arm|armeb)
1361 echo "TARGET_ARCH=arm" >> $config_mak
1362 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1363 echo "#define TARGET_ARM 1" >> $config_h
1364 bflt="yes"
1365 target_nptl="yes"
1366 ;;
1367 cris)
1368 echo "TARGET_ARCH=cris" >> $config_mak
1369 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1370 echo "#define TARGET_CRIS 1" >> $config_h
1371 ;;
1372 m68k)
1373 echo "TARGET_ARCH=m68k" >> $config_mak
1374 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1375 echo "#define TARGET_M68K 1" >> $config_h
1376 bflt="yes"
1377 ;;
1378 mips|mipsel)
1379 echo "TARGET_ARCH=mips" >> $config_mak
1380 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1381 echo "#define TARGET_MIPS 1" >> $config_h
1382 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1383 ;;
1384 mipsn32|mipsn32el)
1385 echo "TARGET_ARCH=mipsn32" >> $config_mak
1386 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1387 echo "#define TARGET_MIPS 1" >> $config_h
1388 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1389 ;;
1390 mips64|mips64el)
1391 echo "TARGET_ARCH=mips64" >> $config_mak
1392 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1393 echo "#define TARGET_MIPS 1" >> $config_h
1394 echo "#define TARGET_MIPS64 1" >> $config_h
1395 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1396 ;;
1397 ppc)
1398 echo "TARGET_ARCH=ppc" >> $config_mak
1399 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1400 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1401 echo "#define TARGET_PPC 1" >> $config_h
1402 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1403 ;;
1404 ppcemb)
1405 echo "TARGET_ARCH=ppcemb" >> $config_mak
1406 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1407 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1408 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1409 echo "#define TARGET_PPC 1" >> $config_h
1410 echo "#define TARGET_PPCEMB 1" >> $config_h
1411 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1412 ;;
1413 ppc64)
1414 echo "TARGET_ARCH=ppc64" >> $config_mak
1415 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1416 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1417 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1418 echo "#define TARGET_PPC 1" >> $config_h
1419 echo "#define TARGET_PPC64 1" >> $config_h
1420 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1421 ;;
1422 ppc64abi32)
1423 echo "TARGET_ARCH=ppc64" >> $config_mak
1424 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1425 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1426 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1427 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1428 echo "#define TARGET_PPC 1" >> $config_h
1429 echo "#define TARGET_PPC64 1" >> $config_h
1430 echo "#define TARGET_ABI32 1" >> $config_h
1431 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1432 ;;
1433 sh4|sh4eb)
1434 echo "TARGET_ARCH=sh4" >> $config_mak
1435 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1436 echo "#define TARGET_SH4 1" >> $config_h
1437 bflt="yes"
1438 ;;
1439 sparc)
1440 echo "TARGET_ARCH=sparc" >> $config_mak
1441 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1442 echo "#define TARGET_SPARC 1" >> $config_h
1443 ;;
1444 sparc64)
1445 echo "TARGET_ARCH=sparc64" >> $config_mak
1446 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1447 echo "#define TARGET_SPARC 1" >> $config_h
1448 echo "#define TARGET_SPARC64 1" >> $config_h
1449 elfload32="yes"
1450 ;;
1451 sparc32plus)
1452 echo "TARGET_ARCH=sparc64" >> $config_mak
1453 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1454 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1455 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1456 echo "#define TARGET_SPARC 1" >> $config_h
1457 echo "#define TARGET_SPARC64 1" >> $config_h
1458 echo "#define TARGET_ABI32 1" >> $config_h
1459 ;;
1460 *)
1461 echo "Unsupported target CPU"
1462 exit 1
1463 ;;
1464 esac
1465 if test "$target_bigendian" = "yes" ; then
1466 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1467 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1468 fi
1469 if test "$target_softmmu" = "yes" ; then
1470 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1471 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1472 fi
1473 if test "$target_user_only" = "yes" ; then
1474 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1475 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1476 fi
1477 if test "$target_linux_user" = "yes" ; then
1478 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1479 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1480 fi
1481 if test "$target_darwin_user" = "yes" ; then
1482 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1483 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1484 fi
1485
1486 if test "$target_cpu" = "arm" \
1487 -o "$target_cpu" = "armeb" \
1488 -o "$target_cpu" = "m68k" \
1489 -o "$target_cpu" = "mips" \
1490 -o "$target_cpu" = "mipsel" \
1491 -o "$target_cpu" = "mipsn32" \
1492 -o "$target_cpu" = "mipsn32el" \
1493 -o "$target_cpu" = "mips64" \
1494 -o "$target_cpu" = "mips64el" \
1495 -o "$target_cpu" = "sparc" \
1496 -o "$target_cpu" = "sparc64" \
1497 -o "$target_cpu" = "sparc32plus"; then
1498 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1499 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1500 fi
1501 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1502 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1503 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1504 fi
1505 if test "$target_user_only" = "yes" \
1506 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1507 echo "#define USE_NPTL 1" >> $config_h
1508 fi
1509 # 32 bit ELF loader in addition to native 64 bit loader?
1510 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1511 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1512 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1513 fi
1514
1515 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1516
1517 done # for target in $targets
1518
1519 # build tree in object directory if source path is different from current one
1520 if test "$source_path_used" = "yes" ; then
1521 DIRS="tests tests/cris slirp audio"
1522 FILES="Makefile tests/Makefile"
1523 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1524 FILES="$FILES tests/test-mmap.c"
1525 for dir in $DIRS ; do
1526 mkdir -p $dir
1527 done
1528 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1529 for f in $FILES ; do
1530 rm -f $f
1531 ln -s $source_path/$f $f
1532 done
1533 fi
1534
1535 rm -f $TMPO $TMPC $TMPE $TMPS