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)
117 OS_CFLAGS="-mno-cygwin"
118 VL_OS_LDFLAGS="-mno-cygwin"
119 if [ "$cpu" = "i386" ] ; then
125 if [ "$cpu" = "i386" ] ; then
131 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
138 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
156 OS_CFLAGS="-mdynamic-no-pic"
157 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
163 needs_libsunmath="no"
164 solarisrev=`uname -r | cut -f2 -d.`
165 # have to select again, because `uname -m` returns i86pc
166 # even on an x86_64 box.
167 solariscpu=`isainfo -k`
168 if test "${solariscpu}" = "amd64" ; then
171 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
172 if test "$solarisrev" -le 9 ; then
173 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
174 needs_libsunmath="yes"
176 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
177 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
178 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
179 echo "Studio 11 can be downloaded from www.sun.com."
183 if test "$solarisrev" -ge 9 ; then
187 if test -f /usr/include/sys/soundcard.h ; then
195 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
201 if [ "$bsd" = "yes" ] ; then
202 if [ "$darwin" != "yes" ] ; then
208 source_path=`dirname "$0"`
209 if [ -z "$source_path" ]; then
212 source_path=`cd "$source_path"; pwd`
214 if test "$source_path" = `pwd` ; then
215 source_path_used="no"
217 source_path_used="yes"
221 # generate compile errors on warnings for development builds
222 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
227 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
229 --help|-h) show_help=yes
231 --prefix=*) prefix="$optarg"
233 --interp-prefix=*) interp_prefix="$optarg"
235 --source-path=*) source_path="$optarg"
236 source_path_used="yes"
238 --cross-prefix=*) cross_prefix="$optarg"
243 --host-cc=*) host_cc="$optarg"
245 --make=*) make="$optarg"
247 --install=*) install="$optarg"
249 --extra-cflags=*) CFLAGS="$optarg"
251 --extra-ldflags=*) LDFLAGS="$optarg"
253 --cpu=*) cpu="$optarg"
255 --target-list=*) target_list="$optarg"
257 --enable-gprof) gprof="yes"
259 --static) static="yes"
261 --disable-sdl) sdl="no"
263 --enable-coreaudio) coreaudio="yes"
265 --enable-alsa) alsa="yes"
267 --enable-esd) esd="yes"
269 --enable-dsound) dsound="yes"
271 --enable-fmod) fmod="yes"
273 --fmod-lib=*) fmod_lib="$optarg"
275 --fmod-inc=*) fmod_inc="$optarg"
277 --disable-vnc-tls) vnc_tls="no"
279 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
281 --disable-slirp) slirp="no"
283 --enable-adlib) adlib="yes"
285 --enable-ac97) ac97="yes"
287 --enable-gus) gus="yes"
289 --disable-kqemu) kqemu="no"
291 --enable-profiler) profiler="yes"
293 --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
295 --disable-gfx-check) check_gfx="no"
297 --disable-gcc-check) check_gcc="no"
299 --disable-system) softmmu="no"
301 --enable-system) softmmu="yes"
303 --disable-linux-user) linux_user="no"
305 --enable-linux-user) linux_user="yes"
307 --disable-darwin-user) darwin_user="no"
309 --enable-darwin-user) darwin_user="yes"
311 --enable-uname-release=*) uname_release="$optarg"
316 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
317 target_cpu="sparc"; cpu="sparc" ;;
318 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
319 target_cpu="sparc"; cpu="sparc" ;;
320 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
321 target_cpu="sparc64"; cpu="sparc64" ;;
322 *) echo "undefined SPARC architecture. Exiting";exit 1;;
325 --enable-werror) werror="yes"
327 --disable-werror) werror="no"
329 *) echo "ERROR: unknown option $opt"; show_help="yes"
334 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
337 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
338 AIOLIBS="-lrt -lpthread"
341 # default flags for all hosts
342 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
343 LDFLAGS="$LDFLAGS -g"
344 if test "$werror" = "yes" ; then
345 CFLAGS="$CFLAGS -Werror"
349 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
350 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
353 sparc) if test -z "$sparc_cpu" ; then
354 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
357 ARCH_CFLAGS="${SP_CFLAGS}"
358 ARCH_LDFLAGS="${SP_LDFLAGS}"
361 sparc64) if test -z "$sparc_cpu" ; then
362 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
365 ARCH_CFLAGS="${SP_CFLAGS}"
366 ARCH_LDFLAGS="${SP_LDFLAGS}"
370 ARCH_CFLAGS="-march=z900"
374 if [ "$solaris" = "yes" -a "$cpu" = "x86_64" ] ; then
375 CFLAGS="${CFLAGS} -m64"
376 OS_CFLAGS="${OS_CFLAGS} -m64"
377 OS_LDFLAGS="${OS_LDFLAGS} -m64"
380 if [ "$solaris" = "yes" -a "$cpu" = "i386" ] ; then
381 CFLAGS="${CFLAGS} -m32"
382 OS_CFLAGS="${OS_CFLAGS} -m32"
385 if test x"$show_help" = x"yes" ; then
388 Usage: configure [options]
389 Options: [defaults in brackets after descriptions]
392 echo "Standard options:"
393 echo " --help print this message"
394 echo " --prefix=PREFIX install in PREFIX [$prefix]"
395 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
396 echo " use %M for cpu name [$interp_prefix]"
397 echo " --target-list=LIST set target list [$target_list]"
399 echo "kqemu kernel acceleration support:"
400 echo " --disable-kqemu disable kqemu support"
402 echo "Advanced options (experts only):"
403 echo " --source-path=PATH path of source code [$source_path]"
404 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
405 echo " --cc=CC use C compiler CC [$cc]"
406 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
407 echo " --make=MAKE use specified make [$make]"
408 echo " --install=INSTALL use specified install [$install]"
409 echo " --static enable static build [$static]"
410 echo " --disable-werror disable compilation abort on warning"
411 echo " --disable-sdl disable SDL"
412 echo " --enable-cocoa enable COCOA (Mac OS X only)"
413 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
414 echo " --enable-adlib enable Adlib emulation"
415 echo " --enable-ac97 enable AC97 emulation"
416 echo " --enable-gus enable Gravis Ultrasound emulation"
417 echo " --enable-coreaudio enable Coreaudio audio driver"
418 echo " --enable-alsa enable ALSA audio driver"
419 echo " --enable-esd enable EsoundD audio driver"
420 echo " --enable-fmod enable FMOD audio driver"
421 echo " --enable-dsound enable DirectSound audio driver"
422 echo " --disable-vnc-tls disable TLS encryption for VNC server"
423 echo " --enable-system enable all system emulation targets"
424 echo " --disable-system disable all system emulation targets"
425 echo " --enable-linux-user enable all linux usermode emulation targets"
426 echo " --disable-linux-user disable all linux usermode emulation targets"
427 echo " --enable-darwin-user enable all darwin usermode emulation targets"
428 echo " --disable-darwin-user disable all darwin usermode emulation targets"
429 echo " --fmod-lib path to FMOD library"
430 echo " --fmod-inc path to FMOD includes"
431 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
432 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
434 echo "NOTE: The object files are built at the place where configure is launched"
438 cc="${cross_prefix}${cc}"
439 ar="${cross_prefix}${ar}"
440 strip="${cross_prefix}${strip}"
442 # check that the C compiler works.
447 if $cc -c -o $TMPO $TMPC 2> /dev/null ; then
448 : C compiler works ok
450 echo "ERROR: \"$cc\" either does not exist or does not work"
454 if test "$mingw32" = "yes" ; then
460 # Check for gcc4, error if pre-gcc4
461 if test "$check_gcc" = "yes" ; then
466 int main(){return 0;}
468 if "$cc" -o $TMPE $TMPC 2> /dev/null ; then
469 echo "WARNING: \"$cc\" looks like gcc 4.x"
471 if test "$gcc3_search" = "yes" ; then
472 echo "Looking for gcc 3.x"
473 for compat_cc in $gcc3_list ; do
474 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
475 echo "Found \"$compat_cc\""
476 cc="$cross_prefix$compat_cc"
477 found_compat_cc="yes"
481 if test "$found_compat_cc" = "no" ; then
482 echo "gcc 3.x not found!"
485 if test "$found_compat_cc" = "no" ; then
486 echo "QEMU is known to have problems when compiled with gcc 4.x"
487 echo "It is recommended that you use gcc 3.x to build QEMU"
488 echo "To use this compiler anyway, configure with --disable-gcc-check"
495 # Solaris specific configure tool chain decisions
497 if test "$solaris" = "yes" ; then
499 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
500 # override the check with --disable-gcc-check
502 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
504 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
505 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
506 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
507 echo "or get the latest patch from SunSolve for gcc"
511 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
512 if test -z "$solinst" ; then
513 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
514 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
515 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
518 if test "$solinst" = "/usr/sbin/install" ; then
519 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
520 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
521 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
524 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
525 if test -z "$sol_ar" ; then
526 echo "Error: No path includes ar"
527 if test -f /usr/ccs/bin/ar ; then
528 echo "Add /usr/ccs/bin to your path and rerun configure"
535 if test -z "$target_list" ; then
536 # these targets are portable
537 if [ "$softmmu" = "yes" ] ; then
538 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 sh4eb-softmmu cris-softmmu"
540 # the following are Linux specific
541 if [ "$linux_user" = "yes" ] ; then
542 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 sh4eb-linux-user ppc-linux-user ppc64-linux-user ppc64abi32-linux-user x86_64-linux-user cris-linux-user $target_list"
544 # the following are Darwin specific
545 if [ "$darwin_user" = "yes" ] ; then
546 target_list="i386-darwin-user ppc-darwin-user $target_list"
549 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
551 if test -z "$target_list" ; then
552 echo "No targets enabled"
556 if test -z "$cross_prefix" ; then
559 # big/little endian test
561 #include <inttypes.h>
562 int main(int argc, char ** argv){
563 volatile uint32_t i=0x01234567;
564 return (*((uint8_t*)(&i))) == 0x67;
568 if $cc -o $TMPE $TMPC 2> /dev/null ; then
569 $TMPE && bigendian="yes"
571 echo big/little test failed
576 # if cross compiling, cannot launch a program, so make a static guess
577 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
583 # host long bits test
585 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
589 # check gcc options support
595 ##########################################
600 if test -z "$sdl" ; then
601 sdl_config="sdl-config"
605 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
606 # win32 cross compilation case
607 sdl_config="i386-mingw32msvc-sdl-config"
613 #undef main /* We don't want SDL to override our main() */
614 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
616 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
617 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
618 if test "$_sdlversion" -lt 121 ; then
621 if test "$cocoa" = "no" ; then
626 # static link with sdl ?
627 if test "$sdl" = "yes" ; then
629 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
630 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
631 if [ "$aa" = "yes" ] ; then
632 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
635 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
639 fi # sdl compile test
640 fi # cross compilation
642 # Make sure to disable cocoa if sdl was set
643 if test "$sdl" = "yes" ; then
649 ##########################################
651 if test "$vnc_tls" = "yes" ; then
652 `pkg-config gnutls` || vnc_tls="no"
654 if test "$vnc_tls" = "yes" ; then
655 vnc_tls_cflags=`pkg-config --cflags gnutls`
656 vnc_tls_libs=`pkg-config --libs gnutls`
659 ##########################################
660 # alsa sound support libraries
662 if test "$alsa" = "yes" ; then
664 #include <alsa/asoundlib.h>
665 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
667 if $cc -o $TMPE $TMPC -lasound 2> /dev/null ; then
671 echo "Error: Could not find alsa"
672 echo "Make sure to have the alsa libs and headers installed."
678 # Check if tools are available to build documentation.
679 if [ -x "`which texi2html 2>/dev/null`" ] && \
680 [ -x "`which pod2man 2>/dev/null`" ]; then
684 if test "$mingw32" = "yes" ; then
685 if test -z "$prefix" ; then
686 prefix="/c/Program Files/Qemu"
693 if test -z "$prefix" ; then
696 mansuffix="/share/man"
697 datasuffix="/share/qemu"
698 docsuffix="/share/doc/qemu"
702 echo "Install prefix $prefix"
703 echo "BIOS directory $prefix$datasuffix"
704 echo "binary directory $prefix$binsuffix"
705 if test "$mingw32" = "no" ; then
706 echo "Manual directory $prefix$mansuffix"
707 echo "ELF interp prefix $interp_prefix"
709 echo "Source path $source_path"
710 echo "C compiler $cc"
711 echo "Host C compiler $host_cc"
713 echo "install $install"
715 echo "host big endian $bigendian"
716 echo "target list $target_list"
717 echo "gprof enabled $gprof"
718 echo "profiler $profiler"
719 echo "static build $static"
720 echo "-Werror enabled $werror"
721 if test "$darwin" = "yes" ; then
722 echo "Cocoa support $cocoa"
724 echo "SDL support $sdl"
725 if test "$sdl" != "no" ; then
726 echo "SDL static link $sdl_static"
728 echo "mingw32 support $mingw32"
729 echo "Adlib support $adlib"
730 echo "AC97 support $ac97"
731 echo "GUS support $gus"
732 echo "CoreAudio support $coreaudio"
733 echo "ALSA support $alsa"
734 echo "EsounD support $esd"
735 echo "DSound support $dsound"
736 if test "$fmod" = "yes"; then
737 if test -z $fmod_lib || test -z $fmod_inc; then
739 echo "Error: You must specify path to FMOD library and headers"
740 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
744 fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
748 echo "FMOD support $fmod $fmod_support"
749 echo "OSS support $oss"
750 echo "VNC TLS support $vnc_tls"
751 if test "$vnc_tls" = "yes" ; then
752 echo " TLS CFLAGS $vnc_tls_cflags"
753 echo " TLS LIBS $vnc_tls_libs"
755 if test -n "$sparc_cpu"; then
756 echo "Target Sparc Arch $sparc_cpu"
758 echo "kqemu support $kqemu"
759 echo "Documentation $build_docs"
760 [ ! -z "$uname_release" ] && \
761 echo "uname -r $uname_release"
763 if test $sdl_too_old = "yes"; then
764 echo "-> Your SDL version is too old - please upgrade to have SDL support"
766 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
767 echo "The error log from compiling the libSDL test is: "
768 cat /tmp/qemu-$$-sdl-config.log
770 rm -f /tmp/qemu-$$-sdl-config.log
771 #if test "$sdl_static" = "no"; then
772 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
774 config_mak="config-host.mak"
775 config_h="config-host.h"
777 #echo "Creating $config_mak and $config_h"
779 test -f $config_h && mv $config_h ${config_h}~
781 echo "# Automatically generated by configure - do not modify" > $config_mak
782 echo "# Configured with: $0 $@" >> $config_mak
783 echo "/* Automatically generated by configure - do not modify */" > $config_h
785 echo "prefix=$prefix" >> $config_mak
786 echo "bindir=\${prefix}$binsuffix" >> $config_mak
787 echo "mandir=\${prefix}$mansuffix" >> $config_mak
788 echo "datadir=\${prefix}$datasuffix" >> $config_mak
789 echo "docdir=\${prefix}$docsuffix" >> $config_mak
790 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
791 echo "MAKE=$make" >> $config_mak
792 echo "INSTALL=$install" >> $config_mak
793 echo "CC=$cc" >> $config_mak
794 echo "HOST_CC=$host_cc" >> $config_mak
795 echo "AR=$ar" >> $config_mak
796 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
797 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
798 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
799 echo "VL_OS_LDFLAGS=$VL_OS_LDFLAGS" >> $config_mak
800 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
801 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
802 echo "CFLAGS=$CFLAGS" >> $config_mak
803 echo "LDFLAGS=$LDFLAGS" >> $config_mak
804 echo "EXESUF=$EXESUF" >> $config_mak
805 echo "AIOLIBS=$AIOLIBS" >> $config_mak
806 if test "$cpu" = "i386" ; then
807 echo "ARCH=i386" >> $config_mak
808 echo "#define HOST_I386 1" >> $config_h
809 elif test "$cpu" = "x86_64" ; then
810 echo "ARCH=x86_64" >> $config_mak
811 echo "#define HOST_X86_64 1" >> $config_h
812 elif test "$cpu" = "armv4b" ; then
813 echo "ARCH=arm" >> $config_mak
814 echo "#define HOST_ARM 1" >> $config_h
815 elif test "$cpu" = "armv4l" ; then
816 echo "ARCH=arm" >> $config_mak
817 echo "#define HOST_ARM 1" >> $config_h
818 elif test "$cpu" = "powerpc" ; then
819 echo "ARCH=ppc" >> $config_mak
820 echo "#define HOST_PPC 1" >> $config_h
821 elif test "$cpu" = "mips" ; then
822 echo "ARCH=mips" >> $config_mak
823 echo "#define HOST_MIPS 1" >> $config_h
824 elif test "$cpu" = "mips64" ; then
825 echo "ARCH=mips64" >> $config_mak
826 echo "#define HOST_MIPS64 1" >> $config_h
827 elif test "$cpu" = "cris" ; then
828 echo "ARCH=cris" >> $config_mak
829 echo "#define HOST_CRIS 1" >> $config_h
830 elif test "$cpu" = "s390" ; then
831 echo "ARCH=s390" >> $config_mak
832 echo "#define HOST_S390 1" >> $config_h
833 elif test "$cpu" = "alpha" ; then
834 echo "ARCH=alpha" >> $config_mak
835 echo "#define HOST_ALPHA 1" >> $config_h
836 elif test "$cpu" = "sparc" ; then
837 echo "ARCH=sparc" >> $config_mak
838 echo "#define HOST_SPARC 1" >> $config_h
839 elif test "$cpu" = "sparc64" ; then
840 echo "ARCH=sparc64" >> $config_mak
841 echo "#define HOST_SPARC64 1" >> $config_h
842 elif test "$cpu" = "ia64" ; then
843 echo "ARCH=ia64" >> $config_mak
844 echo "#define HOST_IA64 1" >> $config_h
845 elif test "$cpu" = "m68k" ; then
846 echo "ARCH=m68k" >> $config_mak
847 echo "#define HOST_M68K 1" >> $config_h
849 echo "Unsupported CPU = $cpu"
852 if test "$bigendian" = "yes" ; then
853 echo "WORDS_BIGENDIAN=yes" >> $config_mak
854 echo "#define WORDS_BIGENDIAN 1" >> $config_h
856 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
857 if test "$mingw32" = "yes" ; then
858 echo "CONFIG_WIN32=yes" >> $config_mak
859 echo "#define CONFIG_WIN32 1" >> $config_h
862 #include <byteswap.h>
863 int main(void) { return bswap_32(0); }
865 if $cc -o $TMPE $TMPC 2> /dev/null ; then
866 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
869 if test "$darwin" = "yes" ; then
870 echo "CONFIG_DARWIN=yes" >> $config_mak
871 echo "#define CONFIG_DARWIN 1" >> $config_h
873 if test "$solaris" = "yes" ; then
874 echo "CONFIG_SOLARIS=yes" >> $config_mak
875 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
876 if test "$needs_libsunmath" = "yes" ; then
877 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
878 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
881 if test -n "$sparc_cpu"; then
882 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
883 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
885 if test "$gdbstub" = "yes" ; then
886 echo "CONFIG_GDBSTUB=yes" >> $config_mak
887 echo "#define CONFIG_GDBSTUB 1" >> $config_h
889 if test "$gprof" = "yes" ; then
890 echo "TARGET_GPROF=yes" >> $config_mak
891 echo "#define HAVE_GPROF 1" >> $config_h
893 if test "$static" = "yes" ; then
894 echo "CONFIG_STATIC=yes" >> $config_mak
895 echo "#define CONFIG_STATIC 1" >> $config_h
897 if test $profiler = "yes" ; then
898 echo "#define CONFIG_PROFILER 1" >> $config_h
900 if test "$slirp" = "yes" ; then
901 echo "CONFIG_SLIRP=yes" >> $config_mak
902 echo "#define CONFIG_SLIRP 1" >> $config_h
904 if test "$adlib" = "yes" ; then
905 echo "CONFIG_ADLIB=yes" >> $config_mak
906 echo "#define CONFIG_ADLIB 1" >> $config_h
908 if test "$ac97" = "yes" ; then
909 echo "CONFIG_AC97=yes" >> $config_mak
910 echo "#define CONFIG_AC97 1" >> $config_h
912 if test "$gus" = "yes" ; then
913 echo "CONFIG_GUS=yes" >> $config_mak
914 echo "#define CONFIG_GUS 1" >> $config_h
916 if test "$oss" = "yes" ; then
917 echo "CONFIG_OSS=yes" >> $config_mak
918 echo "#define CONFIG_OSS 1" >> $config_h
920 if test "$coreaudio" = "yes" ; then
921 echo "CONFIG_COREAUDIO=yes" >> $config_mak
922 echo "#define CONFIG_COREAUDIO 1" >> $config_h
924 if test "$alsa" = "yes" ; then
925 echo "CONFIG_ALSA=yes" >> $config_mak
926 echo "#define CONFIG_ALSA 1" >> $config_h
928 if test "$esd" = "yes" ; then
929 echo "CONFIG_ESD=yes" >> $config_mak
930 echo "#define CONFIG_ESD 1" >> $config_h
932 if test "$dsound" = "yes" ; then
933 echo "CONFIG_DSOUND=yes" >> $config_mak
934 echo "#define CONFIG_DSOUND 1" >> $config_h
936 if test "$fmod" = "yes" ; then
937 echo "CONFIG_FMOD=yes" >> $config_mak
938 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
939 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
940 echo "#define CONFIG_FMOD 1" >> $config_h
942 if test "$vnc_tls" = "yes" ; then
943 echo "CONFIG_VNC_TLS=yes" >> $config_mak
944 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
945 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
946 echo "#define CONFIG_VNC_TLS 1" >> $config_h
948 qemu_version=`head $source_path/VERSION`
949 echo "VERSION=$qemu_version" >>$config_mak
950 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
952 echo "SRC_PATH=$source_path" >> $config_mak
953 if [ "$source_path_used" = "yes" ]; then
954 echo "VPATH=$source_path" >> $config_mak
956 echo "TARGET_DIRS=$target_list" >> $config_mak
957 if [ "$build_docs" = "yes" ] ; then
958 echo "BUILD_DOCS=yes" >> $config_mak
960 if test "$static" = "yes"; then
965 if test "$sdl1" = "yes" ; then
966 echo "#define CONFIG_SDL 1" >> $config_h
967 echo "CONFIG_SDL=yes" >> $config_mak
968 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
969 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
971 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
973 if [ "${aa}" = "yes" ] ; then
974 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
976 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
979 if test "$cocoa" = "yes" ; then
980 echo "#define CONFIG_COCOA 1" >> $config_h
981 echo "CONFIG_COCOA=yes" >> $config_mak
985 if [ "$bsd" = "yes" ] ; then
986 echo "#define O_LARGEFILE 0" >> $config_h
987 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
988 echo "#define _BSD 1" >> $config_h
991 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
994 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
995 tools="qemu-img\$(EXESUF) $tools"
997 echo "TOOLS=$tools" >> $config_mak
999 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1001 for target in $target_list; do
1002 target_dir="$target"
1003 config_mak=$target_dir/config.mak
1004 config_h=$target_dir/config.h
1005 target_cpu=`echo $target | cut -d '-' -f 1`
1006 target_bigendian="no"
1007 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1008 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1009 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1010 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1011 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1012 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1013 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1014 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1015 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1016 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1017 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1018 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1019 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1021 target_user_only="no"
1022 target_linux_user="no"
1023 target_darwin_user="no"
1025 ${target_cpu}-softmmu)
1026 target_softmmu="yes"
1028 ${target_cpu}-linux-user)
1029 target_user_only="yes"
1030 target_linux_user="yes"
1032 ${target_cpu}-darwin-user)
1033 target_user_only="yes"
1034 target_darwin_user="yes"
1037 echo "ERROR: Target '$target' not recognised"
1042 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1043 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1044 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1045 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1046 echo "Note that this will disable all output from the virtual graphics card."
1050 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1052 test -f $config_h && mv $config_h ${config_h}~
1054 mkdir -p $target_dir
1055 mkdir -p $target_dir/fpu
1056 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1057 mkdir -p $target_dir/nwfpe
1061 # don't use ln -sf as not all "ln -sf" over write the file/link
1063 rm -f $target_dir/Makefile
1064 ln -s $source_path/Makefile.target $target_dir/Makefile
1067 echo "# Automatically generated by configure - do not modify" > $config_mak
1068 echo "/* Automatically generated by configure - do not modify */" > $config_h
1071 echo "include ../config-host.mak" >> $config_mak
1072 echo "#include \"../config-host.h\"" >> $config_h
1076 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1077 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1079 if test "$target_cpu" = "i386" ; then
1080 echo "TARGET_ARCH=i386" >> $config_mak
1081 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1082 echo "#define TARGET_I386 1" >> $config_h
1083 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
1084 echo "#define USE_KQEMU 1" >> $config_h
1086 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
1087 echo "TARGET_ARCH=arm" >> $config_mak
1088 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1089 echo "#define TARGET_ARM 1" >> $config_h
1091 elif test "$target_cpu" = "sparc" ; then
1092 echo "TARGET_ARCH=sparc" >> $config_mak
1093 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1094 echo "#define TARGET_SPARC 1" >> $config_h
1095 elif test "$target_cpu" = "sparc64" ; then
1096 echo "TARGET_ARCH=sparc64" >> $config_mak
1097 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1098 echo "#define TARGET_SPARC 1" >> $config_h
1099 echo "#define TARGET_SPARC64 1" >> $config_h
1101 elif test "$target_cpu" = "sparc32plus" ; then
1102 echo "TARGET_ARCH=sparc64" >> $config_mak
1103 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1104 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1105 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1106 echo "#define TARGET_SPARC 1" >> $config_h
1107 echo "#define TARGET_SPARC64 1" >> $config_h
1108 echo "#define TARGET_ABI32 1" >> $config_h
1109 elif test "$target_cpu" = "ppc" ; then
1110 echo "TARGET_ARCH=ppc" >> $config_mak
1111 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1112 echo "#define TARGET_PPC 1" >> $config_h
1113 elif test "$target_cpu" = "ppcemb" ; then
1114 echo "TARGET_ARCH=ppcemb" >> $config_mak
1115 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1116 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1117 echo "#define TARGET_PPC 1" >> $config_h
1118 echo "#define TARGET_PPCEMB 1" >> $config_h
1119 elif test "$target_cpu" = "ppc64" ; then
1120 echo "TARGET_ARCH=ppc64" >> $config_mak
1121 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1122 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1123 echo "#define TARGET_PPC 1" >> $config_h
1124 echo "#define TARGET_PPC64 1" >> $config_h
1125 elif test "$target_cpu" = "ppc64abi32" ; then
1126 echo "TARGET_ARCH=ppc64" >> $config_mak
1127 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1128 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1129 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1130 echo "#define TARGET_PPC 1" >> $config_h
1131 echo "#define TARGET_PPC64 1" >> $config_h
1132 echo "#define TARGET_ABI32 1" >> $config_h
1133 elif test "$target_cpu" = "x86_64" ; then
1134 echo "TARGET_ARCH=x86_64" >> $config_mak
1135 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1136 echo "#define TARGET_I386 1" >> $config_h
1137 echo "#define TARGET_X86_64 1" >> $config_h
1138 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
1139 echo "#define USE_KQEMU 1" >> $config_h
1141 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
1142 echo "TARGET_ARCH=mips" >> $config_mak
1143 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1144 echo "#define TARGET_MIPS 1" >> $config_h
1145 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1146 elif test "$target_cpu" = "mipsn32" -o "$target_cpu" = "mipsn32el" ; then
1147 echo "TARGET_ARCH=mipsn32" >> $config_mak
1148 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1149 echo "#define TARGET_MIPS 1" >> $config_h
1150 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1151 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
1152 echo "TARGET_ARCH=mips64" >> $config_mak
1153 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1154 echo "#define TARGET_MIPS 1" >> $config_h
1155 echo "#define TARGET_MIPS64 1" >> $config_h
1156 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1157 elif test "$target_cpu" = "cris" ; then
1158 echo "TARGET_ARCH=cris" >> $config_mak
1159 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1160 echo "#define TARGET_CRIS 1" >> $config_h
1161 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1162 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1163 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1164 echo "TARGET_ARCH=sh4" >> $config_mak
1165 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1166 echo "#define TARGET_SH4 1" >> $config_h
1168 elif test "$target_cpu" = "m68k" ; then
1169 echo "TARGET_ARCH=m68k" >> $config_mak
1170 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1171 echo "#define TARGET_M68K 1" >> $config_h
1173 elif test "$target_cpu" = "alpha" ; then
1174 echo "TARGET_ARCH=alpha" >> $config_mak
1175 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1176 echo "#define TARGET_ALPHA 1" >> $config_h
1178 echo "Unsupported target CPU"
1181 if test "$target_bigendian" = "yes" ; then
1182 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1183 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1185 if test "$target_softmmu" = "yes" ; then
1186 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1187 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1189 if test "$target_user_only" = "yes" ; then
1190 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1191 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1193 if test "$target_linux_user" = "yes" ; then
1194 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1195 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1197 if test "$target_darwin_user" = "yes" ; then
1198 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1199 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1202 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
1203 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1204 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1206 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1207 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1208 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1210 # 32 bit ELF loader in addition to native 64 bit loader?
1211 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1212 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1213 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1216 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1218 done # for target in $targets
1220 # build tree in object directory if source path is different from current one
1221 if test "$source_path_used" = "yes" ; then
1222 DIRS="tests tests/cris slirp audio"
1223 FILES="Makefile tests/Makefile"
1224 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1225 for dir in $DIRS ; do
1228 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1229 for f in $FILES ; do
1231 ln -s $source_path/$f $f
1235 rm -f $TMPO $TMPC $TMPE $TMPS