* xbuild/Microsoft.Common.targets (BuildingResources): Refactor to
[mono.git] / configure.in
index 71395547d34c9329083442a5bcb4d666de516800..1bf858bcbf97244b29172cbc35beea004c33769f 100644 (file)
@@ -77,7 +77,7 @@ esac
 host_win32=no
 target_win32=no
 case "$host" in
-       *-*-mingw*|*-*-cygwin*)
+       *-mingw*|*-*-cygwin*)
                AC_DEFINE(HOST_WIN32,1,[Host Platform is Win32])
                AC_DEFINE(DISABLE_PORTABILITY,1,[Disable the io-portability layer])
                AC_DEFINE(PLATFORM_NO_SYMLINKS,1,[This platform does not support symlinks])
@@ -92,11 +92,15 @@ case "$host" in
                        # So libgc configure gets -mno-cygwin
                        export CC
                        export CXX
+               else
+                       target_win32=yes
+                       AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32/MinGW])
+                       AC_DEFINE(MINGW_CROSS_COMPILE,1,[Cross-compiling using MinGW])
                fi
                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 -lws2_32 -lole32 -loleaut32 -lpsapi -lversion -ladvapi32 -lwinmm"
+               LDFLAGS="$LDFLAGS -lmswsock -lws2_32 -lole32 -loleaut32 -lpsapi -lversion -ladvapi32 -lwinmm -lkernel32"
                libmono_cflags="-mno-cygwin -mms-bitfields -mwindows"
                libmono_ldflags="-mno-cygwin -mms-bitfields -mwindows"
                libdl=
@@ -151,14 +155,19 @@ case "$host" in
                ;;
        *-*-*openbsd*)
                host_win32=no
-               CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_FREEBSD_THREADS -DPLATFORM_BSD"
-               libmono_cflags="-D_THREAD_SAFE"
+               CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_OPENBSD_THREADS -DPLATFORM_BSD -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP"
+               if test "x$disable_munmap" != "xyes"; then
+               CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP"
+               fi
+               libmono_cflags="-D_THREAD_SAFE -D_REENTRANT"
                LDFLAGS="$LDFLAGS -pthread"
                libmono_ldflags="-pthread"
                need_link_unlink=yes
                AC_DEFINE(PTHREAD_POINTER_ID)
                libdl=
+               gc_default=boehm
                libgc_threads=pthreads
+               with_sigaltstack=no
                use_sigposix=yes
                ;;
        *-*-linux*)
@@ -254,6 +263,17 @@ case "$host" in
                                ;;
                esac
                ;;
+       *-*-haiku*)
+               host_win32=no
+               CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_THREAD_SAFE"
+               libmono_cflags="-D_REENTRANT -D_THREAD_SAFE"
+               libdl=
+               LIBS="$LIBS -lnetwork"
+               need_link_unlink=yes
+               AC_DEFINE(PTHREAD_POINTER_ID)
+               libgc_threads=pthreads
+               use_sigposix=yes
+               ;;
        *)
                AC_MSG_WARN([*** Please add $host to configure.in checks!])
                host_win32=no
@@ -433,6 +453,12 @@ else
   mcsdir=../mcs
 fi
 
+AC_ARG_WITH(mcs-path, [  --with-mcs-path=/path/to/mcs      Specify an alternate mcs source tree],
+       if test x$with_mcs_path != "x" -a -d $with_mcs_path ; then
+               mcsdir=$with_mcs_path
+       fi
+)
+
 #
 # A sanity check to catch cases where the package was unpacked
 # with an ancient tar program (Solaris)
@@ -443,7 +469,7 @@ AC_ARG_ENABLE(solaris-tar-check,
 
 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
+       if test -f $mcsdir/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapTypeMapper.cs
        then
                AC_MSG_RESULT(ok)
        else
@@ -452,8 +478,13 @@ if test x"$do_solaris_tar_check" = xyes -a x"$enable_solaris_tar_check" = xyes;
        fi
 fi
 
-mcs_topdir='$(top_srcdir)/'$mcsdir
-mcs_topdir_from_srcdir='$(top_builddir)/'$mcsdir
+if test "x$with_mcs_path" != "x"; then
+mcs_topdir=$(cd "$mcsdir" && pwd)
+mcs_topdir_from_srcdir=$mcs_topdir
+else
+mcs_topdir=$(cd "$srcdir/$mcsdir" && pwd)
+mcs_topdir_from_srcdir='$(top_builddir)'/$mcsdir
+fi
 
 ## Maybe should also disable if mcsdir is invalid.  Let's punt the issue for now.
 AM_CONDITIONAL(BUILD_MCS, [test x$cross_compiling = xno && test x$enable_mcs_build != xno])
@@ -496,8 +527,8 @@ yes|sibling) libgdiplus_loc=`cd ../libgdiplus && pwd`/src/libgdiplus.la ;;
 esac
 AC_SUBST([libgdiplus_loc])
 
-AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-if test "x$PKG_CONFIG" = "xno"; then
+PKG_PROG_PKG_CONFIG()
+if test "x$PKG_CONFIG" = "x"; then
        AC_MSG_ERROR([You need to install pkg-config])
 fi
 
@@ -520,6 +551,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'
@@ -529,20 +563,12 @@ 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
-    pkg_config_path="$PKG_CONFIG_PATH"
-    unset PKG_CONFIG_PATH
-  fi
+    echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH"
+    echo "cross_compiling=$cross_compiling"
   BUILD_GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0`
   BUILD_GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0 gthread-2.0`
-  if test "x$cross_compiling" = "xyes"; then
-    PKG_CONFIG_PATH=$pkg_config_path
-    export PKG_CONFIG_PATH
-  fi
   
   ## Versions of dependencies
   GLIB_REQUIRED_VERSION=2.4.0
@@ -643,6 +669,12 @@ if test x$enable_small_config = xyes; then
        CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DSMALL_CONFIG"
 fi
 
+if test x$AOT_SUPPORTED != xyes; then
+   AOT_SUPPORTED=no
+fi
+
+AC_ARG_ENABLE(system-aot, [  --enable-system-aot  Enable the Ahead-Of-Time compilation of system assemblies during the build (on by default on some platforms)], enable_system_aot=$enableval, enable_system_aot=$AOT_SUPPORTED)
+
 DISABLED_FEATURES=none
 
 AC_ARG_ENABLE(minimal, [  --enable-minimal=LIST      drop support for LIST subsystems.
@@ -813,6 +845,7 @@ case "x$gc" in
                AC_SUBST(HAVE_BOEHM_GC)
                LIBGC_LIBS="-lgc $libdl"
                LIBGC_STATIC_LIBS="$LIBGC_LIBS"
+               libmono_ldflags="$libmono_ldflags -lgc"
 
                # AC_CHECK_FUNCS does not work for some reason...
                AC_CHECK_LIB(gc, GC_gcj_malloc, found_gcj_malloc="yes",,$libdl)
@@ -1278,6 +1311,9 @@ if test x$target_win32 = xno; then
                *-*-*freebsd*)
                        AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread")
                ;;
+               *-*-*openbsd*)
+                       AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread")
+               ;;
                *)
                        AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread")
                ;;
@@ -1670,6 +1706,7 @@ if test x$target_win32 = xno; then
        AC_CHECK_MEMBERS(
                [struct kinfo_proc.kp_proc],,, 
                [#include <sys/types.h>
+                #include <sys/param.h>
                 #include <sys/sysctl.h>
                 #include <sys/proc.h>
                 ])
@@ -1750,7 +1787,7 @@ ac_cv_c_socklen_t=yes
        AC_MSG_RESULT(no)
 ])
 
-AC_MSG_CHECKING(for array element initalizer support)
+AC_MSG_CHECKING(for array element initializer support)
 AC_TRY_COMPILE([#include <sys/socket.h>], [
        const int array[] = {[1] = 2,};
 ], [
@@ -1798,7 +1835,7 @@ case "{$target}" in
 
 dnl Win32 does not have /dev/random, they have their own method...
 
-    *-*-mingw*|*-*-cygwin*)
+    *-mingw*|*-*-cygwin*)
     ac_cv_have_dev_random=no
     ;;
 
@@ -2040,6 +2077,10 @@ case "$host" in
                        ;;
                  cygwin*)
                        have_visibility_hidden=no                 
+                       ;;
+                 haiku*)
+                       LIBC=libroot.so
+                       ;;
                esac
                ;;
        x86_64-*-* | amd64-*-*)
@@ -2096,7 +2137,7 @@ case "$host" in
                        INTL="libc.so.6.1"
                esac
               ;;
-       *-*-mingw*|*-*-cygwin*)
+       *-mingw*|*-*-cygwin*)
                # When this is enabled, it leads to very strange crashes at runtime (gcc-3.4.4)
                have_visibility_hidden=no
                INTL="intl"
@@ -2148,7 +2189,7 @@ case "$host" in
        s390-*-linux*)
                TARGET=S390;
                arch_target=s390;
-               ACCESS_UNALIGNED="no"
+               ACCESS_UNALIGNED="yes"
                JIT_SUPPORTED=yes
                jit_wanted=true
                # Required CFLAGS for s390[x].  USE_STRING_INLINES is automatic with gcc 4.1
@@ -2157,7 +2198,7 @@ case "$host" in
        s390x-*-linux*)
                TARGET=S390x;
                arch_target=s390x;
-               ACCESS_UNALIGNED="no"
+               ACCESS_UNALIGNED="yes"
                JIT_SUPPORTED=yes
                jit_wanted=true
                CFLAGS="$CFLAGS -mbackchain -D__USE_STRING_INLINES"
@@ -2453,13 +2494,13 @@ 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_ARG_WITH(moonlight, [  --with-moonlight=yes|no|only         If you want to build Mono for Moonlight (defaults to no)],[
+       if test "x$with_moonlight" = "xyes"; then
+               AC_DEFINE(MOONLIGHT,1,[Building for Moonlight])
+       elif test "x$with_moonlight" = "xonly"; then
                AC_DEFINE(MOONLIGHT,1,[Building for Moonlight])
        fi
-])
+], [with_moonlight=no])
 
 
 
@@ -2468,6 +2509,9 @@ 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
@@ -2480,7 +2524,8 @@ AC_SUBST(OPROFILE_LIBS)
 
 libmono_ldflags="$libmono_ldflags $LIBS"
 
-AM_CONDITIONAL(MOONLIGHT, [test "x$with_moonlight" = xyes])
+AM_CONDITIONAL(MOONLIGHT, [test "x$with_moonlight" != "xno"])
+AM_CONDITIONAL(ONLY_MOONLIGHT, [test "x$with_moonlight" = "xonly"])
 AM_CONDITIONAL(INSTALL_4_0, [test "x$with_profile4" = xyes])
 AM_CONDITIONAL(INSTALL_MONOTOUCH, [test "x$with_monotouch" = xyes])
 
@@ -2708,6 +2753,7 @@ 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
@@ -2736,28 +2782,30 @@ fi
   NONE) exec_prefix='${prefix}' ;;
   esac
 
-  test -w $srcdir/$mcsdir/build || chmod +w $srcdir/$mcsdir/build
-
   #
   # If we are cross compiling, we don't build in the mcs/ tree.  Let us not clobber
   # any existing config.make.  This allows people to share the same source tree
   # with different build directories, one native and one cross
   #
   if test x$cross_compiling = xno && test x$enable_mcs_build != xno; then
-    echo "prefix=$prefix" > $srcdir/$mcsdir/build/config.make
-    echo "exec_prefix=$exec_prefix" >> $srcdir/$mcsdir/build/config.make
-    echo "sysconfdir=$sysconfdir" >> $srcdir/$mcsdir/build/config.make
-    echo 'mono_libdir=${exec_prefix}/lib' >> $srcdir/$mcsdir/build/config.make
-    echo 'MCS_FLAGS = $(PLATFORM_DEBUG_FLAGS)' >> $srcdir/$mcsdir/build/config.make
-    echo 'IL_FLAGS = /debug' >> $srcdir/$mcsdir/build/config.make
-    echo "RUNTIME = $mono_build_root/runtime/mono-wrapper" >> $srcdir/$mcsdir/build/config.make
-    echo "ILDISASM = $mono_build_root/runtime/monodis-wrapper" >> $srcdir/$mcsdir/build/config.make
+
+    test -w $mcs_topdir/build || chmod +w $mcs_topdir/build
+
+    echo "prefix=$prefix" > $mcs_topdir/build/config.make
+    echo "exec_prefix=$exec_prefix" >> $mcs_topdir/build/config.make
+    echo "sysconfdir=$sysconfdir" >> $mcs_topdir/build/config.make
+    echo 'mono_libdir=${exec_prefix}/lib' >> $mcs_topdir/build/config.make
+    echo 'MCS_FLAGS = $(PLATFORM_DEBUG_FLAGS)' >> $mcs_topdir/build/config.make
+    echo 'IL_FLAGS = /debug' >> $mcs_topdir/build/config.make
+    echo "RUNTIME = $mono_build_root/runtime/mono-wrapper" >> $mcs_topdir/build/config.make
+    echo "ILDISASM = $mono_build_root/runtime/monodis-wrapper" >> $mcs_topdir/build/config.make
+
     case $INSTALL in
     [[\\/$]]* | ?:[[\\/]]* ) mcs_INSTALL=$INSTALL ;;
     *) mcs_INSTALL=$mono_build_root/$INSTALL ;;
     esac
 
-    echo "INSTALL = $mcs_INSTALL" >> $srcdir/$mcsdir/build/config.make
+    echo "INSTALL = $mcs_INSTALL" >> $mcs_topdir/build/config.make
 
     export VERSION
     [myver=$($AWK 'BEGIN {
@@ -2768,23 +2816,33 @@ fi
       print vsplit [1] "." vsplit [2] "." vsplit [3] "." vsplit [4]
     }')]
 
-    echo "MONO_VERSION = $myver" >> $srcdir/$mcsdir/build/config.make
-  fi
+    echo "MONO_VERSION = $myver" >> $mcs_topdir/build/config.make
 
-  if test x$platform_darwin = xyes; then
-       echo "PLATFORM = darwin" >> $srcdir/$mcsdir/build/config.make
-  fi
+    if test x$platform_darwin = xyes; then
+      echo "PLATFORM = darwin" >> $mcs_topdir/build/config.make
+    fi
+
+    if test x$TARGET = xAMD64 -a x$host_win32 = xno -a "x$AOT_SUPPORTED" = "xyes" -a x$enable_system_aot = xyes; then
+      echo "ENABLE_AOT = 1" >> $mcs_topdir/build/config.make
+    fi
+
+    if test x$DISABLE_MCS_DOCS = xyes; then
+      echo "DISABLE_MCS_DOCS = yes" >> $mcs_topdir/build/config.make
+    fi
+
+    if test x$with_moonlight != xno; then
+      echo "MOONLIGHT = 1" >> $srcdir/$mcsdir/build/config.make
+    fi
 
-  if test x$TARGET = xAMD64 -a x$host_win32 = xno -a "x$AOT_SUPPORTED" = "xyes"; then
-        echo "ENABLE_AOT = 1" >> $srcdir/$mcsdir/build/config.make
   fi
 
   # if we have an olive folder, override the default settings
   if test -d $olivedir; then
 
-    test -w $srcdir/$olivedir/build || chmod +w $srcdir/$olivedir/build
-
     if test x$cross_compiling = xno && test x$enable_olive_build != xno; then
+
+      test -w $srcdir/$olivedir/build || chmod +w $srcdir/$olivedir/build
+
       echo "prefix=$prefix" > $srcdir/$olivedir/build/config.make
       echo "exec_prefix=$exec_prefix" >> $srcdir/$olivedir/build/config.make
       echo 'mono_libdir=${exec_prefix}/lib' >> $srcdir/$olivedir/build/config.make
@@ -2794,19 +2852,12 @@ 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}
 
 echo "
-        mcs source:    $mcs_topdir
+        mcs source:    $mcsdir
         olive source:  $olive_topdir
 
    Engine: