#!/bin/sh # # qemu configure script (c) 2003 Fabrice Bellard # # set temporary file name if test ! -z "$TMPDIR" ; then TMPDIR1="${TMPDIR}" elif test ! -z "$TEMPDIR" ; then TMPDIR1="${TEMPDIR}" else TMPDIR1="/tmp" fi TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c" TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o" TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}" TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S" # default parameters prefix="" interp_prefix="/usr/gnemul/qemu-%M" static="no" cross_prefix="" cc="gcc" gcc3_search="yes" gcc3_list="gcc-3.4.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32" host_cc="gcc" ar="ar" make="make" install="install" strip="strip" cpu=`uname -m` target_list="" case "$cpu" in i386|i486|i586|i686|i86pc|BePC) cpu="i386" ;; x86_64|amd64) cpu="x86_64" ;; alpha) cpu="alpha" ;; armv*b) cpu="armv4b" ;; armv*l) cpu="armv4l" ;; cris) cpu="cris" ;; parisc|parisc64) cpu="hppa" ;; ia64) cpu="ia64" ;; m68k) cpu="m68k" ;; mips) cpu="mips" ;; mips64) cpu="mips64" ;; "Power Macintosh"|ppc|ppc64) cpu="powerpc" ;; s390*) cpu="s390" ;; sparc|sun4[cdmuv]) cpu="sparc" ;; sparc64) cpu="sparc64" ;; *) cpu="unknown" ;; esac gprof="no" bigendian="no" mingw32="no" EXESUF="" gdbstub="yes" slirp="yes" adlib="no" ac97="no" gus="no" oss="no" dsound="no" coreaudio="no" alsa="no" esd="no" fmod="no" fmod_lib="" fmod_inc="" vnc_tls="yes" bsd="no" linux="no" kqemu="no" profiler="no" cocoa="no" check_gfx="yes" check_gcc="yes" softmmu="yes" linux_user="no" darwin_user="no" build_docs="no" uname_release="" curses="yes" # OS specific targetos=`uname -s` case $targetos in CYGWIN*) mingw32="yes" OS_CFLAGS="-mno-cygwin" if [ "$cpu" = "i386" ] ; then kqemu="yes" fi ;; MINGW32*) mingw32="yes" if [ "$cpu" = "i386" ] ; then kqemu="yes" fi ;; GNU/kFreeBSD) oss="yes" if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then kqemu="yes" fi ;; FreeBSD) bsd="yes" oss="yes" if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then kqemu="yes" fi ;; NetBSD) bsd="yes" oss="yes" ;; OpenBSD) bsd="yes" oss="yes" ;; Darwin) bsd="yes" darwin="yes" darwin_user="yes" cocoa="yes" coreaudio="yes" OS_CFLAGS="-mdynamic-no-pic" OS_LDFLAGS="-framework CoreFoundation -framework IOKit" ;; SunOS) solaris="yes" make="gmake" install="ginstall" needs_libsunmath="no" solarisrev=`uname -r | cut -f2 -d.` # have to select again, because `uname -m` returns i86pc # even on an x86_64 box. solariscpu=`isainfo -k` if test "${solariscpu}" = "amd64" ; then cpu="x86_64" fi if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then if test "$solarisrev" -le 9 ; then if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then needs_libsunmath="yes" else echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" echo "libsunmath from the Sun Studio compilers tools, due to a lack of" echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" echo "Studio 11 can be downloaded from www.sun.com." exit 1 fi fi if test "$solarisrev" -ge 9 ; then kqemu="yes" fi fi if test -f /usr/include/sys/soundcard.h ; then oss=yes fi ;; *) oss="yes" linux="yes" linux_user="yes" if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then kqemu="yes" fi ;; esac if [ "$bsd" = "yes" ] ; then if [ "$darwin" != "yes" ] ; then make="gmake" fi fi # find source path source_path=`dirname "$0"` source_path_used="no" workdir=`pwd` if [ -z "$source_path" ]; then source_path=$workdir else source_path=`cd "$source_path"; pwd` fi [ -f "$workdir/vl.c" ] || source_path_used="yes" werror="no" # generate compile errors on warnings for development builds #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then #werror="yes"; #fi for opt do optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` case "$opt" in --help|-h) show_help=yes ;; --prefix=*) prefix="$optarg" ;; --interp-prefix=*) interp_prefix="$optarg" ;; --source-path=*) source_path="$optarg" source_path_used="yes" ;; --cross-prefix=*) cross_prefix="$optarg" ;; --cc=*) cc="$optarg" gcc3_search="no" ;; --host-cc=*) host_cc="$optarg" ;; --make=*) make="$optarg" ;; --install=*) install="$optarg" ;; --extra-cflags=*) CFLAGS="$optarg" ;; --extra-ldflags=*) LDFLAGS="$optarg" ;; --cpu=*) cpu="$optarg" ;; --target-list=*) target_list="$optarg" ;; --enable-gprof) gprof="yes" ;; --static) static="yes" ;; --disable-sdl) sdl="no" ;; --enable-coreaudio) coreaudio="yes" ;; --enable-alsa) alsa="yes" ;; --enable-esd) esd="yes" ;; --enable-dsound) dsound="yes" ;; --enable-fmod) fmod="yes" ;; --fmod-lib=*) fmod_lib="$optarg" ;; --fmod-inc=*) fmod_inc="$optarg" ;; --disable-vnc-tls) vnc_tls="no" ;; --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no" ;; --disable-slirp) slirp="no" ;; --enable-adlib) adlib="yes" ;; --enable-ac97) ac97="yes" ;; --enable-gus) gus="yes" ;; --disable-kqemu) kqemu="no" ;; --disable-brlapi) brlapi="no" ;; --enable-profiler) profiler="yes" ;; --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no" ;; --disable-gfx-check) check_gfx="no" ;; --disable-gcc-check) check_gcc="no" ;; --disable-system) softmmu="no" ;; --enable-system) softmmu="yes" ;; --disable-linux-user) linux_user="no" ;; --enable-linux-user) linux_user="yes" ;; --disable-darwin-user) darwin_user="no" ;; --enable-darwin-user) darwin_user="yes" ;; --enable-uname-release=*) uname_release="$optarg" ;; --sparc_cpu=*) sparc_cpu="$optarg" case $sparc_cpu in v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32" target_cpu="sparc"; cpu="sparc" ;; v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32" target_cpu="sparc"; cpu="sparc" ;; v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64" target_cpu="sparc64"; cpu="sparc64" ;; *) echo "undefined SPARC architecture. Exiting";exit 1;; esac ;; --enable-werror) werror="yes" ;; --disable-werror) werror="no" ;; --disable-curses) curses="no" ;; *) echo "ERROR: unknown option $opt"; show_help="yes" ;; esac done if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then AIOLIBS= else # Some Linux architectures (e.g. s390) don't imply -lpthread automatically. AIOLIBS="-lrt -lpthread" fi # default flags for all hosts CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing" LDFLAGS="$LDFLAGS -g" if test "$werror" = "yes" ; then CFLAGS="$CFLAGS -Werror" fi # # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit) # case "$cpu" in sparc) if test -z "$sparc_cpu" ; then ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__" ARCH_LDFLAGS="-m32" else ARCH_CFLAGS="${SP_CFLAGS}" ARCH_LDFLAGS="${SP_LDFLAGS}" fi ;; sparc64) if test -z "$sparc_cpu" ; then ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__" ARCH_LDFLAGS="-m64" else ARCH_CFLAGS="${SP_CFLAGS}" ARCH_LDFLAGS="${SP_LDFLAGS}" fi ;; s390) ARCH_CFLAGS="-march=z900" ;; i386) ARCH_CFLAGS="-m32" ARCH_LDFLAGS="-m32" ;; x86_64) ARCH_CFLAGS="-m64" ARCH_LDFLAGS="-m64" ;; esac if test x"$show_help" = x"yes" ; then cat << EOF Usage: configure [options] Options: [defaults in brackets after descriptions] EOF echo "Standard options:" echo " --help print this message" echo " --prefix=PREFIX install in PREFIX [$prefix]" echo " --interp-prefix=PREFIX where to find shared libraries, etc." echo " use %M for cpu name [$interp_prefix]" echo " --target-list=LIST set target list [$target_list]" echo "" echo "kqemu kernel acceleration support:" echo " --disable-kqemu disable kqemu support" echo "" echo "Advanced options (experts only):" echo " --source-path=PATH path of source code [$source_path]" echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]" echo " --cc=CC use C compiler CC [$cc]" echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc." echo " --make=MAKE use specified make [$make]" echo " --install=INSTALL use specified install [$install]" echo " --static enable static build [$static]" echo " --disable-werror disable compilation abort on warning" echo " --disable-sdl disable SDL" echo " --enable-cocoa enable COCOA (Mac OS X only)" echo " --enable-mingw32 enable Win32 cross compilation with mingw32" echo " --enable-adlib enable Adlib emulation" echo " --enable-ac97 enable AC97 emulation" echo " --enable-gus enable Gravis Ultrasound emulation" echo " --enable-coreaudio enable Coreaudio audio driver" echo " --enable-alsa enable ALSA audio driver" echo " --enable-esd enable EsoundD audio driver" echo " --enable-fmod enable FMOD audio driver" echo " --enable-dsound enable DirectSound audio driver" echo " --disable-brlapi disable BrlAPI" echo " --disable-vnc-tls disable TLS encryption for VNC server" echo " --disable-curses disable curses output" echo " --enable-system enable all system emulation targets" echo " --disable-system disable all system emulation targets" echo " --enable-linux-user enable all linux usermode emulation targets" echo " --disable-linux-user disable all linux usermode emulation targets" echo " --enable-darwin-user enable all darwin usermode emulation targets" echo " --disable-darwin-user disable all darwin usermode emulation targets" echo " --fmod-lib path to FMOD library" echo " --fmod-inc path to FMOD includes" echo " --enable-uname-release=R Return R for uname -r in usermode emulation" echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9" echo "" echo "NOTE: The object files are built at the place where configure is launched" exit 1 fi cc="${cross_prefix}${cc}" ar="${cross_prefix}${ar}" strip="${cross_prefix}${strip}" # check that the C compiler works. cat > $TMPC <<EOF int main(void) {} EOF if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then : C compiler works ok else echo "ERROR: \"$cc\" either does not exist or does not work" exit 1 fi if test "$mingw32" = "yes" ; then linux="no" EXESUF=".exe" oss="no" fi # Check for gcc4, error if pre-gcc4 if test "$check_gcc" = "yes" ; then cat > $TMPC <<EOF #if __GNUC__ < 4 #error gcc3 #endif int main(){return 0;} EOF if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then echo "WARNING: \"$cc\" looks like gcc 4.x" found_compat_cc="no" if test "$gcc3_search" = "yes" ; then echo "Looking for gcc 3.x" for compat_cc in $gcc3_list ; do if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then echo "Found \"$compat_cc\"" cc="$cross_prefix$compat_cc" found_compat_cc="yes" break fi done if test "$found_compat_cc" = "no" ; then echo "gcc 3.x not found!" fi fi if test "$found_compat_cc" = "no" ; then echo "QEMU is known to have problems when compiled with gcc 4.x" echo "It is recommended that you use gcc 3.x to build QEMU" echo "To use this compiler anyway, configure with --disable-gcc-check" exit 1; fi fi fi # # Solaris specific configure tool chain decisions # if test "$solaris" = "yes" ; then # # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly # override the check with --disable-gcc-check # if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then solgcc=`which $cc` if test "$solgcc" = "/usr/sfw/bin/gcc" ; then echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly." echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3" echo "or get the latest patch from SunSolve for gcc" exit 1 fi fi solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"` if test -z "$solinst" ; then echo "Solaris install program not found. Use --install=/usr/ucb/install or" echo "install fileutils from www.blastwave.org using pkg-get -i fileutils" echo "to get ginstall which is used by default (which lives in /opt/csw/bin)" exit 1 fi if test "$solinst" = "/usr/sbin/install" ; then echo "Error: Solaris /usr/sbin/install is not an appropriate install program." echo "try ginstall from the GNU fileutils available from www.blastwave.org" echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install" exit 1 fi sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"` if test -z "$sol_ar" ; then echo "Error: No path includes ar" if test -f /usr/ccs/bin/ar ; then echo "Add /usr/ccs/bin to your path and rerun configure" fi exit 1 fi fi if test -z "$target_list" ; then # these targets are portable if [ "$softmmu" = "yes" ] ; then target_list="\ i386-softmmu \ x86_64-softmmu \ arm-softmmu \ cris-softmmu \ m68k-softmmu \ mips-softmmu \ mipsel-softmmu \ mips64-softmmu \ mips64el-softmmu \ ppc-softmmu \ ppcemb-softmmu \ ppc64-softmmu \ sh4-softmmu \ sh4eb-softmmu \ sparc-softmmu \ " fi # the following are Linux specific if [ "$linux_user" = "yes" ] ; then target_list="${target_list}\ i386-linux-user \ x86_64-linux-user \ alpha-linux-user \ arm-linux-user \ armeb-linux-user \ cris-linux-user \ m68k-linux-user \ mips-linux-user \ mipsel-linux-user \ ppc-linux-user \ ppc64-linux-user \ ppc64abi32-linux-user \ sh4-linux-user \ sh4eb-linux-user \ sparc-linux-user \ sparc64-linux-user \ sparc32plus-linux-user \ " fi # the following are Darwin specific if [ "$darwin_user" = "yes" ] ; then target_list="$target_list i386-darwin-user ppc-darwin-user" fi else target_list=`echo "$target_list" | sed -e 's/,/ /g'` fi if test -z "$target_list" ; then echo "No targets enabled" exit 1 fi if test -z "$cross_prefix" ; then # --- # big/little endian test cat > $TMPC << EOF #include <inttypes.h> int main(int argc, char ** argv){ volatile uint32_t i=0x01234567; return (*((uint8_t*)(&i))) == 0x67; } EOF if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then $TMPE && bigendian="yes" else echo big/little test failed fi else # if cross compiling, cannot launch a program, so make a static guess if test "$cpu" = "armv4b" \ -o "$cpu" = "hppa" \ -o "$cpu" = "m68k" \ -o "$cpu" = "mips" \ -o "$cpu" = "mips64" \ -o "$cpu" = "powerpc" \ -o "$cpu" = "s390" \ -o "$cpu" = "sparc" \ -o "$cpu" = "sparc64"; then bigendian="yes" fi fi # host long bits test hostlongbits="32" if test "$cpu" = "x86_64" \ -o "$cpu" = "alpha" \ -o "$cpu" = "ia64" \ -o "$cpu" = "sparc64"; then hostlongbits="64" fi # check gcc options support cat > $TMPC <<EOF int main(void) { } EOF ########################################## # SDL probe sdl_too_old=no if test -z "$sdl" ; then sdl_config="sdl-config" sdl=no sdl_static=no if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then # win32 cross compilation case sdl_config="i386-mingw32msvc-sdl-config" sdl=yes else # normal SDL probe cat > $TMPC << EOF #include <SDL.h> #undef main /* We don't want SDL to override our main() */ int main( void ) { return SDL_Init (SDL_INIT_VIDEO); } EOF 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 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'` if test "$_sdlversion" -lt 121 ; then sdl_too_old=yes else if test "$cocoa" = "no" ; then sdl=yes fi fi # static link with sdl ? if test "$sdl" = "yes" ; then aa="no" `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes" sdl_static_libs=`$sdl_config --static-libs 2>/dev/null` if [ "$aa" = "yes" ] ; then sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`" fi if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then sdl_static=yes fi fi # static link fi # sdl compile test fi # cross compilation else # Make sure to disable cocoa if sdl was set if test "$sdl" = "yes" ; then cocoa="no" coreaudio="no" fi fi # -z $sdl ########################################## # VNC TLS detection if test "$vnc_tls" = "yes" ; then `pkg-config gnutls` || vnc_tls="no" fi if test "$vnc_tls" = "yes" ; then vnc_tls_cflags=`pkg-config --cflags gnutls` vnc_tls_libs=`pkg-config --libs gnutls` fi ########################################## # alsa sound support libraries if test "$alsa" = "yes" ; then cat > $TMPC << EOF #include <alsa/asoundlib.h> int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); } EOF if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lasound 2> /dev/null ; then : else echo echo "Error: Could not find alsa" echo "Make sure to have the alsa libs and headers installed." echo exit 1 fi fi ########################################## # BrlAPI probe if test -z "$brlapi" ; then brlapi=no cat > $TMPC << EOF #include <brlapi.h> int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } EOF if $cc -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /tmp/qemu-$$-brlapi.log ; then brlapi=yes fi # brlapi compile test fi # -z $brlapi ########################################## # curses probe if test "$curses" = "yes" ; then curses=no cat > $TMPC << EOF #include <curses.h> int main(void) { return curses_version(); } EOF if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then curses=yes fi fi # test "$curses" # Check if tools are available to build documentation. if [ -x "`which texi2html 2>/dev/null`" ] && \ [ -x "`which pod2man 2>/dev/null`" ]; then build_docs="yes" fi if test "$mingw32" = "yes" ; then if test -z "$prefix" ; then prefix="/c/Program Files/Qemu" fi mansuffix="" datasuffix="" docsuffix="" binsuffix="" else if test -z "$prefix" ; then prefix="/usr/local" fi mansuffix="/share/man" datasuffix="/share/qemu" docsuffix="/share/doc/qemu" binsuffix="/bin" fi echo "Install prefix $prefix" echo "BIOS directory $prefix$datasuffix" echo "binary directory $prefix$binsuffix" if test "$mingw32" = "no" ; then echo "Manual directory $prefix$mansuffix" echo "ELF interp prefix $interp_prefix" fi echo "Source path $source_path" echo "C compiler $cc" echo "Host C compiler $host_cc" echo "ARCH_CFLAGS $ARCH_CFLAGS" echo "make $make" echo "install $install" echo "host CPU $cpu" echo "host big endian $bigendian" echo "target list $target_list" echo "gprof enabled $gprof" echo "profiler $profiler" echo "static build $static" echo "-Werror enabled $werror" if test "$darwin" = "yes" ; then echo "Cocoa support $cocoa" fi echo "SDL support $sdl" if test "$sdl" != "no" ; then echo "SDL static link $sdl_static" fi echo "curses support $curses" echo "mingw32 support $mingw32" echo "Adlib support $adlib" echo "AC97 support $ac97" echo "GUS support $gus" echo "CoreAudio support $coreaudio" echo "ALSA support $alsa" echo "EsounD support $esd" echo "DSound support $dsound" if test "$fmod" = "yes"; then if test -z $fmod_lib || test -z $fmod_inc; then echo echo "Error: You must specify path to FMOD library and headers" echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so" echo exit 1 fi fmod_support=" (lib='$fmod_lib' include='$fmod_inc')" else fmod_support="" fi echo "FMOD support $fmod $fmod_support" echo "OSS support $oss" echo "VNC TLS support $vnc_tls" if test "$vnc_tls" = "yes" ; then echo " TLS CFLAGS $vnc_tls_cflags" echo " TLS LIBS $vnc_tls_libs" fi if test -n "$sparc_cpu"; then echo "Target Sparc Arch $sparc_cpu" fi echo "kqemu support $kqemu" echo "brlapi support $brlapi" echo "Documentation $build_docs" [ ! -z "$uname_release" ] && \ echo "uname -r $uname_release" if test $sdl_too_old = "yes"; then echo "-> Your SDL version is too old - please upgrade to have SDL support" fi if [ -s /tmp/qemu-$$-sdl-config.log ]; then echo "The error log from compiling the libSDL test is: " cat /tmp/qemu-$$-sdl-config.log fi rm -f /tmp/qemu-$$-sdl-config.log #if test "$sdl_static" = "no"; then # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output" #fi config_mak="config-host.mak" config_h="config-host.h" #echo "Creating $config_mak and $config_h" test -f $config_h && mv $config_h ${config_h}~ echo "# Automatically generated by configure - do not modify" > $config_mak echo "# Configured with: $0 $@" >> $config_mak echo "/* Automatically generated by configure - do not modify */" > $config_h echo "prefix=$prefix" >> $config_mak echo "bindir=\${prefix}$binsuffix" >> $config_mak echo "mandir=\${prefix}$mansuffix" >> $config_mak echo "datadir=\${prefix}$datasuffix" >> $config_mak echo "docdir=\${prefix}$docsuffix" >> $config_mak echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h echo "MAKE=$make" >> $config_mak echo "INSTALL=$install" >> $config_mak echo "CC=$cc" >> $config_mak echo "HOST_CC=$host_cc" >> $config_mak echo "AR=$ar" >> $config_mak echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak # XXX: only use CFLAGS and LDFLAGS ? # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross # compilation of dyngen tool (useful for win32 build on Linux host) echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak echo "CFLAGS=$CFLAGS" >> $config_mak echo "LDFLAGS=$LDFLAGS" >> $config_mak echo "EXESUF=$EXESUF" >> $config_mak echo "AIOLIBS=$AIOLIBS" >> $config_mak case "$cpu" in i386) echo "ARCH=i386" >> $config_mak echo "#define HOST_I386 1" >> $config_h ;; x86_64) echo "ARCH=x86_64" >> $config_mak echo "#define HOST_X86_64 1" >> $config_h ;; alpha) echo "ARCH=alpha" >> $config_mak echo "#define HOST_ALPHA 1" >> $config_h ;; armv4b) echo "ARCH=arm" >> $config_mak echo "#define HOST_ARM 1" >> $config_h ;; armv4l) echo "ARCH=arm" >> $config_mak echo "#define HOST_ARM 1" >> $config_h ;; cris) echo "ARCH=cris" >> $config_mak echo "#define HOST_CRIS 1" >> $config_h ;; hppa) echo "ARCH=hppa" >> $config_mak echo "#define HOST_HPPA 1" >> $config_h ;; ia64) echo "ARCH=ia64" >> $config_mak echo "#define HOST_IA64 1" >> $config_h ;; m68k) echo "ARCH=m68k" >> $config_mak echo "#define HOST_M68K 1" >> $config_h ;; mips) echo "ARCH=mips" >> $config_mak echo "#define HOST_MIPS 1" >> $config_h ;; mips64) echo "ARCH=mips64" >> $config_mak echo "#define HOST_MIPS64 1" >> $config_h ;; powerpc) echo "ARCH=ppc" >> $config_mak echo "#define HOST_PPC 1" >> $config_h ;; s390) echo "ARCH=s390" >> $config_mak echo "#define HOST_S390 1" >> $config_h ;; sparc) echo "ARCH=sparc" >> $config_mak echo "#define HOST_SPARC 1" >> $config_h ;; sparc64) echo "ARCH=sparc64" >> $config_mak echo "#define HOST_SPARC64 1" >> $config_h ;; *) echo "Unsupported CPU = $cpu" exit 1 ;; esac if test "$bigendian" = "yes" ; then echo "WORDS_BIGENDIAN=yes" >> $config_mak echo "#define WORDS_BIGENDIAN 1" >> $config_h fi echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h if test "$mingw32" = "yes" ; then echo "CONFIG_WIN32=yes" >> $config_mak echo "#define CONFIG_WIN32 1" >> $config_h else cat > $TMPC << EOF #include <byteswap.h> int main(void) { return bswap_32(0); } EOF if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then echo "#define HAVE_BYTESWAP_H 1" >> $config_h fi fi if test "$darwin" = "yes" ; then echo "CONFIG_DARWIN=yes" >> $config_mak echo "#define CONFIG_DARWIN 1" >> $config_h fi if test "$solaris" = "yes" ; then echo "CONFIG_SOLARIS=yes" >> $config_mak echo "#define HOST_SOLARIS $solarisrev" >> $config_h if test "$needs_libsunmath" = "yes" ; then echo "NEEDS_LIBSUNMATH=yes" >> $config_mak echo "#define NEEDS_LIBSUNMATH 1" >> $config_h fi fi if test -n "$sparc_cpu"; then echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h fi if test "$gdbstub" = "yes" ; then echo "CONFIG_GDBSTUB=yes" >> $config_mak echo "#define CONFIG_GDBSTUB 1" >> $config_h fi if test "$gprof" = "yes" ; then echo "TARGET_GPROF=yes" >> $config_mak echo "#define HAVE_GPROF 1" >> $config_h fi if test "$static" = "yes" ; then echo "CONFIG_STATIC=yes" >> $config_mak echo "#define CONFIG_STATIC 1" >> $config_h fi if test $profiler = "yes" ; then echo "#define CONFIG_PROFILER 1" >> $config_h fi if test "$slirp" = "yes" ; then echo "CONFIG_SLIRP=yes" >> $config_mak echo "#define CONFIG_SLIRP 1" >> $config_h fi if test "$adlib" = "yes" ; then echo "CONFIG_ADLIB=yes" >> $config_mak echo "#define CONFIG_ADLIB 1" >> $config_h fi if test "$ac97" = "yes" ; then echo "CONFIG_AC97=yes" >> $config_mak echo "#define CONFIG_AC97 1" >> $config_h fi if test "$gus" = "yes" ; then echo "CONFIG_GUS=yes" >> $config_mak echo "#define CONFIG_GUS 1" >> $config_h fi if test "$oss" = "yes" ; then echo "CONFIG_OSS=yes" >> $config_mak echo "#define CONFIG_OSS 1" >> $config_h fi if test "$coreaudio" = "yes" ; then echo "CONFIG_COREAUDIO=yes" >> $config_mak echo "#define CONFIG_COREAUDIO 1" >> $config_h fi if test "$alsa" = "yes" ; then echo "CONFIG_ALSA=yes" >> $config_mak echo "#define CONFIG_ALSA 1" >> $config_h fi if test "$esd" = "yes" ; then echo "CONFIG_ESD=yes" >> $config_mak echo "#define CONFIG_ESD 1" >> $config_h fi if test "$dsound" = "yes" ; then echo "CONFIG_DSOUND=yes" >> $config_mak echo "#define CONFIG_DSOUND 1" >> $config_h fi if test "$fmod" = "yes" ; then echo "CONFIG_FMOD=yes" >> $config_mak echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak echo "#define CONFIG_FMOD 1" >> $config_h fi if test "$vnc_tls" = "yes" ; then echo "CONFIG_VNC_TLS=yes" >> $config_mak echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak echo "#define CONFIG_VNC_TLS 1" >> $config_h fi qemu_version=`head $source_path/VERSION` echo "VERSION=$qemu_version" >>$config_mak echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h echo "SRC_PATH=$source_path" >> $config_mak if [ "$source_path_used" = "yes" ]; then echo "VPATH=$source_path" >> $config_mak fi echo "TARGET_DIRS=$target_list" >> $config_mak if [ "$build_docs" = "yes" ] ; then echo "BUILD_DOCS=yes" >> $config_mak fi if test "$static" = "yes"; then sdl1=$sdl_static else sdl1=$sdl fi if test "$sdl1" = "yes" ; then echo "#define CONFIG_SDL 1" >> $config_h echo "CONFIG_SDL=yes" >> $config_mak if test "$target_softmmu" = "no" -o "$static" = "yes"; then echo "SDL_LIBS=$sdl_static_libs" >> $config_mak else echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak fi if [ "${aa}" = "yes" ] ; then echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak else echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak fi fi if test "$cocoa" = "yes" ; then echo "#define CONFIG_COCOA 1" >> $config_h echo "CONFIG_COCOA=yes" >> $config_mak fi if test "$curses" = "yes" ; then echo "#define CONFIG_CURSES 1" >> $config_h echo "CONFIG_CURSES=yes" >> $config_mak echo "CURSES_LIBS=-lcurses" >> $config_mak fi if test "$brlapi" = "yes" ; then echo "CONFIG_BRLAPI=yes" >> $config_mak echo "#define CONFIG_BRLAPI 1" >> $config_h echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak fi # XXX: suppress that if [ "$bsd" = "yes" ] ; then echo "#define O_LARGEFILE 0" >> $config_h echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h echo "#define _BSD 1" >> $config_h fi echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h tools= if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then tools="qemu-img\$(EXESUF) $tools" fi echo "TOOLS=$tools" >> $config_mak test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h for target in $target_list; do target_dir="$target" config_mak=$target_dir/config.mak config_h=$target_dir/config.h target_cpu=`echo $target | cut -d '-' -f 1` target_bigendian="no" [ "$target_cpu" = "armeb" ] && target_bigendian=yes [ "$target_cpu" = "m68k" ] && target_bigendian=yes [ "$target_cpu" = "mips" ] && target_bigendian=yes [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes [ "$target_cpu" = "mips64" ] && target_bigendian=yes [ "$target_cpu" = "ppc" ] && target_bigendian=yes [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes [ "$target_cpu" = "ppc64" ] && target_bigendian=yes [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes [ "$target_cpu" = "sparc" ] && target_bigendian=yes [ "$target_cpu" = "sparc64" ] && target_bigendian=yes [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes target_softmmu="no" target_user_only="no" target_linux_user="no" target_darwin_user="no" case "$target" in ${target_cpu}-softmmu) target_softmmu="yes" ;; ${target_cpu}-linux-user) target_user_only="yes" target_linux_user="yes" ;; ${target_cpu}-darwin-user) target_user_only="yes" target_darwin_user="yes" ;; *) echo "ERROR: Target '$target' not recognised" exit 1 ;; esac if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \ -a "$sdl" = "no" -a "$cocoa" = "no" ; then echo "ERROR: QEMU requires SDL or Cocoa for graphical output" echo "To build QEMU without graphical output configure with --disable-gfx-check" echo "Note that this will disable all output from the virtual graphics card" echo "except through VNC or curses." exit 1; fi #echo "Creating $config_mak, $config_h and $target_dir/Makefile" test -f $config_h && mv $config_h ${config_h}~ mkdir -p $target_dir mkdir -p $target_dir/fpu mkdir -p $target_dir/tcg if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then mkdir -p $target_dir/nwfpe fi # # don't use ln -sf as not all "ln -sf" over write the file/link # rm -f $target_dir/Makefile ln -s $source_path/Makefile.target $target_dir/Makefile echo "# Automatically generated by configure - do not modify" > $config_mak echo "/* Automatically generated by configure - do not modify */" > $config_h echo "include ../config-host.mak" >> $config_mak echo "#include \"../config-host.h\"" >> $config_h bflt="no" elfload32="no" interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"` echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h case "$target_cpu" in i386) echo "TARGET_ARCH=i386" >> $config_mak echo "#define TARGET_ARCH \"i386\"" >> $config_h echo "#define TARGET_I386 1" >> $config_h if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" then echo "#define USE_KQEMU 1" >> $config_h fi ;; x86_64) echo "TARGET_ARCH=x86_64" >> $config_mak echo "#define TARGET_ARCH \"x86_64\"" >> $config_h echo "#define TARGET_I386 1" >> $config_h echo "#define TARGET_X86_64 1" >> $config_h if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" then echo "#define USE_KQEMU 1" >> $config_h fi ;; alpha) echo "TARGET_ARCH=alpha" >> $config_mak echo "#define TARGET_ARCH \"alpha\"" >> $config_h echo "#define TARGET_ALPHA 1" >> $config_h ;; arm|armeb) echo "TARGET_ARCH=arm" >> $config_mak echo "CONFIG_NO_DYNGEN_OP=yes" >> $config_mak echo "#define TARGET_ARCH \"arm\"" >> $config_h echo "#define TARGET_ARM 1" >> $config_h echo "#define CONFIG_NO_DYNGEN_OP 1" >> $config_h bflt="yes" ;; cris) echo "TARGET_ARCH=cris" >> $config_mak echo "#define TARGET_ARCH \"cris\"" >> $config_h echo "#define TARGET_CRIS 1" >> $config_h echo "CONFIG_SOFTFLOAT=yes" >> $config_mak echo "#define CONFIG_SOFTFLOAT 1" >> $config_h ;; m68k) echo "TARGET_ARCH=m68k" >> $config_mak echo "#define TARGET_ARCH \"m68k\"" >> $config_h echo "#define TARGET_M68K 1" >> $config_h bflt="yes" ;; mips|mipsel) echo "TARGET_ARCH=mips" >> $config_mak echo "#define TARGET_ARCH \"mips\"" >> $config_h echo "#define TARGET_MIPS 1" >> $config_h echo "#define TARGET_ABI_MIPSO32 1" >> $config_h ;; mipsn32|mipsn32el) echo "TARGET_ARCH=mipsn32" >> $config_mak echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h echo "#define TARGET_MIPS 1" >> $config_h echo "#define TARGET_ABI_MIPSN32 1" >> $config_h ;; mips64|mips64el) echo "TARGET_ARCH=mips64" >> $config_mak echo "#define TARGET_ARCH \"mips64\"" >> $config_h echo "#define TARGET_MIPS 1" >> $config_h echo "#define TARGET_MIPS64 1" >> $config_h echo "#define TARGET_ABI_MIPSN64 1" >> $config_h ;; ppc) echo "TARGET_ARCH=ppc" >> $config_mak echo "#define TARGET_ARCH \"ppc\"" >> $config_h echo "#define TARGET_PPC 1" >> $config_h ;; ppcemb) echo "TARGET_ARCH=ppcemb" >> $config_mak echo "TARGET_ABI_DIR=ppc" >> $config_mak echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h echo "#define TARGET_PPC 1" >> $config_h echo "#define TARGET_PPCEMB 1" >> $config_h ;; ppc64) echo "TARGET_ARCH=ppc64" >> $config_mak echo "TARGET_ABI_DIR=ppc" >> $config_mak echo "#define TARGET_ARCH \"ppc64\"" >> $config_h echo "#define TARGET_PPC 1" >> $config_h echo "#define TARGET_PPC64 1" >> $config_h ;; ppc64abi32) echo "TARGET_ARCH=ppc64" >> $config_mak echo "TARGET_ABI_DIR=ppc" >> $config_mak echo "TARGET_ARCH2=ppc64abi32" >> $config_mak echo "#define TARGET_ARCH \"ppc64\"" >> $config_h echo "#define TARGET_PPC 1" >> $config_h echo "#define TARGET_PPC64 1" >> $config_h echo "#define TARGET_ABI32 1" >> $config_h ;; sh4|sh4eb) echo "TARGET_ARCH=sh4" >> $config_mak echo "#define TARGET_ARCH \"sh4\"" >> $config_h echo "#define TARGET_SH4 1" >> $config_h bflt="yes" ;; sparc) echo "TARGET_ARCH=sparc" >> $config_mak echo "#define TARGET_ARCH \"sparc\"" >> $config_h echo "#define TARGET_SPARC 1" >> $config_h ;; sparc64) echo "TARGET_ARCH=sparc64" >> $config_mak echo "#define TARGET_ARCH \"sparc64\"" >> $config_h echo "#define TARGET_SPARC 1" >> $config_h echo "#define TARGET_SPARC64 1" >> $config_h elfload32="yes" ;; sparc32plus) echo "TARGET_ARCH=sparc64" >> $config_mak echo "TARGET_ABI_DIR=sparc" >> $config_mak echo "TARGET_ARCH2=sparc32plus" >> $config_mak echo "#define TARGET_ARCH \"sparc64\"" >> $config_h echo "#define TARGET_SPARC 1" >> $config_h echo "#define TARGET_SPARC64 1" >> $config_h echo "#define TARGET_ABI32 1" >> $config_h ;; *) echo "Unsupported target CPU" exit 1 ;; esac if test "$target_bigendian" = "yes" ; then echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h fi if test "$target_softmmu" = "yes" ; then echo "CONFIG_SOFTMMU=yes" >> $config_mak echo "#define CONFIG_SOFTMMU 1" >> $config_h fi if test "$target_user_only" = "yes" ; then echo "CONFIG_USER_ONLY=yes" >> $config_mak echo "#define CONFIG_USER_ONLY 1" >> $config_h fi if test "$target_linux_user" = "yes" ; then echo "CONFIG_LINUX_USER=yes" >> $config_mak echo "#define CONFIG_LINUX_USER 1" >> $config_h fi if test "$target_darwin_user" = "yes" ; then echo "CONFIG_DARWIN_USER=yes" >> $config_mak echo "#define CONFIG_DARWIN_USER 1" >> $config_h fi if test "$target_cpu" = "arm" \ -o "$target_cpu" = "armeb" \ -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" \ -o "$target_cpu" = "sparc" \ -o "$target_cpu" = "sparc64" \ -o "$target_cpu" = "sparc32plus"; then echo "CONFIG_SOFTFLOAT=yes" >> $config_mak echo "#define CONFIG_SOFTFLOAT 1" >> $config_h fi if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then echo "TARGET_HAS_BFLT=yes" >> $config_mak echo "#define TARGET_HAS_BFLT 1" >> $config_h fi # 32 bit ELF loader in addition to native 64 bit loader? if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h fi test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h done # for target in $targets # build tree in object directory if source path is different from current one if test "$source_path_used" = "yes" ; then DIRS="tests tests/cris slirp audio" FILES="Makefile tests/Makefile" FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit" FILES="$FILES tests/test-mmap.c" for dir in $DIRS ; do mkdir -p $dir done # remove the link and recreate it, as not all "ln -sf" overwrite the link for f in $FILES ; do rm -f $f ln -s $source_path/$f $f done fi rm -f $TMPO $TMPC $TMPE $TMPS