Move determination of AIOLIBS until after all configure options have been
[qemu] / 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