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