2010-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
[mono.git] / configure.in
index c8be62612ada2b10955c3beacbd950e73ff27461..e4ec051658ca47b5f68112f55aa6a3f62928abb9 100644 (file)
@@ -9,7 +9,7 @@ AM_CONFIG_HEADER(config.h)
 AM_INIT_AUTOMAKE(mono,2.7)
 AM_MAINTAINER_MODE
 
-API_VER=1.0
+API_VER=2.0
 AC_SUBST(API_VER)
 
 AC_PROG_LN_S
@@ -20,7 +20,6 @@ case $host_os in
 *cygwin* ) LN_S='cp -p';;
 esac
 
-
 dnl
 dnl libgc checks
 dnl
@@ -85,7 +84,9 @@ case "$host" in
                host_win32=yes
                if test "x$cross_compiling" = "xno"; then
                        target_win32=yes
-                       AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32])
+                       if test "x$host" == "x$target"; then
+                               AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32])
+                       fi
                        CC="gcc -mno-cygwin -g"
                        CXX="g++ -mno-cygwin -g"
                        # So libgc configure gets -mno-cygwin
@@ -95,7 +96,7 @@ case "$host" in
                HOST_CC="gcc"
                # Windows 2000 is required that includes Internet Explorer 5.01
                CPPFLAGS="$CPPFLAGS -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0501 -D_UNICODE -DUNICODE -DWIN32_THREADS -DFD_SETSIZE=1024"
-               LDFLAGS="$LDFLAGS -lmswsock"
+               LDFLAGS="$LDFLAGS -lmswsock -lws2_32 -lole32 -loleaut32 -lpsapi -lversion -ladvapi32 -lwinmm"
                libmono_cflags="-mno-cygwin -mms-bitfields -mwindows"
                libmono_ldflags="-mno-cygwin -mms-bitfields -mwindows"
                libdl=
@@ -202,6 +203,7 @@ case "$host" in
                with_tls=pthread
                has_dtrace=yes
                use_sigposix=yes
+               enable_solaris_tar_check=yes
                ;;
        *-*-darwin*)
                parallel_mark="Disabled_Currently_Hangs_On_MacOSX"
@@ -226,6 +228,19 @@ case "$host" in
                dnl its gcc defaults to 64-bit mode.  They have also deprecated the usage of ucontext
                dnl we need to set some flags to build our 32-bit binaries on 10.6 properly
                case "$host" in
+                       dnl MacPorts config.guess reports as this
+                       x86_64-*-darwin10*)
+                               BROKEN_DARWIN_FLAGS="-arch i386 -D_XOPEN_SOURCE -mmacosx-version-min=10.5"
+                               CPPFLAGS="$CPPFLAGS $BROKEN_DARWIN_FLAGS"
+                               CFLAGS="$CFLAGS $BROKEN_DARWIN_FLAGS"
+                               CXXFLAGS="$CXXFLAGS $BROKEN_DARWIN_FLAGS"
+                               CCASFLAGS="$CCASFLAGS $BROKEN_DARWIN_FLAGS"
+                               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC $BROKEN_DARWIN_FLAGS"
+                               CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC $BROKEN_DARWIN_FLAGS"
+                               CPPFLAGS_FOR_EGLIB="$CPPFLAGS_FOR_EGLIB $BROKEN_DARWIN_FLAGS"
+                               CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB $BROKEN_DARWIN_FLAGS"
+                               ;;
+                       dnl Snow Leopard config.guess reports as this
                        i*86-*-darwin10*)
                                BROKEN_DARWIN_FLAGS="-arch i386 -D_XOPEN_SOURCE -mmacosx-version-min=10.5"
                                CPPFLAGS="$CPPFLAGS $BROKEN_DARWIN_FLAGS"
@@ -259,6 +274,7 @@ AM_CONDITIONAL(PLATFORM_SIGPOSIX, test x$use_sigposix = xyes)
 
 AC_CHECK_TOOL(CC, gcc, gcc)
 AC_PROG_CC
+AC_CHECK_TOOL(CXX, g++, g++)
 AC_PROG_CXX
 AM_PROG_AS
 AM_PROG_CC_STDC
@@ -271,6 +287,16 @@ dnl We should use AM_PROG_AS, but it's not available on automake/aclocal 1.4
 AC_SUBST(CCAS)
 AC_SUBST(CCASFLAGS)
 
+# AC_PROG_CXX helpfully sets CXX to g++ even if no c++ compiler is found so check
+# GXX instead. See http://lists.gnu.org/archive/html/bug-autoconf/2002-04/msg00056.html
+if test "x$CXX" = "xg++"; then
+       if test "x$GXX" != "xyes"; then
+               # automake/libtool is so broken, it requires g++ even if the c++ sources
+               # are inside automake conditionals
+               AC_MSG_ERROR([You need to install g++])
+       fi
+fi
+
 AC_CHECK_PROG(BISON, bison,yes,no)
 if test "x$BISON" = "xno";
 then
@@ -415,7 +441,7 @@ AC_ARG_ENABLE(solaris-tar-check,
 [  --disable-solaris-tar-check    disable solaris tar check],
    do_solaris_tar_check=no, do_solaris_tar_check=yes)
 
-if test x"$do_solaris_tar_check" = xyes; then
+if test x"$do_solaris_tar_check" = xyes -a x"$enable_solaris_tar_check" = xyes; then
        AC_MSG_CHECKING(integrity of package)
        if test -f $srcdir/$mcsdir/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapTypeMapper.cs
        then
@@ -494,6 +520,9 @@ AC_ARG_WITH([glib],
 
 eglib_dir=
 
+ac_configure_args="$ac_configure_args \"CPPFLAGS_FOR_EGLIB=$EGLIB_CPPFLAGS\" \"CFLAGS_FOR_EGLIB=$CFLAGS_FOR_EGLIB\""
+AC_CONFIG_SUBDIRS(eglib)
+
 case $with_glib in
 embedded) 
   GLIB_CFLAGS='-I$(top_srcdir)/eglib/src -I$(top_builddir)/eglib/src'
@@ -503,8 +532,6 @@ embedded)
   GMODULE_CFLAGS="$GLIB_CFLAGS"
   GMODULE_LIBS="$GLIB_LIBS"
   eglib_dir=eglib
-  ac_configure_args="$ac_configure_args \"CPPFLAGS_FOR_EGLIB=$EGLIB_CPPFLAGS\" \"CFLAGS_FOR_EGLIB=$CFLAGS_FOR_EGLIB\""
-  AC_CONFIG_SUBDIRS(eglib)
   ;;
 system)
   if test "x$cross_compiling" = "xyes"; then
@@ -610,6 +637,12 @@ if test "x$with_xen_opt" = "xyes"; then
 fi
 
 AC_ARG_ENABLE(quiet-build, [  --enable-quiet-build  Enable quiet runtime build (on by default)], enable_quiet_build=$enableval, enable_quiet_build=yes)
+AC_ARG_ENABLE(small-config, [  --enable-small-config Enable tweaks to reduce requirements (and capabilities)], enable_small_config=$enableval, enable_small_config=no)
+
+if test x$enable_small_config = xyes; then
+       AC_DEFINE(MONO_SMALL_CONFIG,1,[Reduce runtime requirements (and capabilities)])
+       CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DSMALL_CONFIG"
+fi
 
 DISABLED_FEATURES=none
 
@@ -1909,7 +1942,11 @@ if test "x$enable_llvm" = "xyes"; then
          AC_MSG_ERROR([llvm-config not found.])
    fi
 
-   LLVM_CXXFLAGS=`$LLVM_CONFIG --cflags`
+   # The output of --cflags seems to include optimizations flags too
+   LLVM_CFLAGS=`$LLVM_CONFIG --cflags | sed -e 's/-O2//g' | sed -e 's/-O0//g' | sed -e 's/-fomit-frame-pointer//g' | sed -e 's/-fPIC//g'`
+   # LLVM is compiled with -fno-rtti, so we need this too, since our classes inherit
+   # from LLVM classes.
+   LLVM_CXXFLAGS="`$LLVM_CONFIG --cxxflags` -fno-rtti"
    LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
    LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit x86codegen`
    LLVM_LIBS="$LLVM_LDFLAGS $LLVM_LIBS -lstdc++"
@@ -1926,6 +1963,7 @@ if test "x$enable_llvm" = "xyes"; then
    # llvm's config.h
    LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_MAJOR_VERSION=$major_version -DLLVM_MINOR_VERSION=$minor_version"
 
+   AC_SUBST(LLVM_CFLAGS)
    AC_SUBST(LLVM_CXXFLAGS)
    AC_SUBST(LLVM_LIBS)
    AC_SUBST(LLVM_LDFLAGS)
@@ -2303,16 +2341,19 @@ if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then
 fi
 
 mono_debugger_supported=no
-if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86" -o "x$TARGET" = "xALPHA"; then
-       if test x$use_included_gc = xyes; then
-               case "$host" in
-               *-*-*linux*)
-                       mono_debugger_supported=yes
-                       ;;
-               *86-apple-darwin*)
-                       mono_debugger_supported=yes
-                       ;;              
-               esac
+AC_ARG_ENABLE(mono-debugger, [  --disable-mono-debugger disable support for the mdb debugger], try_mono_debugger=$enableval, try_mono_debugger=yes)
+if test "x$try_mono_debugger" = "xyes"; then
+       if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86" -o "x$TARGET" = "xALPHA"; then
+               if test x$use_included_gc = xyes; then
+                       case "$host" in
+                       *-*-*linux*)
+                               mono_debugger_supported=yes
+                               ;;
+                       *86-apple-darwin*)
+                               mono_debugger_supported=yes
+                               ;;              
+                       esac
+               fi
        fi
 fi
 
@@ -2380,8 +2421,7 @@ case "x$gc" in
 esac
 
 #AC_ARG_WITH(profile2,  [  --with-profile2=yes,no          If you want to install the 2.0 FX (defaults to yes)],                 [], [with_profile2=yes])
-AC_ARG_WITH(profile4,  [  --with-profile4=yes,no          If you want to install the 4.0 FX (defaults to no)],                  [], [with_profile4=no])
-AC_ARG_WITH(moonlight, [  --with-moonlight=yes,no         If you want to build the Moonlight 2.1 assemblies (defaults to yes)], [], [with_moonlight=yes])
+AC_ARG_WITH(profile4,  [  --with-profile4=yes,no          If you want to install the 4.0 FX (defaults to yes)],                  [], [with_profile4=yes])
 AC_ARG_WITH(monotouch, [  --with-monotouch=yes,no         If you want to build the raw MonoTouch 2.1 assemblies (defaults to no)], [], [with_monotouch=no])
 
 OPROFILE=no
@@ -2414,11 +2454,24 @@ AC_ARG_WITH(mcs_docs,[  --with-mcs-docs=yes,no         If you want to build the
        fi
 ])
 
+MOONLIGHT=no
+AC_ARG_WITH(moonlight, [  --with-moonlight=yes,no         If you want to build Mono for Moonlight (defaults to no - the resulting mono build is useless for anything but moonlight)],[
+       if test x$with_moonlight = xyes; then
+               MOONLIGHT=yes
+               AC_DEFINE(MOONLIGHT,1,[Building for Moonlight])
+       fi
+])
+
+
+
 dnl
 dnl Consistency settings
 dnl
 if test x$cross_compiling = xyes -o x$enable_mcs_build = xno; then
    DISABLE_MCS_DOCS=yes
+fi
+
+if test x$DISABLE_MCS_DOCS = xyes; then
    docs_dir=""
 else
    docs_dir=docs
@@ -2431,7 +2484,7 @@ AC_SUBST(OPROFILE_LIBS)
 
 libmono_ldflags="$libmono_ldflags $LIBS"
 
-AM_CONDITIONAL(INSTALL_2_1, [test "x$with_moonlight" = xyes])
+AM_CONDITIONAL(MOONLIGHT, [test "x$with_moonlight" = xyes])
 AM_CONDITIONAL(INSTALL_4_0, [test "x$with_profile4" = xyes])
 AM_CONDITIONAL(INSTALL_MONOTOUCH, [test "x$with_monotouch" = xyes])
 
@@ -2482,7 +2535,7 @@ if test x$host_win32 = xyes; then
   if test "x$cross_compiling" = "xno"; then
     mono_cfg_dir=`cygpath -w -a $mono_cfg_root`\\etc
   else
-    mono_cfg_dir=`echo $mono_cfg_root | tr '/' '\\\'`\\etc
+    mono_cfg_dir=`echo $mono_cfg_root | tr '/' '\\'`\\etc
   fi
 else
   mono_cfg_dir=$mono_cfg_root/etc
@@ -2645,7 +2698,7 @@ data/net_2_0/Makefile
 data/net_4_0/Makefile
 data/net_2_0/Browsers/Makefile
 data/mint.pc
-data/mono.pc
+data/mono-2.pc
 data/mono-cairo.pc
 data/mono-nunit.pc
 data/mono-options.pc
@@ -2659,11 +2712,13 @@ data/cecil.pc
 data/system.web.extensions_1.0.pc
 data/system.web.extensions.design_1.0.pc
 data/system.web.mvc.pc
+data/system.web.mvc2.pc
 samples/Makefile
 support/Makefile
 data/config
 tools/Makefile
 tools/locale-builder/Makefile
+tools/sgen/Makefile
 runtime/Makefile
 msvc/Makefile
 po/Makefile
@@ -2741,15 +2796,16 @@ fi
       echo 'MCS_FLAGS = $(PLATFORM_DEBUG_FLAGS)' >> $srcdir/$olivedir/build/config.make
       echo "RUNTIME = $mono_build_root/runtime/mono-wrapper" >> $srcdir/$olivedir/build/config.make
       echo "MONO_VERSION = $myver" >> $srcdir/$olivedir/build/config.make
-      if test x$with_moonlight = xyes; then
-        echo "WITH_MOONLIGHT = yes" >> $srcdir/$olivedir/build/config.make
-      fi
     fi
   fi
 
   if test x$DISABLE_MCS_DOCS = xyes; then
        echo "DISABLE_MCS_DOCS = yes" >> $srcdir/$mcsdir/build/config.make
   fi
+
+  if test x$with_moonlight = xyes; then
+       echo "MOONLIGHT = 1" >> $srcdir/$mcsdir/build/config.make
+  fi
 )
 
 libgdiplus_msg=${libgdiplus_loc:-assumed to be installed}
@@ -2758,24 +2814,25 @@ echo "
         mcs source:    $mcs_topdir
         olive source:  $olive_topdir
 
+   Engine:
        GC:            $gc
        GLIB:          $with_glib
        TLS:           $with_tls
        SIGALTSTACK:   $with_sigaltstack
        Engine:        $jit_status
-       Moon Profile:  $with_moonlight
-       4.0 Alpha:     $with_profile4
-       MonoTouch:     $with_monotouch
-       JNI support:   $jdk_headers_found
-       libgdiplus:    $libgdiplus_msg
-       zlib:          $zlib_msg
        oprofile:      $OPROFILE
        BigArrays:     $enable_big_arrays
        DTrace:        $enable_dtrace
        Parallel Mark: $enable_parallel_mark
        LLVM Back End: $enable_llvm
-       $disabled
 
+    Libraries:
+       Moon Profile:  $with_moonlight
+       MonoTouch:     $with_monotouch
+       JNI support:   $jdk_headers_found
+       libgdiplus:    $libgdiplus_msg
+       zlib:          $zlib_msg
+       $disabled
 "
 if test x$with_static_mono = xno -a "x$host_win32" != "xyes"; then
    AC_MSG_WARN(Turning off static Mono is a risk, you might run into unexpected bugs)