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)
68 "Power Macintosh"|ppc|ppc64)
121 OS_CFLAGS="-mno-cygwin"
122 if [ "$cpu" = "i386" ] ; then
128 if [ "$cpu" = "i386" ] ; then
134 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
141 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
159 OS_CFLAGS="-mdynamic-no-pic"
160 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
166 needs_libsunmath="no"
167 solarisrev=`uname -r | cut -f2 -d.`
168 # have to select again, because `uname -m` returns i86pc
169 # even on an x86_64 box.
170 solariscpu=`isainfo -k`
171 if test "${solariscpu}" = "amd64" ; then
174 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
175 if test "$solarisrev" -le 9 ; then
176 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
177 needs_libsunmath="yes"
179 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
180 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
181 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
182 echo "Studio 11 can be downloaded from www.sun.com."
186 if test "$solarisrev" -ge 9 ; then
190 if test -f /usr/include/sys/soundcard.h ; then
198 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
204 if [ "$bsd" = "yes" ] ; then
205 if [ "$darwin" != "yes" ] ; then
211 source_path=`dirname "$0"`
212 source_path_used="no"
214 if [ -z "$source_path" ]; then
217 source_path=`cd "$source_path"; pwd`
219 [ -f "$workdir/vl.c" ] || source_path_used="yes"
222 # generate compile errors on warnings for development builds
223 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
228 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
230 --help|-h) show_help=yes
232 --prefix=*) prefix="$optarg"
234 --interp-prefix=*) interp_prefix="$optarg"
236 --source-path=*) source_path="$optarg"
237 source_path_used="yes"
239 --cross-prefix=*) cross_prefix="$optarg"
244 --host-cc=*) host_cc="$optarg"
246 --make=*) make="$optarg"
248 --install=*) install="$optarg"
250 --extra-cflags=*) CFLAGS="$optarg"
252 --extra-ldflags=*) LDFLAGS="$optarg"
254 --cpu=*) cpu="$optarg"
256 --target-list=*) target_list="$optarg"
258 --enable-gprof) gprof="yes"
260 --static) static="yes"
262 --disable-sdl) sdl="no"
264 --enable-coreaudio) coreaudio="yes"
266 --enable-alsa) alsa="yes"
268 --enable-esd) esd="yes"
270 --enable-dsound) dsound="yes"
272 --enable-fmod) fmod="yes"
274 --fmod-lib=*) fmod_lib="$optarg"
276 --fmod-inc=*) fmod_inc="$optarg"
278 --disable-vnc-tls) vnc_tls="no"
280 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
282 --disable-slirp) slirp="no"
284 --enable-adlib) adlib="yes"
286 --enable-ac97) ac97="yes"
288 --enable-gus) gus="yes"
290 --disable-kqemu) kqemu="no"
292 --disable-brlapi) brlapi="no"
294 --enable-profiler) profiler="yes"
296 --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
298 --disable-gfx-check) check_gfx="no"
300 --disable-gcc-check) check_gcc="no"
302 --disable-system) softmmu="no"
304 --enable-system) softmmu="yes"
306 --disable-linux-user) linux_user="no"
308 --enable-linux-user) linux_user="yes"
310 --disable-darwin-user) darwin_user="no"
312 --enable-darwin-user) darwin_user="yes"
314 --enable-uname-release=*) uname_release="$optarg"
319 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
320 target_cpu="sparc"; cpu="sparc" ;;
321 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
322 target_cpu="sparc"; cpu="sparc" ;;
323 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
324 target_cpu="sparc64"; cpu="sparc64" ;;
325 *) echo "undefined SPARC architecture. Exiting";exit 1;;
328 --enable-werror) werror="yes"
330 --disable-werror) werror="no"
332 --disable-curses) curses="no"
334 *) echo "ERROR: unknown option $opt"; show_help="yes"
339 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
342 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
343 AIOLIBS="-lrt -lpthread"
346 # default flags for all hosts
347 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
348 LDFLAGS="$LDFLAGS -g"
349 if test "$werror" = "yes" ; then
350 CFLAGS="$CFLAGS -Werror"
354 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
355 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
358 sparc) if test -z "$sparc_cpu" ; then
359 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
362 ARCH_CFLAGS="${SP_CFLAGS}"
363 ARCH_LDFLAGS="${SP_LDFLAGS}"
366 sparc64) if test -z "$sparc_cpu" ; then
367 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
370 ARCH_CFLAGS="${SP_CFLAGS}"
371 ARCH_LDFLAGS="${SP_LDFLAGS}"
375 ARCH_CFLAGS="-march=z900"
387 if test x"$show_help" = x"yes" ; then
390 Usage: configure [options]
391 Options: [defaults in brackets after descriptions]
394 echo "Standard options:"
395 echo " --help print this message"
396 echo " --prefix=PREFIX install in PREFIX [$prefix]"
397 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
398 echo " use %M for cpu name [$interp_prefix]"
399 echo " --target-list=LIST set target list [$target_list]"
401 echo "kqemu kernel acceleration support:"
402 echo " --disable-kqemu disable kqemu support"
404 echo "Advanced options (experts only):"
405 echo " --source-path=PATH path of source code [$source_path]"
406 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
407 echo " --cc=CC use C compiler CC [$cc]"
408 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
409 echo " --make=MAKE use specified make [$make]"
410 echo " --install=INSTALL use specified install [$install]"
411 echo " --static enable static build [$static]"
412 echo " --disable-werror disable compilation abort on warning"
413 echo " --disable-sdl disable SDL"
414 echo " --enable-cocoa enable COCOA (Mac OS X only)"
415 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
416 echo " --enable-adlib enable Adlib emulation"
417 echo " --enable-ac97 enable AC97 emulation"
418 echo " --enable-gus enable Gravis Ultrasound emulation"
419 echo " --enable-coreaudio enable Coreaudio audio driver"
420 echo " --enable-alsa enable ALSA audio driver"
421 echo " --enable-esd enable EsoundD audio driver"
422 echo " --enable-fmod enable FMOD audio driver"
423 echo " --enable-dsound enable DirectSound audio driver"
424 echo " --disable-brlapi disable BrlAPI"
425 echo " --disable-vnc-tls disable TLS encryption for VNC server"
426 echo " --disable-curses disable curses output"
427 echo " --enable-system enable all system emulation targets"
428 echo " --disable-system disable all system emulation targets"
429 echo " --enable-linux-user enable all linux usermode emulation targets"
430 echo " --disable-linux-user disable all linux usermode emulation targets"
431 echo " --enable-darwin-user enable all darwin usermode emulation targets"
432 echo " --disable-darwin-user disable all darwin usermode emulation targets"
433 echo " --fmod-lib path to FMOD library"
434 echo " --fmod-inc path to FMOD includes"
435 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
436 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
438 echo "NOTE: The object files are built at the place where configure is launched"
442 cc="${cross_prefix}${cc}"
443 ar="${cross_prefix}${ar}"
444 strip="${cross_prefix}${strip}"
446 # check that the C compiler works.
451 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
452 : C compiler works ok
454 echo "ERROR: \"$cc\" either does not exist or does not work"
458 if test "$mingw32" = "yes" ; then
464 # Check for gcc4, error if pre-gcc4
465 if test "$check_gcc" = "yes" ; then
470 int main(){return 0;}
472 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
473 echo "WARNING: \"$cc\" looks like gcc 4.x"
475 if test "$gcc3_search" = "yes" ; then
476 echo "Looking for gcc 3.x"
477 for compat_cc in $gcc3_list ; do
478 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
479 echo "Found \"$compat_cc\""
480 cc="$cross_prefix$compat_cc"
481 found_compat_cc="yes"
485 if test "$found_compat_cc" = "no" ; then
486 echo "gcc 3.x not found!"
489 if test "$found_compat_cc" = "no" ; then
490 echo "QEMU is known to have problems when compiled with gcc 4.x"
491 echo "It is recommended that you use gcc 3.x to build QEMU"
492 echo "To use this compiler anyway, configure with --disable-gcc-check"
499 # Solaris specific configure tool chain decisions
501 if test "$solaris" = "yes" ; then
503 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
504 # override the check with --disable-gcc-check
506 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
508 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
509 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
510 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
511 echo "or get the latest patch from SunSolve for gcc"
515 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
516 if test -z "$solinst" ; then
517 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
518 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
519 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
522 if test "$solinst" = "/usr/sbin/install" ; then
523 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
524 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
525 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
528 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
529 if test -z "$sol_ar" ; then
530 echo "Error: No path includes ar"
531 if test -f /usr/ccs/bin/ar ; then
532 echo "Add /usr/ccs/bin to your path and rerun configure"
539 if test -z "$target_list" ; then
540 # these targets are portable
541 if [ "$softmmu" = "yes" ] ; then
542 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"
544 # the following are Linux specific
545 if [ "$linux_user" = "yes" ] ; then
546 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"
548 # the following are Darwin specific
549 if [ "$darwin_user" = "yes" ] ; then
550 target_list="i386-darwin-user ppc-darwin-user $target_list"
553 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
555 if test -z "$target_list" ; then
556 echo "No targets enabled"
560 if test -z "$cross_prefix" ; then
563 # big/little endian test
565 #include <inttypes.h>
566 int main(int argc, char ** argv){
567 volatile uint32_t i=0x01234567;
568 return (*((uint8_t*)(&i))) == 0x67;
572 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
573 $TMPE && bigendian="yes"
575 echo big/little test failed
580 # if cross compiling, cannot launch a program, so make a static guess
581 if test "$cpu" = "armv4b" \
585 -o "$cpu" = "mips64" \
586 -o "$cpu" = "powerpc" \
588 -o "$cpu" = "sparc" \
589 -o "$cpu" = "sparc64"; then
595 # host long bits test
597 if test "$cpu" = "x86_64" \
598 -o "$cpu" = "alpha" \
600 -o "$cpu" = "sparc64"; then
604 # check gcc options support
610 ##########################################
615 if test -z "$sdl" ; then
616 sdl_config="sdl-config"
620 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
621 # win32 cross compilation case
622 sdl_config="i386-mingw32msvc-sdl-config"
628 #undef main /* We don't want SDL to override our main() */
629 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
631 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
632 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
633 if test "$_sdlversion" -lt 121 ; then
636 if test "$cocoa" = "no" ; then
641 # static link with sdl ?
642 if test "$sdl" = "yes" ; then
644 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
645 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
646 if [ "$aa" = "yes" ] ; then
647 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
650 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
654 fi # sdl compile test
655 fi # cross compilation
657 # Make sure to disable cocoa if sdl was set
658 if test "$sdl" = "yes" ; then
664 ##########################################
666 if test "$vnc_tls" = "yes" ; then
667 `pkg-config gnutls` || vnc_tls="no"
669 if test "$vnc_tls" = "yes" ; then
670 vnc_tls_cflags=`pkg-config --cflags gnutls`
671 vnc_tls_libs=`pkg-config --libs gnutls`
674 ##########################################
675 # alsa sound support libraries
677 if test "$alsa" = "yes" ; then
679 #include <alsa/asoundlib.h>
680 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
682 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lasound 2> /dev/null ; then
686 echo "Error: Could not find alsa"
687 echo "Make sure to have the alsa libs and headers installed."
693 ##########################################
696 if test -z "$brlapi" ; then
700 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
702 if $cc -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /tmp/qemu-$$-brlapi.log ; then
704 fi # brlapi compile test
707 ##########################################
710 if test "$curses" = "yes" ; then
714 int main(void) { return curses_version(); }
716 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
721 # Check if tools are available to build documentation.
722 if [ -x "`which texi2html 2>/dev/null`" ] && \
723 [ -x "`which pod2man 2>/dev/null`" ]; then
727 if test "$mingw32" = "yes" ; then
728 if test -z "$prefix" ; then
729 prefix="/c/Program Files/Qemu"
736 if test -z "$prefix" ; then
739 mansuffix="/share/man"
740 datasuffix="/share/qemu"
741 docsuffix="/share/doc/qemu"
745 echo "Install prefix $prefix"
746 echo "BIOS directory $prefix$datasuffix"
747 echo "binary directory $prefix$binsuffix"
748 if test "$mingw32" = "no" ; then
749 echo "Manual directory $prefix$mansuffix"
750 echo "ELF interp prefix $interp_prefix"
752 echo "Source path $source_path"
753 echo "C compiler $cc"
754 echo "Host C compiler $host_cc"
755 echo "ARCH_CFLAGS $ARCH_CFLAGS"
757 echo "install $install"
759 echo "host big endian $bigendian"
760 echo "target list $target_list"
761 echo "gprof enabled $gprof"
762 echo "profiler $profiler"
763 echo "static build $static"
764 echo "-Werror enabled $werror"
765 if test "$darwin" = "yes" ; then
766 echo "Cocoa support $cocoa"
768 echo "SDL support $sdl"
769 if test "$sdl" != "no" ; then
770 echo "SDL static link $sdl_static"
772 echo "curses support $curses"
773 echo "mingw32 support $mingw32"
774 echo "Adlib support $adlib"
775 echo "AC97 support $ac97"
776 echo "GUS support $gus"
777 echo "CoreAudio support $coreaudio"
778 echo "ALSA support $alsa"
779 echo "EsounD support $esd"
780 echo "DSound support $dsound"
781 if test "$fmod" = "yes"; then
782 if test -z $fmod_lib || test -z $fmod_inc; then
784 echo "Error: You must specify path to FMOD library and headers"
785 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
789 fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
793 echo "FMOD support $fmod $fmod_support"
794 echo "OSS support $oss"
795 echo "VNC TLS support $vnc_tls"
796 if test "$vnc_tls" = "yes" ; then
797 echo " TLS CFLAGS $vnc_tls_cflags"
798 echo " TLS LIBS $vnc_tls_libs"
800 if test -n "$sparc_cpu"; then
801 echo "Target Sparc Arch $sparc_cpu"
803 echo "kqemu support $kqemu"
804 echo "brlapi support $brlapi"
805 echo "Documentation $build_docs"
806 [ ! -z "$uname_release" ] && \
807 echo "uname -r $uname_release"
809 if test $sdl_too_old = "yes"; then
810 echo "-> Your SDL version is too old - please upgrade to have SDL support"
812 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
813 echo "The error log from compiling the libSDL test is: "
814 cat /tmp/qemu-$$-sdl-config.log
816 rm -f /tmp/qemu-$$-sdl-config.log
817 #if test "$sdl_static" = "no"; then
818 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
820 config_mak="config-host.mak"
821 config_h="config-host.h"
823 #echo "Creating $config_mak and $config_h"
825 test -f $config_h && mv $config_h ${config_h}~
827 echo "# Automatically generated by configure - do not modify" > $config_mak
828 echo "# Configured with: $0 $@" >> $config_mak
829 echo "/* Automatically generated by configure - do not modify */" > $config_h
831 echo "prefix=$prefix" >> $config_mak
832 echo "bindir=\${prefix}$binsuffix" >> $config_mak
833 echo "mandir=\${prefix}$mansuffix" >> $config_mak
834 echo "datadir=\${prefix}$datasuffix" >> $config_mak
835 echo "docdir=\${prefix}$docsuffix" >> $config_mak
836 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
837 echo "MAKE=$make" >> $config_mak
838 echo "INSTALL=$install" >> $config_mak
839 echo "CC=$cc" >> $config_mak
840 echo "HOST_CC=$host_cc" >> $config_mak
841 echo "AR=$ar" >> $config_mak
842 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
843 # XXX: only use CFLAGS and LDFLAGS ?
844 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
845 # compilation of dyngen tool (useful for win32 build on Linux host)
846 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
847 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
848 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
849 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
850 echo "CFLAGS=$CFLAGS" >> $config_mak
851 echo "LDFLAGS=$LDFLAGS" >> $config_mak
852 echo "EXESUF=$EXESUF" >> $config_mak
853 echo "AIOLIBS=$AIOLIBS" >> $config_mak
854 if test "$cpu" = "i386" ; then
855 echo "ARCH=i386" >> $config_mak
856 echo "#define HOST_I386 1" >> $config_h
857 elif test "$cpu" = "x86_64" ; then
858 echo "ARCH=x86_64" >> $config_mak
859 echo "#define HOST_X86_64 1" >> $config_h
860 elif test "$cpu" = "alpha" ; then
861 echo "ARCH=alpha" >> $config_mak
862 echo "#define HOST_ALPHA 1" >> $config_h
863 elif test "$cpu" = "armv4b" ; then
864 echo "ARCH=arm" >> $config_mak
865 echo "#define HOST_ARM 1" >> $config_h
866 elif test "$cpu" = "armv4l" ; then
867 echo "ARCH=arm" >> $config_mak
868 echo "#define HOST_ARM 1" >> $config_h
869 elif test "$cpu" = "cris" ; then
870 echo "ARCH=cris" >> $config_mak
871 echo "#define HOST_CRIS 1" >> $config_h
872 elif test "$cpu" = "hppa" ; then
873 echo "ARCH=hppa" >> $config_mak
874 echo "#define HOST_HPPA 1" >> $config_h
875 elif test "$cpu" = "ia64" ; then
876 echo "ARCH=ia64" >> $config_mak
877 echo "#define HOST_IA64 1" >> $config_h
878 elif test "$cpu" = "m68k" ; then
879 echo "ARCH=m68k" >> $config_mak
880 echo "#define HOST_M68K 1" >> $config_h
881 elif test "$cpu" = "mips" ; then
882 echo "ARCH=mips" >> $config_mak
883 echo "#define HOST_MIPS 1" >> $config_h
884 elif test "$cpu" = "mips64" ; then
885 echo "ARCH=mips64" >> $config_mak
886 echo "#define HOST_MIPS64 1" >> $config_h
887 elif test "$cpu" = "powerpc" ; then
888 echo "ARCH=ppc" >> $config_mak
889 echo "#define HOST_PPC 1" >> $config_h
890 elif test "$cpu" = "s390" ; then
891 echo "ARCH=s390" >> $config_mak
892 echo "#define HOST_S390 1" >> $config_h
893 elif test "$cpu" = "sparc" ; then
894 echo "ARCH=sparc" >> $config_mak
895 echo "#define HOST_SPARC 1" >> $config_h
896 elif test "$cpu" = "sparc64" ; then
897 echo "ARCH=sparc64" >> $config_mak
898 echo "#define HOST_SPARC64 1" >> $config_h
900 echo "Unsupported CPU = $cpu"
903 if test "$bigendian" = "yes" ; then
904 echo "WORDS_BIGENDIAN=yes" >> $config_mak
905 echo "#define WORDS_BIGENDIAN 1" >> $config_h
907 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
908 if test "$mingw32" = "yes" ; then
909 echo "CONFIG_WIN32=yes" >> $config_mak
910 echo "#define CONFIG_WIN32 1" >> $config_h
913 #include <byteswap.h>
914 int main(void) { return bswap_32(0); }
916 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
917 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
920 if test "$darwin" = "yes" ; then
921 echo "CONFIG_DARWIN=yes" >> $config_mak
922 echo "#define CONFIG_DARWIN 1" >> $config_h
924 if test "$solaris" = "yes" ; then
925 echo "CONFIG_SOLARIS=yes" >> $config_mak
926 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
927 if test "$needs_libsunmath" = "yes" ; then
928 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
929 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
932 if test -n "$sparc_cpu"; then
933 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
934 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
936 if test "$gdbstub" = "yes" ; then
937 echo "CONFIG_GDBSTUB=yes" >> $config_mak
938 echo "#define CONFIG_GDBSTUB 1" >> $config_h
940 if test "$gprof" = "yes" ; then
941 echo "TARGET_GPROF=yes" >> $config_mak
942 echo "#define HAVE_GPROF 1" >> $config_h
944 if test "$static" = "yes" ; then
945 echo "CONFIG_STATIC=yes" >> $config_mak
946 echo "#define CONFIG_STATIC 1" >> $config_h
948 if test $profiler = "yes" ; then
949 echo "#define CONFIG_PROFILER 1" >> $config_h
951 if test "$slirp" = "yes" ; then
952 echo "CONFIG_SLIRP=yes" >> $config_mak
953 echo "#define CONFIG_SLIRP 1" >> $config_h
955 if test "$adlib" = "yes" ; then
956 echo "CONFIG_ADLIB=yes" >> $config_mak
957 echo "#define CONFIG_ADLIB 1" >> $config_h
959 if test "$ac97" = "yes" ; then
960 echo "CONFIG_AC97=yes" >> $config_mak
961 echo "#define CONFIG_AC97 1" >> $config_h
963 if test "$gus" = "yes" ; then
964 echo "CONFIG_GUS=yes" >> $config_mak
965 echo "#define CONFIG_GUS 1" >> $config_h
967 if test "$oss" = "yes" ; then
968 echo "CONFIG_OSS=yes" >> $config_mak
969 echo "#define CONFIG_OSS 1" >> $config_h
971 if test "$coreaudio" = "yes" ; then
972 echo "CONFIG_COREAUDIO=yes" >> $config_mak
973 echo "#define CONFIG_COREAUDIO 1" >> $config_h
975 if test "$alsa" = "yes" ; then
976 echo "CONFIG_ALSA=yes" >> $config_mak
977 echo "#define CONFIG_ALSA 1" >> $config_h
979 if test "$esd" = "yes" ; then
980 echo "CONFIG_ESD=yes" >> $config_mak
981 echo "#define CONFIG_ESD 1" >> $config_h
983 if test "$dsound" = "yes" ; then
984 echo "CONFIG_DSOUND=yes" >> $config_mak
985 echo "#define CONFIG_DSOUND 1" >> $config_h
987 if test "$fmod" = "yes" ; then
988 echo "CONFIG_FMOD=yes" >> $config_mak
989 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
990 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
991 echo "#define CONFIG_FMOD 1" >> $config_h
993 if test "$vnc_tls" = "yes" ; then
994 echo "CONFIG_VNC_TLS=yes" >> $config_mak
995 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
996 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
997 echo "#define CONFIG_VNC_TLS 1" >> $config_h
999 qemu_version=`head $source_path/VERSION`
1000 echo "VERSION=$qemu_version" >>$config_mak
1001 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1003 echo "SRC_PATH=$source_path" >> $config_mak
1004 if [ "$source_path_used" = "yes" ]; then
1005 echo "VPATH=$source_path" >> $config_mak
1007 echo "TARGET_DIRS=$target_list" >> $config_mak
1008 if [ "$build_docs" = "yes" ] ; then
1009 echo "BUILD_DOCS=yes" >> $config_mak
1011 if test "$static" = "yes"; then
1016 if test "$sdl1" = "yes" ; then
1017 echo "#define CONFIG_SDL 1" >> $config_h
1018 echo "CONFIG_SDL=yes" >> $config_mak
1019 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1020 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1022 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1024 if [ "${aa}" = "yes" ] ; then
1025 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1027 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1030 if test "$cocoa" = "yes" ; then
1031 echo "#define CONFIG_COCOA 1" >> $config_h
1032 echo "CONFIG_COCOA=yes" >> $config_mak
1034 if test "$curses" = "yes" ; then
1035 echo "#define CONFIG_CURSES 1" >> $config_h
1036 echo "CONFIG_CURSES=yes" >> $config_mak
1037 echo "CURSES_LIBS=-lcurses" >> $config_mak
1039 if test "$brlapi" = "yes" ; then
1040 echo "CONFIG_BRLAPI=yes" >> $config_mak
1041 echo "#define CONFIG_BRLAPI 1" >> $config_h
1042 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1045 # XXX: suppress that
1046 if [ "$bsd" = "yes" ] ; then
1047 echo "#define O_LARGEFILE 0" >> $config_h
1048 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1049 echo "#define _BSD 1" >> $config_h
1052 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1055 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1056 tools="qemu-img\$(EXESUF) $tools"
1058 echo "TOOLS=$tools" >> $config_mak
1060 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1062 for target in $target_list; do
1063 target_dir="$target"
1064 config_mak=$target_dir/config.mak
1065 config_h=$target_dir/config.h
1066 target_cpu=`echo $target | cut -d '-' -f 1`
1067 target_bigendian="no"
1068 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1069 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1070 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1071 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1072 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1073 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1074 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1075 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1076 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1077 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1078 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1079 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1080 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1082 target_user_only="no"
1083 target_linux_user="no"
1084 target_darwin_user="no"
1086 ${target_cpu}-softmmu)
1087 target_softmmu="yes"
1089 ${target_cpu}-linux-user)
1090 target_user_only="yes"
1091 target_linux_user="yes"
1093 ${target_cpu}-darwin-user)
1094 target_user_only="yes"
1095 target_darwin_user="yes"
1098 echo "ERROR: Target '$target' not recognised"
1103 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1104 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1105 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1106 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1107 echo "Note that this will disable all output from the virtual graphics card"
1108 echo "except through VNC or curses."
1112 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1114 test -f $config_h && mv $config_h ${config_h}~
1116 mkdir -p $target_dir
1117 mkdir -p $target_dir/fpu
1118 mkdir -p $target_dir/tcg
1119 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1120 mkdir -p $target_dir/nwfpe
1124 # don't use ln -sf as not all "ln -sf" over write the file/link
1126 rm -f $target_dir/Makefile
1127 ln -s $source_path/Makefile.target $target_dir/Makefile
1130 echo "# Automatically generated by configure - do not modify" > $config_mak
1131 echo "/* Automatically generated by configure - do not modify */" > $config_h
1134 echo "include ../config-host.mak" >> $config_mak
1135 echo "#include \"../config-host.h\"" >> $config_h
1139 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1140 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1142 if test "$target_cpu" = "i386" ; then
1143 echo "TARGET_ARCH=i386" >> $config_mak
1144 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1145 echo "#define TARGET_I386 1" >> $config_h
1146 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
1147 echo "#define USE_KQEMU 1" >> $config_h
1149 elif test "$target_cpu" = "x86_64" ; then
1150 echo "TARGET_ARCH=x86_64" >> $config_mak
1151 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1152 echo "#define TARGET_I386 1" >> $config_h
1153 echo "#define TARGET_X86_64 1" >> $config_h
1154 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
1155 echo "#define USE_KQEMU 1" >> $config_h
1157 elif test "$target_cpu" = "alpha" ; then
1158 echo "TARGET_ARCH=alpha" >> $config_mak
1159 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1160 echo "#define TARGET_ALPHA 1" >> $config_h
1161 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
1162 echo "TARGET_ARCH=arm" >> $config_mak
1163 echo "CONFIG_NO_DYNGEN_OP=yes" >> $config_mak
1164 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1165 echo "#define TARGET_ARM 1" >> $config_h
1166 echo "#define CONFIG_NO_DYNGEN_OP 1" >> $config_h
1168 elif test "$target_cpu" = "cris" ; then
1169 echo "TARGET_ARCH=cris" >> $config_mak
1170 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1171 echo "#define TARGET_CRIS 1" >> $config_h
1172 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1173 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1174 elif test "$target_cpu" = "m68k" ; then
1175 echo "TARGET_ARCH=m68k" >> $config_mak
1176 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1177 echo "#define TARGET_M68K 1" >> $config_h
1179 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
1180 echo "TARGET_ARCH=mips" >> $config_mak
1181 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1182 echo "#define TARGET_MIPS 1" >> $config_h
1183 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1184 elif test "$target_cpu" = "mipsn32" -o "$target_cpu" = "mipsn32el" ; then
1185 echo "TARGET_ARCH=mipsn32" >> $config_mak
1186 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1187 echo "#define TARGET_MIPS 1" >> $config_h
1188 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1189 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
1190 echo "TARGET_ARCH=mips64" >> $config_mak
1191 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1192 echo "#define TARGET_MIPS 1" >> $config_h
1193 echo "#define TARGET_MIPS64 1" >> $config_h
1194 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1195 elif test "$target_cpu" = "ppc" ; then
1196 echo "TARGET_ARCH=ppc" >> $config_mak
1197 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1198 echo "#define TARGET_PPC 1" >> $config_h
1199 elif test "$target_cpu" = "ppcemb" ; then
1200 echo "TARGET_ARCH=ppcemb" >> $config_mak
1201 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1202 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1203 echo "#define TARGET_PPC 1" >> $config_h
1204 echo "#define TARGET_PPCEMB 1" >> $config_h
1205 elif test "$target_cpu" = "ppc64" ; then
1206 echo "TARGET_ARCH=ppc64" >> $config_mak
1207 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1208 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1209 echo "#define TARGET_PPC 1" >> $config_h
1210 echo "#define TARGET_PPC64 1" >> $config_h
1211 elif test "$target_cpu" = "ppc64abi32" ; then
1212 echo "TARGET_ARCH=ppc64" >> $config_mak
1213 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1214 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1215 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1216 echo "#define TARGET_PPC 1" >> $config_h
1217 echo "#define TARGET_PPC64 1" >> $config_h
1218 echo "#define TARGET_ABI32 1" >> $config_h
1219 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1220 echo "TARGET_ARCH=sh4" >> $config_mak
1221 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1222 echo "#define TARGET_SH4 1" >> $config_h
1224 elif test "$target_cpu" = "sparc" ; then
1225 echo "TARGET_ARCH=sparc" >> $config_mak
1226 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1227 echo "#define TARGET_SPARC 1" >> $config_h
1228 elif test "$target_cpu" = "sparc64" ; then
1229 echo "TARGET_ARCH=sparc64" >> $config_mak
1230 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1231 echo "#define TARGET_SPARC 1" >> $config_h
1232 echo "#define TARGET_SPARC64 1" >> $config_h
1234 elif test "$target_cpu" = "sparc32plus" ; then
1235 echo "TARGET_ARCH=sparc64" >> $config_mak
1236 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1237 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1238 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1239 echo "#define TARGET_SPARC 1" >> $config_h
1240 echo "#define TARGET_SPARC64 1" >> $config_h
1241 echo "#define TARGET_ABI32 1" >> $config_h
1243 echo "Unsupported target CPU"
1246 if test "$target_bigendian" = "yes" ; then
1247 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1248 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1250 if test "$target_softmmu" = "yes" ; then
1251 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1252 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1254 if test "$target_user_only" = "yes" ; then
1255 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1256 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1258 if test "$target_linux_user" = "yes" ; then
1259 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1260 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1262 if test "$target_darwin_user" = "yes" ; then
1263 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1264 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1267 if test "$target_cpu" = "arm" \
1268 -o "$target_cpu" = "armeb" \
1269 -o "$target_cpu" = "m68k" \
1270 -o "$target_cpu" = "mips" \
1271 -o "$target_cpu" = "mipsel" \
1272 -o "$target_cpu" = "mipsn32" \
1273 -o "$target_cpu" = "mipsn32el" \
1274 -o "$target_cpu" = "mips64" \
1275 -o "$target_cpu" = "mips64el" \
1276 -o "$target_cpu" = "sparc" \
1277 -o "$target_cpu" = "sparc64" \
1278 -o "$target_cpu" = "sparc32plus"; then
1279 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1280 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1282 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1283 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1284 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1286 # 32 bit ELF loader in addition to native 64 bit loader?
1287 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1288 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1289 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1292 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1294 done # for target in $targets
1296 # build tree in object directory if source path is different from current one
1297 if test "$source_path_used" = "yes" ; then
1298 DIRS="tests tests/cris slirp audio"
1299 FILES="Makefile tests/Makefile"
1300 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1301 FILES="$FILES tests/test-mmap.c"
1302 for dir in $DIRS ; do
1305 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1306 for f in $FILES ; do
1308 ln -s $source_path/$f $f
1312 rm -f $TMPO $TMPC $TMPE $TMPS