3 # qemu configure script (c) 2003 Fabrice Bellard
5 # set temporary file name
6 if test ! -z "$TMPDIR" ; then
8 elif test ! -z "$TEMPDIR" ; then
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"
21 interp_prefix="/usr/gnemul/qemu-%M"
26 gcc3_list="gcc-3.4.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
35 i386|i486|i586|i686|i86pc|BePC)
47 "Power Macintosh"|ppc|ppc64)
114 OS_CFLAGS="-mno-cygwin"
115 VL_OS_LDFLAGS="-mno-cygwin"
116 if [ "$cpu" = "i386" ] ; then
122 if [ "$cpu" = "i386" ] ; then
128 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
135 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
153 OS_CFLAGS="-mdynamic-no-pic"
159 needs_libsunmath="no"
160 solarisrev=`uname -r | cut -f2 -d.`
161 # have to select again, because `uname -m` returns i86pc
162 # even on an x86_64 box.
163 solariscpu=`isainfo -k`
164 if test "${solariscpu}" = "amd64" ; then
167 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
168 if test "$solarisrev" -le 9 ; then
169 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
170 needs_libsunmath="yes"
172 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
173 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
174 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
175 echo "Studio 11 can be downloaded from www.sun.com."
179 if test "$solarisrev" -ge 9 ; then
183 if test -f /usr/include/sys/soundcard.h ; then
191 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
197 if [ "$bsd" = "yes" ] ; then
198 if [ "$darwin" != "yes" ] ; then
204 source_path=`dirname "$0"`
205 if [ -z "$source_path" ]; then
208 source_path=`cd "$source_path"; pwd`
210 if test "$source_path" = `pwd` ; then
211 source_path_used="no"
213 source_path_used="yes"
216 # generate compile errors on warnings for development builds
217 if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
224 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
226 --help|-h) show_help=yes
228 --prefix=*) prefix="$optarg"
230 --interp-prefix=*) interp_prefix="$optarg"
232 --source-path=*) source_path="$optarg"
233 source_path_used="yes"
235 --cross-prefix=*) cross_prefix="$optarg"
240 --host-cc=*) host_cc="$optarg"
242 --make=*) make="$optarg"
244 --install=*) install="$optarg"
246 --extra-cflags=*) CFLAGS="$optarg"
248 --extra-ldflags=*) LDFLAGS="$optarg"
250 --cpu=*) cpu="$optarg"
252 --target-list=*) target_list="$optarg"
254 --enable-gprof) gprof="yes"
256 --static) static="yes"
258 --disable-sdl) sdl="no"
260 --enable-coreaudio) coreaudio="yes"
262 --enable-alsa) alsa="yes"
264 --enable-dsound) dsound="yes"
266 --enable-fmod) fmod="yes"
268 --fmod-lib=*) fmod_lib="$optarg"
270 --fmod-inc=*) fmod_inc="$optarg"
272 --disable-vnc-tls) vnc_tls="no"
274 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
276 --disable-slirp) slirp="no"
278 --enable-adlib) adlib="yes"
280 --disable-kqemu) kqemu="no"
282 --enable-profiler) profiler="yes"
284 --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
286 --disable-gfx-check) check_gfx="no"
288 --disable-gcc-check) check_gcc="no"
290 --disable-system) softmmu="no"
292 --enable-system) softmmu="yes"
294 --disable-linux-user) linux_user="no"
296 --enable-linux-user) linux_user="yes"
298 --disable-darwin-user) darwin_user="no"
300 --enable-darwin-user) darwin_user="yes"
302 --enable-uname-release=*) uname_release="$optarg"
307 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
308 target_cpu="sparc"; cpu="sparc" ;;
309 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
310 target_cpu="sparc"; cpu="sparc" ;;
311 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
312 target_cpu="sparc64"; cpu="sparc64" ;;
313 *) echo "undefined SPARC architecture. Exiting";exit 1;;
316 --enable-werror) werror="yes"
318 --disable-werror) werror="no"
323 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
326 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
327 AIOLIBS="-lrt -lpthread"
330 # default flags for all hosts
331 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
332 LDFLAGS="$LDFLAGS -g"
333 if test "$werror" = "yes" ; then
334 CFLAGS="$CFLAGS -Werror"
338 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
339 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
342 sparc) if test -z "$sparc_cpu" ; then
343 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
346 ARCH_CFLAGS="${SP_CFLAGS}"
347 ARCH_LDFLAGS="${SP_LDFLAGS}"
350 sparc64) if test -z "$sparc_cpu" ; then
351 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
354 ARCH_CFLAGS="${SP_CFLAGS}"
355 ARCH_LDFLAGS="${SP_LDFLAGS}"
360 if [ "$solaris" = "yes" -a "$cpu" = "x86_64" ] ; then
361 CFLAGS="${CFLAGS} -m64"
362 OS_CFLAGS="${OS_CFLAGS} -m64"
365 if [ "$solaris" = "yes" -a "$cpu" = "i386" ] ; then
366 CFLAGS="${CFLAGS} -m32"
367 OS_CFLAGS="${OS_CFLAGS} -m32"
370 if test x"$show_help" = x"yes" ; then
373 Usage: configure [options]
374 Options: [defaults in brackets after descriptions]
377 echo "Standard options:"
378 echo " --help print this message"
379 echo " --prefix=PREFIX install in PREFIX [$prefix]"
380 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
381 echo " use %M for cpu name [$interp_prefix]"
382 echo " --target-list=LIST set target list [$target_list]"
384 echo "kqemu kernel acceleration support:"
385 echo " --disable-kqemu disable kqemu support"
387 echo "Advanced options (experts only):"
388 echo " --source-path=PATH path of source code [$source_path]"
389 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
390 echo " --cc=CC use C compiler CC [$cc]"
391 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
392 echo " --make=MAKE use specified make [$make]"
393 echo " --install=INSTALL use specified install [$install]"
394 echo " --static enable static build [$static]"
395 echo " --disable-werror disable compilation abort on warning"
396 echo " --disable-sdl disable SDL"
397 echo " --enable-cocoa enable COCOA (Mac OS X only)"
398 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
399 echo " --enable-adlib enable Adlib emulation"
400 echo " --enable-coreaudio enable Coreaudio audio driver"
401 echo " --enable-alsa enable ALSA audio driver"
402 echo " --enable-fmod enable FMOD audio driver"
403 echo " --enable-dsound enable DirectSound audio driver"
404 echo " --disable-vnc-tls disable TLS encryption for VNC server"
405 echo " --enable-system enable all system emulation targets"
406 echo " --disable-system disable all system emulation targets"
407 echo " --enable-linux-user enable all linux usermode emulation targets"
408 echo " --disable-linux-user disable all linux usermode emulation targets"
409 echo " --enable-darwin-user enable all darwin usermode emulation targets"
410 echo " --disable-darwin-user disable all darwin usermode emulation targets"
411 echo " --fmod-lib path to FMOD library"
412 echo " --fmod-inc path to FMOD includes"
413 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
414 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
416 echo "NOTE: The object files are built at the place where configure is launched"
420 cc="${cross_prefix}${cc}"
421 ar="${cross_prefix}${ar}"
422 strip="${cross_prefix}${strip}"
424 # check that the C compiler works.
429 if $cc -c -o $TMPO $TMPC 2> /dev/null ; then
430 : C compiler works ok
432 echo "ERROR: \"$cc\" either does not exist or does not work"
436 if test "$mingw32" = "yes" ; then
442 # Check for gcc4, error if pre-gcc4
443 if test "$check_gcc" = "yes" ; then
448 int main(){return 0;}
450 if "$cc" -o $TMPE $TMPC 2> /dev/null ; then
451 echo "WARNING: \"$cc\" looks like gcc 4.x"
453 if test "$gcc3_search" = "yes" ; then
454 echo "Looking for gcc 3.x"
455 for compat_cc in $gcc3_list ; do
456 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
457 echo "Found \"$compat_cc\""
458 cc="$cross_prefix$compat_cc"
459 found_compat_cc="yes"
463 if test "$found_compat_cc" = "no" ; then
464 echo "gcc 3.x not found!"
467 if test "$found_compat_cc" = "no" ; then
468 echo "QEMU is known to have problems when compiled with gcc 4.x"
469 echo "It is recommended that you use gcc 3.x to build QEMU"
470 echo "To use this compiler anyway, configure with --disable-gcc-check"
477 # Solaris specific configure tool chain decisions
479 if test "$solaris" = "yes" ; then
481 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
482 # override the check with --disable-gcc-check
484 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
486 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
487 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
488 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
489 echo "or get the latest patch from SunSolve for gcc"
493 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
494 if test -z "$solinst" ; then
495 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
496 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
497 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
500 if test "$solinst" = "/usr/sbin/install" ; then
501 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
502 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
503 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
506 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
507 if test -z "$sol_ar" ; then
508 echo "Error: No path includes ar"
509 if test -f /usr/ccs/bin/ar ; then
510 echo "Add /usr/ccs/bin to your path and rerun configure"
517 if test -z "$target_list" ; then
518 # these targets are portable
519 if [ "$softmmu" = "yes" ] ; then
520 target_list="i386-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc-softmmu ppcemb-softmmu ppc64-softmmu m68k-softmmu sh4-softmmu cris-softmmu"
522 # the following are Linux specific
523 if [ "$linux_user" = "yes" ] ; then
524 target_list="i386-linux-user arm-linux-user armeb-linux-user sparc-linux-user sparc64-linux-user sparc32plus-linux-user mips-linux-user mipsel-linux-user m68k-linux-user alpha-linux-user sh4-linux-user ppc-linux-user ppcemb-linux-user ppc64-linux-user ppc64abi32-linux-user x86_64-linux-user cris-linux-user $target_list"
526 # the following are Darwin specific
527 if [ "$darwin_user" = "yes" ] ; then
528 target_list="i386-darwin-user ppc-darwin-user $target_list"
531 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
533 if test -z "$target_list" ; then
534 echo "No targets enabled"
538 if test -z "$cross_prefix" ; then
541 # big/little endian test
543 #include <inttypes.h>
544 int main(int argc, char ** argv){
545 volatile uint32_t i=0x01234567;
546 return (*((uint8_t*)(&i))) == 0x67;
550 if $cc -o $TMPE $TMPC 2> /dev/null ; then
551 $TMPE && bigendian="yes"
553 echo big/little test failed
558 # if cross compiling, cannot launch a program, so make a static guess
559 if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "mips64" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
565 # host long bits test
567 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
571 # check gcc options support
577 ##########################################
582 if test -z "$sdl" ; then
583 sdl_config="sdl-config"
587 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
588 # win32 cross compilation case
589 sdl_config="i386-mingw32msvc-sdl-config"
595 #undef main /* We don't want SDL to override our main() */
596 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
598 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
599 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
600 if test "$_sdlversion" -lt 121 ; then
603 if test "$cocoa" = "no" ; then
608 # static link with sdl ?
609 if test "$sdl" = "yes" ; then
611 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
612 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
613 if [ "$aa" = "yes" ] ; then
614 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
617 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
621 fi # sdl compile test
622 fi # cross compilation
624 # Make sure to disable cocoa if sdl was set
625 if test "$sdl" = "yes" ; then
631 ##########################################
633 if test "$vnc_tls" = "yes" ; then
634 `pkg-config gnutls` || vnc_tls="no"
636 if test "$vnc_tls" = "yes" ; then
637 vnc_tls_cflags=`pkg-config --cflags gnutls`
638 vnc_tls_libs=`pkg-config --libs gnutls`
641 ##########################################
642 # alsa sound support libraries
644 if test "$alsa" = "yes" ; then
646 #include <alsa/asoundlib.h>
647 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
649 if $cc -o $TMPE $TMPC -lasound 2> /dev/null ; then
653 echo "Error: Could not find alsa"
654 echo "Make sure to have the alsa libs and headers installed."
660 # Check if tools are available to build documentation.
661 if [ -x "`which texi2html 2>/dev/null`" ] && \
662 [ -x "`which pod2man 2>/dev/null`" ]; then
666 if test "$mingw32" = "yes" ; then
667 if test -z "$prefix" ; then
668 prefix="/c/Program Files/Qemu"
675 if test -z "$prefix" ; then
678 mansuffix="/share/man"
679 datasuffix="/share/qemu"
680 docsuffix="/share/doc/qemu"
684 echo "Install prefix $prefix"
685 echo "BIOS directory $prefix$datasuffix"
686 echo "binary directory $prefix$binsuffix"
687 if test "$mingw32" = "no" ; then
688 echo "Manual directory $prefix$mansuffix"
689 echo "ELF interp prefix $interp_prefix"
691 echo "Source path $source_path"
692 echo "C compiler $cc"
693 echo "Host C compiler $host_cc"
695 echo "install $install"
697 echo "host big endian $bigendian"
698 echo "target list $target_list"
699 echo "gprof enabled $gprof"
700 echo "profiler $profiler"
701 echo "static build $static"
702 echo "-Werror enabled $werror"
703 if test "$darwin" = "yes" ; then
704 echo "Cocoa support $cocoa"
706 echo "SDL support $sdl"
707 if test "$sdl" != "no" ; then
708 echo "SDL static link $sdl_static"
710 echo "mingw32 support $mingw32"
711 echo "Adlib support $adlib"
712 echo "CoreAudio support $coreaudio"
713 echo "ALSA support $alsa"
714 echo "DSound support $dsound"
715 if test "$fmod" = "yes"; then
716 if test -z $fmod_lib || test -z $fmod_inc; then
718 echo "Error: You must specify path to FMOD library and headers"
719 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
723 fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
727 echo "FMOD support $fmod $fmod_support"
728 echo "OSS support $oss"
729 echo "VNC TLS support $vnc_tls"
730 if test "$vnc_tls" = "yes" ; then
731 echo " TLS CFLAGS $vnc_tls_cflags"
732 echo " TLS LIBS $vnc_tls_libs"
734 if test -n "$sparc_cpu"; then
735 echo "Target Sparc Arch $sparc_cpu"
737 echo "kqemu support $kqemu"
738 echo "Documentation $build_docs"
739 [ ! -z "$uname_release" ] && \
740 echo "uname -r $uname_release"
742 if test $sdl_too_old = "yes"; then
743 echo "-> Your SDL version is too old - please upgrade to have SDL support"
745 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
746 echo "The error log from compiling the libSDL test is: "
747 cat /tmp/qemu-$$-sdl-config.log
749 rm -f /tmp/qemu-$$-sdl-config.log
750 #if test "$sdl_static" = "no"; then
751 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
753 config_mak="config-host.mak"
754 config_h="config-host.h"
756 #echo "Creating $config_mak and $config_h"
758 test -f $config_h && mv $config_h ${config_h}~
760 echo "# Automatically generated by configure - do not modify" > $config_mak
761 echo "# Configured with: $0 $@" >> $config_mak
762 echo "/* Automatically generated by configure - do not modify */" > $config_h
764 echo "prefix=$prefix" >> $config_mak
765 echo "bindir=\${prefix}$binsuffix" >> $config_mak
766 echo "mandir=\${prefix}$mansuffix" >> $config_mak
767 echo "datadir=\${prefix}$datasuffix" >> $config_mak
768 echo "docdir=\${prefix}$docsuffix" >> $config_mak
769 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
770 echo "MAKE=$make" >> $config_mak
771 echo "INSTALL=$install" >> $config_mak
772 echo "CC=$cc" >> $config_mak
773 echo "HOST_CC=$host_cc" >> $config_mak
774 echo "AR=$ar" >> $config_mak
775 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
776 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
777 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
778 echo "VL_OS_LDFLAGS=$VL_OS_LDFLAGS" >> $config_mak
779 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
780 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
781 echo "CFLAGS=$CFLAGS" >> $config_mak
782 echo "LDFLAGS=$LDFLAGS" >> $config_mak
783 echo "EXESUF=$EXESUF" >> $config_mak
784 echo "AIOLIBS=$AIOLIBS" >> $config_mak
785 if test "$cpu" = "i386" ; then
786 echo "ARCH=i386" >> $config_mak
787 echo "#define HOST_I386 1" >> $config_h
788 elif test "$cpu" = "x86_64" ; then
789 echo "ARCH=x86_64" >> $config_mak
790 echo "#define HOST_X86_64 1" >> $config_h
791 elif test "$cpu" = "armv4b" ; then
792 echo "ARCH=arm" >> $config_mak
793 echo "#define HOST_ARM 1" >> $config_h
794 elif test "$cpu" = "armv4l" ; then
795 echo "ARCH=arm" >> $config_mak
796 echo "#define HOST_ARM 1" >> $config_h
797 elif test "$cpu" = "powerpc" ; then
798 echo "ARCH=ppc" >> $config_mak
799 echo "#define HOST_PPC 1" >> $config_h
800 elif test "$cpu" = "mips" ; then
801 echo "ARCH=mips" >> $config_mak
802 echo "#define HOST_MIPS 1" >> $config_h
803 elif test "$cpu" = "mips64" ; then
804 echo "ARCH=mips64" >> $config_mak
805 echo "#define HOST_MIPS64 1" >> $config_h
806 elif test "$cpu" = "cris" ; then
807 echo "ARCH=cris" >> $config_mak
808 echo "#define HOST_CRIS 1" >> $config_h
809 elif test "$cpu" = "s390" ; then
810 echo "ARCH=s390" >> $config_mak
811 echo "#define HOST_S390 1" >> $config_h
812 elif test "$cpu" = "alpha" ; then
813 echo "ARCH=alpha" >> $config_mak
814 echo "#define HOST_ALPHA 1" >> $config_h
815 elif test "$cpu" = "sparc" ; then
816 echo "ARCH=sparc" >> $config_mak
817 echo "#define HOST_SPARC 1" >> $config_h
818 elif test "$cpu" = "sparc64" ; then
819 echo "ARCH=sparc64" >> $config_mak
820 echo "#define HOST_SPARC64 1" >> $config_h
821 elif test "$cpu" = "ia64" ; then
822 echo "ARCH=ia64" >> $config_mak
823 echo "#define HOST_IA64 1" >> $config_h
824 elif test "$cpu" = "m68k" ; then
825 echo "ARCH=m68k" >> $config_mak
826 echo "#define HOST_M68K 1" >> $config_h
828 echo "Unsupported CPU = $cpu"
831 if test "$bigendian" = "yes" ; then
832 echo "WORDS_BIGENDIAN=yes" >> $config_mak
833 echo "#define WORDS_BIGENDIAN 1" >> $config_h
835 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
836 if test "$mingw32" = "yes" ; then
837 echo "CONFIG_WIN32=yes" >> $config_mak
838 echo "#define CONFIG_WIN32 1" >> $config_h
841 #include <byteswap.h>
842 int main(void) { return bswap_32(0); }
844 if $cc -o $TMPE $TMPC 2> /dev/null ; then
845 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
848 if test "$darwin" = "yes" ; then
849 echo "CONFIG_DARWIN=yes" >> $config_mak
850 echo "#define CONFIG_DARWIN 1" >> $config_h
852 if test "$solaris" = "yes" ; then
853 echo "CONFIG_SOLARIS=yes" >> $config_mak
854 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
855 if test "$needs_libsunmath" = "yes" ; then
856 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
857 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
860 if test -n "$sparc_cpu"; then
861 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
862 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
864 if test "$gdbstub" = "yes" ; then
865 echo "CONFIG_GDBSTUB=yes" >> $config_mak
866 echo "#define CONFIG_GDBSTUB 1" >> $config_h
868 if test "$gprof" = "yes" ; then
869 echo "TARGET_GPROF=yes" >> $config_mak
870 echo "#define HAVE_GPROF 1" >> $config_h
872 if test "$static" = "yes" ; then
873 echo "CONFIG_STATIC=yes" >> $config_mak
874 echo "#define CONFIG_STATIC 1" >> $config_h
876 if test $profiler = "yes" ; then
877 echo "#define CONFIG_PROFILER 1" >> $config_h
879 if test "$slirp" = "yes" ; then
880 echo "CONFIG_SLIRP=yes" >> $config_mak
881 echo "#define CONFIG_SLIRP 1" >> $config_h
883 if test "$adlib" = "yes" ; then
884 echo "CONFIG_ADLIB=yes" >> $config_mak
885 echo "#define CONFIG_ADLIB 1" >> $config_h
887 if test "$oss" = "yes" ; then
888 echo "CONFIG_OSS=yes" >> $config_mak
889 echo "#define CONFIG_OSS 1" >> $config_h
891 if test "$coreaudio" = "yes" ; then
892 echo "CONFIG_COREAUDIO=yes" >> $config_mak
893 echo "#define CONFIG_COREAUDIO 1" >> $config_h
895 if test "$alsa" = "yes" ; then
896 echo "CONFIG_ALSA=yes" >> $config_mak
897 echo "#define CONFIG_ALSA 1" >> $config_h
899 if test "$dsound" = "yes" ; then
900 echo "CONFIG_DSOUND=yes" >> $config_mak
901 echo "#define CONFIG_DSOUND 1" >> $config_h
903 if test "$fmod" = "yes" ; then
904 echo "CONFIG_FMOD=yes" >> $config_mak
905 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
906 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
907 echo "#define CONFIG_FMOD 1" >> $config_h
909 if test "$vnc_tls" = "yes" ; then
910 echo "CONFIG_VNC_TLS=yes" >> $config_mak
911 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
912 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
913 echo "#define CONFIG_VNC_TLS 1" >> $config_h
915 qemu_version=`head $source_path/VERSION`
916 echo "VERSION=$qemu_version" >>$config_mak
917 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
919 echo "SRC_PATH=$source_path" >> $config_mak
920 if [ "$source_path_used" = "yes" ]; then
921 echo "VPATH=$source_path" >> $config_mak
923 echo "TARGET_DIRS=$target_list" >> $config_mak
924 if [ "$build_docs" = "yes" ] ; then
925 echo "BUILD_DOCS=yes" >> $config_mak
927 if test "$static" = "yes"; then
932 if test "$sdl1" = "yes" ; then
933 echo "#define CONFIG_SDL 1" >> $config_h
934 echo "CONFIG_SDL=yes" >> $config_mak
935 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
936 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
938 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
940 if [ "${aa}" = "yes" ] ; then
941 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
943 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
946 if test "$cocoa" = "yes" ; then
947 echo "#define CONFIG_COCOA 1" >> $config_h
948 echo "CONFIG_COCOA=yes" >> $config_mak
952 if [ "$bsd" = "yes" ] ; then
953 echo "#define O_LARGEFILE 0" >> $config_h
954 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
955 echo "#define _BSD 1" >> $config_h
958 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
961 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
962 tools="qemu-img\$(EXESUF) $tools"
964 echo "TOOLS=$tools" >> $config_mak
966 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
968 for target in $target_list; do
970 config_mak=$target_dir/config.mak
971 config_h=$target_dir/config.h
972 target_cpu=`echo $target | cut -d '-' -f 1`
973 target_bigendian="no"
974 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
975 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
976 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
977 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
978 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
979 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
980 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
981 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
982 [ "$target_cpu" = "ppc64h" ] && target_bigendian=yes
983 [ "$target_cpu" = "mips" ] && target_bigendian=yes
984 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
985 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
986 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
987 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
989 target_user_only="no"
990 target_linux_user="no"
991 target_darwin_user="no"
993 ${target_cpu}-softmmu)
996 ${target_cpu}-linux-user)
997 target_user_only="yes"
998 target_linux_user="yes"
1000 ${target_cpu}-darwin-user)
1001 target_user_only="yes"
1002 target_darwin_user="yes"
1005 echo "ERROR: Target '$target' not recognised"
1010 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1011 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1012 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1013 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1014 echo "Note that this will disable all output from the virtual graphics card."
1018 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1020 test -f $config_h && mv $config_h ${config_h}~
1022 mkdir -p $target_dir
1023 mkdir -p $target_dir/fpu
1024 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1025 mkdir -p $target_dir/nwfpe
1029 # don't use ln -sf as not all "ln -sf" over write the file/link
1031 rm -f $target_dir/Makefile
1032 ln -s $source_path/Makefile.target $target_dir/Makefile
1035 echo "# Automatically generated by configure - do not modify" > $config_mak
1036 echo "/* Automatically generated by configure - do not modify */" > $config_h
1039 echo "include ../config-host.mak" >> $config_mak
1040 echo "#include \"../config-host.h\"" >> $config_h
1044 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1045 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1047 if test "$target_cpu" = "i386" ; then
1048 echo "TARGET_ARCH=i386" >> $config_mak
1049 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1050 echo "#define TARGET_I386 1" >> $config_h
1051 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
1052 echo "#define USE_KQEMU 1" >> $config_h
1054 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
1055 echo "TARGET_ARCH=arm" >> $config_mak
1056 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1057 echo "#define TARGET_ARM 1" >> $config_h
1059 elif test "$target_cpu" = "sparc" ; then
1060 echo "TARGET_ARCH=sparc" >> $config_mak
1061 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1062 echo "#define TARGET_SPARC 1" >> $config_h
1063 elif test "$target_cpu" = "sparc64" ; then
1064 echo "TARGET_ARCH=sparc64" >> $config_mak
1065 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1066 echo "#define TARGET_SPARC 1" >> $config_h
1067 echo "#define TARGET_SPARC64 1" >> $config_h
1069 elif test "$target_cpu" = "sparc32plus" ; then
1070 echo "TARGET_ARCH=sparc64" >> $config_mak
1071 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1072 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1073 echo "#define TARGET_SPARC 1" >> $config_h
1074 echo "#define TARGET_SPARC64 1" >> $config_h
1075 echo "#define TARGET_ABI32 1" >> $config_h
1076 elif test "$target_cpu" = "ppc" ; then
1077 echo "TARGET_ARCH=ppc" >> $config_mak
1078 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1079 echo "#define TARGET_PPC 1" >> $config_h
1080 elif test "$target_cpu" = "ppcemb" ; then
1081 echo "TARGET_ARCH=ppcemb" >> $config_mak
1082 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1083 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1084 echo "#define TARGET_PPC 1" >> $config_h
1085 echo "#define TARGET_PPCEMB 1" >> $config_h
1086 elif test "$target_cpu" = "ppc64" ; then
1087 echo "TARGET_ARCH=ppc64" >> $config_mak
1088 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1089 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1090 echo "#define TARGET_PPC 1" >> $config_h
1091 echo "#define TARGET_PPC64 1" >> $config_h
1092 elif test "$target_cpu" = "ppc64abi32" ; then
1093 echo "TARGET_ARCH=ppc64" >> $config_mak
1094 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1095 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1096 echo "#define TARGET_PPC 1" >> $config_h
1097 echo "#define TARGET_PPC64 1" >> $config_h
1098 echo "#define TARGET_ABI32 1" >> $config_h
1099 elif test "$target_cpu" = "ppc64h" ; then
1100 echo "TARGET_ARCH=ppc64h" >> $config_mak
1101 echo "#define TARGET_ARCH \"ppc64h\"" >> $config_h
1102 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1103 echo "#define TARGET_PPC 1" >> $config_h
1104 echo "#define TARGET_PPC64 1" >> $config_h
1105 echo "#define TARGET_PPC64H 1" >> $config_h
1106 elif test "$target_cpu" = "x86_64" ; then
1107 echo "TARGET_ARCH=x86_64" >> $config_mak
1108 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1109 echo "#define TARGET_I386 1" >> $config_h
1110 echo "#define TARGET_X86_64 1" >> $config_h
1111 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
1112 echo "#define USE_KQEMU 1" >> $config_h
1114 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
1115 echo "TARGET_ARCH=mips" >> $config_mak
1116 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1117 echo "#define TARGET_MIPS 1" >> $config_h
1118 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1119 elif test "$target_cpu" = "mipsn32" -o "$target_cpu" = "mipsn32el" ; then
1120 echo "TARGET_ARCH=mipsn32" >> $config_mak
1121 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1122 echo "#define TARGET_MIPS 1" >> $config_h
1123 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1124 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
1125 echo "TARGET_ARCH=mips64" >> $config_mak
1126 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1127 echo "#define TARGET_MIPS 1" >> $config_h
1128 echo "#define TARGET_MIPS64 1" >> $config_h
1129 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1130 elif test "$target_cpu" = "cris" ; then
1131 echo "TARGET_ARCH=cris" >> $config_mak
1132 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1133 echo "#define TARGET_CRIS 1" >> $config_h
1134 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1135 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1136 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1137 echo "TARGET_ARCH=sh4" >> $config_mak
1138 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1139 echo "#define TARGET_SH4 1" >> $config_h
1141 elif test "$target_cpu" = "m68k" ; then
1142 echo "TARGET_ARCH=m68k" >> $config_mak
1143 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1144 echo "#define TARGET_M68K 1" >> $config_h
1146 elif test "$target_cpu" = "alpha" ; then
1147 echo "TARGET_ARCH=alpha" >> $config_mak
1148 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1149 echo "#define TARGET_ALPHA 1" >> $config_h
1151 echo "Unsupported target CPU"
1154 if test "$target_bigendian" = "yes" ; then
1155 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1156 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1158 if test "$target_softmmu" = "yes" ; then
1159 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1160 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1162 if test "$target_user_only" = "yes" ; then
1163 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1164 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1166 if test "$target_linux_user" = "yes" ; then
1167 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1168 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1170 if test "$target_darwin_user" = "yes" ; then
1171 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1172 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1175 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "sparc32plus" -o "$target_cpu" = "m68k" -o "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" -o "$target_cpu" = "mipsn32" -o "$target_cpu" = "mipsn32el" -o "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el"; then
1176 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1177 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1179 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1180 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1181 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1183 # 32 bit ELF loader in addition to native 64 bit loader?
1184 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1185 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1186 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1189 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1191 done # for target in $targets
1193 # build tree in object directory if source path is different from current one
1194 if test "$source_path_used" = "yes" ; then
1195 DIRS="tests tests/cris slirp audio"
1196 FILES="Makefile tests/Makefile"
1197 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1198 for dir in $DIRS ; do
1201 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1202 for f in $FILES ; do
1204 ln -s $source_path/$f $f
1208 rm -f $TMPO $TMPC $TMPE $TMPS