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)
118 OS_CFLAGS="-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 source_path_used="no"
211 if [ -z "$source_path" ]; then
214 source_path=`cd "$source_path"; pwd`
216 [ -f "$workdir/vl.c" ] || source_path_used="yes"
219 # generate compile errors on warnings for development builds
220 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
225 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
227 --help|-h) show_help=yes
229 --prefix=*) prefix="$optarg"
231 --interp-prefix=*) interp_prefix="$optarg"
233 --source-path=*) source_path="$optarg"
234 source_path_used="yes"
236 --cross-prefix=*) cross_prefix="$optarg"
241 --host-cc=*) host_cc="$optarg"
243 --make=*) make="$optarg"
245 --install=*) install="$optarg"
247 --extra-cflags=*) CFLAGS="$optarg"
249 --extra-ldflags=*) LDFLAGS="$optarg"
251 --cpu=*) cpu="$optarg"
253 --target-list=*) target_list="$optarg"
255 --enable-gprof) gprof="yes"
257 --static) static="yes"
259 --disable-sdl) sdl="no"
261 --enable-coreaudio) coreaudio="yes"
263 --enable-alsa) alsa="yes"
265 --enable-esd) esd="yes"
267 --enable-dsound) dsound="yes"
269 --enable-fmod) fmod="yes"
271 --fmod-lib=*) fmod_lib="$optarg"
273 --fmod-inc=*) fmod_inc="$optarg"
275 --disable-vnc-tls) vnc_tls="no"
277 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
279 --disable-slirp) slirp="no"
281 --enable-adlib) adlib="yes"
283 --enable-ac97) ac97="yes"
285 --enable-gus) gus="yes"
287 --disable-kqemu) kqemu="no"
289 --disable-brlapi) brlapi="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 --disable-curses) curses="no"
331 *) echo "ERROR: unknown option $opt"; show_help="yes"
336 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
339 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
340 AIOLIBS="-lrt -lpthread"
343 # default flags for all hosts
344 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
345 LDFLAGS="$LDFLAGS -g"
346 if test "$werror" = "yes" ; then
347 CFLAGS="$CFLAGS -Werror"
351 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
352 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
355 sparc) if test -z "$sparc_cpu" ; then
356 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
359 ARCH_CFLAGS="${SP_CFLAGS}"
360 ARCH_LDFLAGS="${SP_LDFLAGS}"
363 sparc64) if test -z "$sparc_cpu" ; then
364 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
367 ARCH_CFLAGS="${SP_CFLAGS}"
368 ARCH_LDFLAGS="${SP_LDFLAGS}"
372 ARCH_CFLAGS="-march=z900"
384 if test x"$show_help" = x"yes" ; then
387 Usage: configure [options]
388 Options: [defaults in brackets after descriptions]
391 echo "Standard options:"
392 echo " --help print this message"
393 echo " --prefix=PREFIX install in PREFIX [$prefix]"
394 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
395 echo " use %M for cpu name [$interp_prefix]"
396 echo " --target-list=LIST set target list [$target_list]"
398 echo "kqemu kernel acceleration support:"
399 echo " --disable-kqemu disable kqemu support"
401 echo "Advanced options (experts only):"
402 echo " --source-path=PATH path of source code [$source_path]"
403 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
404 echo " --cc=CC use C compiler CC [$cc]"
405 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
406 echo " --make=MAKE use specified make [$make]"
407 echo " --install=INSTALL use specified install [$install]"
408 echo " --static enable static build [$static]"
409 echo " --disable-werror disable compilation abort on warning"
410 echo " --disable-sdl disable SDL"
411 echo " --enable-cocoa enable COCOA (Mac OS X only)"
412 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
413 echo " --enable-adlib enable Adlib emulation"
414 echo " --enable-ac97 enable AC97 emulation"
415 echo " --enable-gus enable Gravis Ultrasound emulation"
416 echo " --enable-coreaudio enable Coreaudio audio driver"
417 echo " --enable-alsa enable ALSA audio driver"
418 echo " --enable-esd enable EsoundD audio driver"
419 echo " --enable-fmod enable FMOD audio driver"
420 echo " --enable-dsound enable DirectSound audio driver"
421 echo " --disable-brlapi disable BrlAPI"
422 echo " --disable-vnc-tls disable TLS encryption for VNC server"
423 echo " --disable-curses disable curses output"
424 echo " --enable-system enable all system emulation targets"
425 echo " --disable-system disable all system emulation targets"
426 echo " --enable-linux-user enable all linux usermode emulation targets"
427 echo " --disable-linux-user disable all linux usermode emulation targets"
428 echo " --enable-darwin-user enable all darwin usermode emulation targets"
429 echo " --disable-darwin-user disable all darwin usermode emulation targets"
430 echo " --fmod-lib path to FMOD library"
431 echo " --fmod-inc path to FMOD includes"
432 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
433 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
435 echo "NOTE: The object files are built at the place where configure is launched"
439 cc="${cross_prefix}${cc}"
440 ar="${cross_prefix}${ar}"
441 strip="${cross_prefix}${strip}"
443 # check that the C compiler works.
448 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
449 : C compiler works ok
451 echo "ERROR: \"$cc\" either does not exist or does not work"
455 if test "$mingw32" = "yes" ; then
461 # Check for gcc4, error if pre-gcc4
462 if test "$check_gcc" = "yes" ; then
467 int main(){return 0;}
469 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
470 echo "WARNING: \"$cc\" looks like gcc 4.x"
472 if test "$gcc3_search" = "yes" ; then
473 echo "Looking for gcc 3.x"
474 for compat_cc in $gcc3_list ; do
475 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
476 echo "Found \"$compat_cc\""
477 cc="$cross_prefix$compat_cc"
478 found_compat_cc="yes"
482 if test "$found_compat_cc" = "no" ; then
483 echo "gcc 3.x not found!"
486 if test "$found_compat_cc" = "no" ; then
487 echo "QEMU is known to have problems when compiled with gcc 4.x"
488 echo "It is recommended that you use gcc 3.x to build QEMU"
489 echo "To use this compiler anyway, configure with --disable-gcc-check"
496 # Solaris specific configure tool chain decisions
498 if test "$solaris" = "yes" ; then
500 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
501 # override the check with --disable-gcc-check
503 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
505 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
506 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
507 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
508 echo "or get the latest patch from SunSolve for gcc"
512 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
513 if test -z "$solinst" ; then
514 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
515 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
516 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
519 if test "$solinst" = "/usr/sbin/install" ; then
520 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
521 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
522 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
525 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
526 if test -z "$sol_ar" ; then
527 echo "Error: No path includes ar"
528 if test -f /usr/ccs/bin/ar ; then
529 echo "Add /usr/ccs/bin to your path and rerun configure"
536 if test -z "$target_list" ; then
537 # these targets are portable
538 if [ "$softmmu" = "yes" ] ; then
539 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"
541 # the following are Linux specific
542 if [ "$linux_user" = "yes" ] ; then
543 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"
545 # the following are Darwin specific
546 if [ "$darwin_user" = "yes" ] ; then
547 target_list="i386-darwin-user ppc-darwin-user $target_list"
550 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
552 if test -z "$target_list" ; then
553 echo "No targets enabled"
557 if test -z "$cross_prefix" ; then
560 # big/little endian test
562 #include <inttypes.h>
563 int main(int argc, char ** argv){
564 volatile uint32_t i=0x01234567;
565 return (*((uint8_t*)(&i))) == 0x67;
569 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
570 $TMPE && bigendian="yes"
572 echo big/little test failed
577 # if cross compiling, cannot launch a program, so make a static guess
578 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
584 # host long bits test
586 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
590 # check gcc options support
596 ##########################################
601 if test -z "$sdl" ; then
602 sdl_config="sdl-config"
606 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
607 # win32 cross compilation case
608 sdl_config="i386-mingw32msvc-sdl-config"
614 #undef main /* We don't want SDL to override our main() */
615 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
617 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
618 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
619 if test "$_sdlversion" -lt 121 ; then
622 if test "$cocoa" = "no" ; then
627 # static link with sdl ?
628 if test "$sdl" = "yes" ; then
630 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
631 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
632 if [ "$aa" = "yes" ] ; then
633 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
636 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
640 fi # sdl compile test
641 fi # cross compilation
643 # Make sure to disable cocoa if sdl was set
644 if test "$sdl" = "yes" ; then
650 ##########################################
652 if test "$vnc_tls" = "yes" ; then
653 `pkg-config gnutls` || vnc_tls="no"
655 if test "$vnc_tls" = "yes" ; then
656 vnc_tls_cflags=`pkg-config --cflags gnutls`
657 vnc_tls_libs=`pkg-config --libs gnutls`
660 ##########################################
661 # alsa sound support libraries
663 if test "$alsa" = "yes" ; then
665 #include <alsa/asoundlib.h>
666 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
668 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lasound 2> /dev/null ; then
672 echo "Error: Could not find alsa"
673 echo "Make sure to have the alsa libs and headers installed."
679 ##########################################
682 if test -z "$brlapi" ; then
686 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
688 if $cc -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /tmp/qemu-$$-brlapi.log ; then
690 fi # brlapi compile test
693 ##########################################
696 if test "$curses" = "yes" ; then
700 int main(void) { return curses_version(); }
702 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
707 # Check if tools are available to build documentation.
708 if [ -x "`which texi2html 2>/dev/null`" ] && \
709 [ -x "`which pod2man 2>/dev/null`" ]; then
713 if test "$mingw32" = "yes" ; then
714 if test -z "$prefix" ; then
715 prefix="/c/Program Files/Qemu"
722 if test -z "$prefix" ; then
725 mansuffix="/share/man"
726 datasuffix="/share/qemu"
727 docsuffix="/share/doc/qemu"
731 echo "Install prefix $prefix"
732 echo "BIOS directory $prefix$datasuffix"
733 echo "binary directory $prefix$binsuffix"
734 if test "$mingw32" = "no" ; then
735 echo "Manual directory $prefix$mansuffix"
736 echo "ELF interp prefix $interp_prefix"
738 echo "Source path $source_path"
739 echo "C compiler $cc"
740 echo "Host C compiler $host_cc"
741 echo "ARCH_CFLAGS $ARCH_CFLAGS"
743 echo "install $install"
745 echo "host big endian $bigendian"
746 echo "target list $target_list"
747 echo "gprof enabled $gprof"
748 echo "profiler $profiler"
749 echo "static build $static"
750 echo "-Werror enabled $werror"
751 if test "$darwin" = "yes" ; then
752 echo "Cocoa support $cocoa"
754 echo "SDL support $sdl"
755 if test "$sdl" != "no" ; then
756 echo "SDL static link $sdl_static"
758 echo "curses support $curses"
759 echo "mingw32 support $mingw32"
760 echo "Adlib support $adlib"
761 echo "AC97 support $ac97"
762 echo "GUS support $gus"
763 echo "CoreAudio support $coreaudio"
764 echo "ALSA support $alsa"
765 echo "EsounD support $esd"
766 echo "DSound support $dsound"
767 if test "$fmod" = "yes"; then
768 if test -z $fmod_lib || test -z $fmod_inc; then
770 echo "Error: You must specify path to FMOD library and headers"
771 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
775 fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
779 echo "FMOD support $fmod $fmod_support"
780 echo "OSS support $oss"
781 echo "VNC TLS support $vnc_tls"
782 if test "$vnc_tls" = "yes" ; then
783 echo " TLS CFLAGS $vnc_tls_cflags"
784 echo " TLS LIBS $vnc_tls_libs"
786 if test -n "$sparc_cpu"; then
787 echo "Target Sparc Arch $sparc_cpu"
789 echo "kqemu support $kqemu"
790 echo "brlapi support $brlapi"
791 echo "Documentation $build_docs"
792 [ ! -z "$uname_release" ] && \
793 echo "uname -r $uname_release"
795 if test $sdl_too_old = "yes"; then
796 echo "-> Your SDL version is too old - please upgrade to have SDL support"
798 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
799 echo "The error log from compiling the libSDL test is: "
800 cat /tmp/qemu-$$-sdl-config.log
802 rm -f /tmp/qemu-$$-sdl-config.log
803 #if test "$sdl_static" = "no"; then
804 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
806 config_mak="config-host.mak"
807 config_h="config-host.h"
809 #echo "Creating $config_mak and $config_h"
811 test -f $config_h && mv $config_h ${config_h}~
813 echo "# Automatically generated by configure - do not modify" > $config_mak
814 echo "# Configured with: $0 $@" >> $config_mak
815 echo "/* Automatically generated by configure - do not modify */" > $config_h
817 echo "prefix=$prefix" >> $config_mak
818 echo "bindir=\${prefix}$binsuffix" >> $config_mak
819 echo "mandir=\${prefix}$mansuffix" >> $config_mak
820 echo "datadir=\${prefix}$datasuffix" >> $config_mak
821 echo "docdir=\${prefix}$docsuffix" >> $config_mak
822 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
823 echo "MAKE=$make" >> $config_mak
824 echo "INSTALL=$install" >> $config_mak
825 echo "CC=$cc" >> $config_mak
826 echo "HOST_CC=$host_cc" >> $config_mak
827 echo "AR=$ar" >> $config_mak
828 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
829 # XXX: only use CFLAGS and LDFLAGS ?
830 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
831 # compilation of dyngen tool (useful for win32 build on Linux host)
832 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
833 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
834 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
835 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
836 echo "CFLAGS=$CFLAGS" >> $config_mak
837 echo "LDFLAGS=$LDFLAGS" >> $config_mak
838 echo "EXESUF=$EXESUF" >> $config_mak
839 echo "AIOLIBS=$AIOLIBS" >> $config_mak
840 if test "$cpu" = "i386" ; then
841 echo "ARCH=i386" >> $config_mak
842 echo "#define HOST_I386 1" >> $config_h
843 elif test "$cpu" = "x86_64" ; then
844 echo "ARCH=x86_64" >> $config_mak
845 echo "#define HOST_X86_64 1" >> $config_h
846 elif test "$cpu" = "armv4b" ; then
847 echo "ARCH=arm" >> $config_mak
848 echo "#define HOST_ARM 1" >> $config_h
849 elif test "$cpu" = "armv4l" ; then
850 echo "ARCH=arm" >> $config_mak
851 echo "#define HOST_ARM 1" >> $config_h
852 elif test "$cpu" = "powerpc" ; then
853 echo "ARCH=ppc" >> $config_mak
854 echo "#define HOST_PPC 1" >> $config_h
855 elif test "$cpu" = "mips" ; then
856 echo "ARCH=mips" >> $config_mak
857 echo "#define HOST_MIPS 1" >> $config_h
858 elif test "$cpu" = "mips64" ; then
859 echo "ARCH=mips64" >> $config_mak
860 echo "#define HOST_MIPS64 1" >> $config_h
861 elif test "$cpu" = "cris" ; then
862 echo "ARCH=cris" >> $config_mak
863 echo "#define HOST_CRIS 1" >> $config_h
864 elif test "$cpu" = "s390" ; then
865 echo "ARCH=s390" >> $config_mak
866 echo "#define HOST_S390 1" >> $config_h
867 elif test "$cpu" = "alpha" ; then
868 echo "ARCH=alpha" >> $config_mak
869 echo "#define HOST_ALPHA 1" >> $config_h
870 elif test "$cpu" = "sparc" ; then
871 echo "ARCH=sparc" >> $config_mak
872 echo "#define HOST_SPARC 1" >> $config_h
873 elif test "$cpu" = "sparc64" ; then
874 echo "ARCH=sparc64" >> $config_mak
875 echo "#define HOST_SPARC64 1" >> $config_h
876 elif test "$cpu" = "ia64" ; then
877 echo "ARCH=ia64" >> $config_mak
878 echo "#define HOST_IA64 1" >> $config_h
879 elif test "$cpu" = "m68k" ; then
880 echo "ARCH=m68k" >> $config_mak
881 echo "#define HOST_M68K 1" >> $config_h
883 echo "Unsupported CPU = $cpu"
886 if test "$bigendian" = "yes" ; then
887 echo "WORDS_BIGENDIAN=yes" >> $config_mak
888 echo "#define WORDS_BIGENDIAN 1" >> $config_h
890 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
891 if test "$mingw32" = "yes" ; then
892 echo "CONFIG_WIN32=yes" >> $config_mak
893 echo "#define CONFIG_WIN32 1" >> $config_h
896 #include <byteswap.h>
897 int main(void) { return bswap_32(0); }
899 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
900 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
903 if test "$darwin" = "yes" ; then
904 echo "CONFIG_DARWIN=yes" >> $config_mak
905 echo "#define CONFIG_DARWIN 1" >> $config_h
907 if test "$solaris" = "yes" ; then
908 echo "CONFIG_SOLARIS=yes" >> $config_mak
909 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
910 if test "$needs_libsunmath" = "yes" ; then
911 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
912 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
915 if test -n "$sparc_cpu"; then
916 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
917 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
919 if test "$gdbstub" = "yes" ; then
920 echo "CONFIG_GDBSTUB=yes" >> $config_mak
921 echo "#define CONFIG_GDBSTUB 1" >> $config_h
923 if test "$gprof" = "yes" ; then
924 echo "TARGET_GPROF=yes" >> $config_mak
925 echo "#define HAVE_GPROF 1" >> $config_h
927 if test "$static" = "yes" ; then
928 echo "CONFIG_STATIC=yes" >> $config_mak
929 echo "#define CONFIG_STATIC 1" >> $config_h
931 if test $profiler = "yes" ; then
932 echo "#define CONFIG_PROFILER 1" >> $config_h
934 if test "$slirp" = "yes" ; then
935 echo "CONFIG_SLIRP=yes" >> $config_mak
936 echo "#define CONFIG_SLIRP 1" >> $config_h
938 if test "$adlib" = "yes" ; then
939 echo "CONFIG_ADLIB=yes" >> $config_mak
940 echo "#define CONFIG_ADLIB 1" >> $config_h
942 if test "$ac97" = "yes" ; then
943 echo "CONFIG_AC97=yes" >> $config_mak
944 echo "#define CONFIG_AC97 1" >> $config_h
946 if test "$gus" = "yes" ; then
947 echo "CONFIG_GUS=yes" >> $config_mak
948 echo "#define CONFIG_GUS 1" >> $config_h
950 if test "$oss" = "yes" ; then
951 echo "CONFIG_OSS=yes" >> $config_mak
952 echo "#define CONFIG_OSS 1" >> $config_h
954 if test "$coreaudio" = "yes" ; then
955 echo "CONFIG_COREAUDIO=yes" >> $config_mak
956 echo "#define CONFIG_COREAUDIO 1" >> $config_h
958 if test "$alsa" = "yes" ; then
959 echo "CONFIG_ALSA=yes" >> $config_mak
960 echo "#define CONFIG_ALSA 1" >> $config_h
962 if test "$esd" = "yes" ; then
963 echo "CONFIG_ESD=yes" >> $config_mak
964 echo "#define CONFIG_ESD 1" >> $config_h
966 if test "$dsound" = "yes" ; then
967 echo "CONFIG_DSOUND=yes" >> $config_mak
968 echo "#define CONFIG_DSOUND 1" >> $config_h
970 if test "$fmod" = "yes" ; then
971 echo "CONFIG_FMOD=yes" >> $config_mak
972 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
973 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
974 echo "#define CONFIG_FMOD 1" >> $config_h
976 if test "$vnc_tls" = "yes" ; then
977 echo "CONFIG_VNC_TLS=yes" >> $config_mak
978 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
979 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
980 echo "#define CONFIG_VNC_TLS 1" >> $config_h
982 qemu_version=`head $source_path/VERSION`
983 echo "VERSION=$qemu_version" >>$config_mak
984 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
986 echo "SRC_PATH=$source_path" >> $config_mak
987 if [ "$source_path_used" = "yes" ]; then
988 echo "VPATH=$source_path" >> $config_mak
990 echo "TARGET_DIRS=$target_list" >> $config_mak
991 if [ "$build_docs" = "yes" ] ; then
992 echo "BUILD_DOCS=yes" >> $config_mak
994 if test "$static" = "yes"; then
999 if test "$sdl1" = "yes" ; then
1000 echo "#define CONFIG_SDL 1" >> $config_h
1001 echo "CONFIG_SDL=yes" >> $config_mak
1002 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1003 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1005 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1007 if [ "${aa}" = "yes" ] ; then
1008 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1010 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1013 if test "$cocoa" = "yes" ; then
1014 echo "#define CONFIG_COCOA 1" >> $config_h
1015 echo "CONFIG_COCOA=yes" >> $config_mak
1017 if test "$curses" = "yes" ; then
1018 echo "#define CONFIG_CURSES 1" >> $config_h
1019 echo "CONFIG_CURSES=yes" >> $config_mak
1020 echo "CURSES_LIBS=-lcurses" >> $config_mak
1022 if test "$brlapi" = "yes" ; then
1023 echo "CONFIG_BRLAPI=yes" >> $config_mak
1024 echo "#define CONFIG_BRLAPI 1" >> $config_h
1025 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1028 # XXX: suppress that
1029 if [ "$bsd" = "yes" ] ; then
1030 echo "#define O_LARGEFILE 0" >> $config_h
1031 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1032 echo "#define _BSD 1" >> $config_h
1035 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1038 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1039 tools="qemu-img\$(EXESUF) $tools"
1041 echo "TOOLS=$tools" >> $config_mak
1043 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1045 for target in $target_list; do
1046 target_dir="$target"
1047 config_mak=$target_dir/config.mak
1048 config_h=$target_dir/config.h
1049 target_cpu=`echo $target | cut -d '-' -f 1`
1050 target_bigendian="no"
1051 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1052 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1053 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1054 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1055 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1056 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1057 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1058 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1059 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1060 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1061 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1062 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1063 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1065 target_user_only="no"
1066 target_linux_user="no"
1067 target_darwin_user="no"
1069 ${target_cpu}-softmmu)
1070 target_softmmu="yes"
1072 ${target_cpu}-linux-user)
1073 target_user_only="yes"
1074 target_linux_user="yes"
1076 ${target_cpu}-darwin-user)
1077 target_user_only="yes"
1078 target_darwin_user="yes"
1081 echo "ERROR: Target '$target' not recognised"
1086 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1087 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1088 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1089 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1090 echo "Note that this will disable all output from the virtual graphics card"
1091 echo "except through VNC or curses."
1095 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1097 test -f $config_h && mv $config_h ${config_h}~
1099 mkdir -p $target_dir
1100 mkdir -p $target_dir/fpu
1101 mkdir -p $target_dir/tcg
1102 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1103 mkdir -p $target_dir/nwfpe
1107 # don't use ln -sf as not all "ln -sf" over write the file/link
1109 rm -f $target_dir/Makefile
1110 ln -s $source_path/Makefile.target $target_dir/Makefile
1113 echo "# Automatically generated by configure - do not modify" > $config_mak
1114 echo "/* Automatically generated by configure - do not modify */" > $config_h
1117 echo "include ../config-host.mak" >> $config_mak
1118 echo "#include \"../config-host.h\"" >> $config_h
1122 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1123 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1125 if test "$target_cpu" = "i386" ; then
1126 echo "TARGET_ARCH=i386" >> $config_mak
1127 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1128 echo "#define TARGET_I386 1" >> $config_h
1129 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
1130 echo "#define USE_KQEMU 1" >> $config_h
1132 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
1133 echo "TARGET_ARCH=arm" >> $config_mak
1134 echo "CONFIG_NO_DYNGEN_OP=yes" >> $config_mak
1135 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1136 echo "#define TARGET_ARM 1" >> $config_h
1137 echo "#define CONFIG_NO_DYNGEN_OP 1" >> $config_h
1139 elif test "$target_cpu" = "sparc" ; then
1140 echo "TARGET_ARCH=sparc" >> $config_mak
1141 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1142 echo "#define TARGET_SPARC 1" >> $config_h
1143 elif test "$target_cpu" = "sparc64" ; then
1144 echo "TARGET_ARCH=sparc64" >> $config_mak
1145 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1146 echo "#define TARGET_SPARC 1" >> $config_h
1147 echo "#define TARGET_SPARC64 1" >> $config_h
1149 elif test "$target_cpu" = "sparc32plus" ; then
1150 echo "TARGET_ARCH=sparc64" >> $config_mak
1151 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1152 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1153 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1154 echo "#define TARGET_SPARC 1" >> $config_h
1155 echo "#define TARGET_SPARC64 1" >> $config_h
1156 echo "#define TARGET_ABI32 1" >> $config_h
1157 elif test "$target_cpu" = "ppc" ; then
1158 echo "TARGET_ARCH=ppc" >> $config_mak
1159 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1160 echo "#define TARGET_PPC 1" >> $config_h
1161 elif test "$target_cpu" = "ppcemb" ; then
1162 echo "TARGET_ARCH=ppcemb" >> $config_mak
1163 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1164 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1165 echo "#define TARGET_PPC 1" >> $config_h
1166 echo "#define TARGET_PPCEMB 1" >> $config_h
1167 elif test "$target_cpu" = "ppc64" ; then
1168 echo "TARGET_ARCH=ppc64" >> $config_mak
1169 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1170 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1171 echo "#define TARGET_PPC 1" >> $config_h
1172 echo "#define TARGET_PPC64 1" >> $config_h
1173 elif test "$target_cpu" = "ppc64abi32" ; then
1174 echo "TARGET_ARCH=ppc64" >> $config_mak
1175 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1176 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1177 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1178 echo "#define TARGET_PPC 1" >> $config_h
1179 echo "#define TARGET_PPC64 1" >> $config_h
1180 echo "#define TARGET_ABI32 1" >> $config_h
1181 elif test "$target_cpu" = "x86_64" ; then
1182 echo "TARGET_ARCH=x86_64" >> $config_mak
1183 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1184 echo "#define TARGET_I386 1" >> $config_h
1185 echo "#define TARGET_X86_64 1" >> $config_h
1186 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
1187 echo "#define USE_KQEMU 1" >> $config_h
1189 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
1190 echo "TARGET_ARCH=mips" >> $config_mak
1191 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1192 echo "#define TARGET_MIPS 1" >> $config_h
1193 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1194 elif test "$target_cpu" = "mipsn32" -o "$target_cpu" = "mipsn32el" ; then
1195 echo "TARGET_ARCH=mipsn32" >> $config_mak
1196 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1197 echo "#define TARGET_MIPS 1" >> $config_h
1198 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1199 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
1200 echo "TARGET_ARCH=mips64" >> $config_mak
1201 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1202 echo "#define TARGET_MIPS 1" >> $config_h
1203 echo "#define TARGET_MIPS64 1" >> $config_h
1204 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1205 elif test "$target_cpu" = "cris" ; then
1206 echo "TARGET_ARCH=cris" >> $config_mak
1207 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1208 echo "#define TARGET_CRIS 1" >> $config_h
1209 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1210 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1211 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1212 echo "TARGET_ARCH=sh4" >> $config_mak
1213 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1214 echo "#define TARGET_SH4 1" >> $config_h
1216 elif test "$target_cpu" = "m68k" ; then
1217 echo "TARGET_ARCH=m68k" >> $config_mak
1218 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1219 echo "#define TARGET_M68K 1" >> $config_h
1221 elif test "$target_cpu" = "alpha" ; then
1222 echo "TARGET_ARCH=alpha" >> $config_mak
1223 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1224 echo "#define TARGET_ALPHA 1" >> $config_h
1226 echo "Unsupported target CPU"
1229 if test "$target_bigendian" = "yes" ; then
1230 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1231 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1233 if test "$target_softmmu" = "yes" ; then
1234 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1235 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1237 if test "$target_user_only" = "yes" ; then
1238 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1239 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1241 if test "$target_linux_user" = "yes" ; then
1242 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1243 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1245 if test "$target_darwin_user" = "yes" ; then
1246 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1247 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1250 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
1251 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1252 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1254 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1255 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1256 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1258 # 32 bit ELF loader in addition to native 64 bit loader?
1259 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1260 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1261 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1264 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1266 done # for target in $targets
1268 # build tree in object directory if source path is different from current one
1269 if test "$source_path_used" = "yes" ; then
1270 DIRS="tests tests/cris slirp audio"
1271 FILES="Makefile tests/Makefile"
1272 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1273 FILES="$FILES tests/test-mmap.c"
1274 for dir in $DIRS ; do
1277 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1278 for f in $FILES ; do
1280 ln -s $source_path/$f $f
1284 rm -f $TMPO $TMPC $TMPE $TMPS