Make a method private for 1.x
[mono.git] / configure.in
index 8a98ce438511cb50ed7f8f326a472534b766e5ee..da885aacd9b4c06358f947ec1b94de56b9ed66bc 100644 (file)
@@ -6,7 +6,7 @@ AC_CANONICAL_SYSTEM
 m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])
 
 AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(mono,1.1.16)
+AM_INIT_AUTOMAKE(mono,1.2)
 AM_MAINTAINER_MODE
 
 AC_PROG_LN_S
@@ -67,10 +67,11 @@ case "$host" in
                fi
                HOST_CC="gcc"
                CPPFLAGS="$CPPFLAGS -DWIN32_THREADS -DFD_SETSIZE=1024"
+               libmono_cflags="-mno-cygwin"
+               libmono_ldflags="-mno-cygwin"
                libdl=
                libgc_threads=win32
                gc_default=included
-               with_nptl=default
                with_sigaltstack=no
                LN_S=cp
                # This forces libgc to use the DllMain based thread registration code on win32
@@ -111,7 +112,6 @@ case "$host" in
                libdl=
                libgc_threads=pthreads
 # TLS isn't implemented at all on 4-STABLE
-               with_nptl=no
                with_tls=pthread
                ;;
        *-*-*freebsd5*)
@@ -204,7 +204,7 @@ case "$host" in
                libmono_cflags="-D_REENTRANT"
                libgc_threads=pthreads
                # This doesn't seem to work on solaris/x86, but the configure test runs
-               with_nptl=no
+               with_tls=pthread
                ;;
        *-*-darwin*)
                platform_win32=no
@@ -285,7 +285,7 @@ fi
 
 AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes)
 
-AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h semaphore.h sys/un.h linux/rtc.h)
+AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h semaphore.h sys/un.h linux/rtc.h sys/syscall.h)
 
 AC_CHECK_HEADER(zlib.h, [have_zlib=yes], [have_zlib=no])
 
@@ -368,7 +368,7 @@ mcs_topdir='$(top_srcdir)/'$mcsdir
 mcs_topdir_from_srcdir='$(top_builddir)/'$mcsdir
 
 ## Maybe should also disable if mcsdir is invalid.  Let's punt the issue for now.
-AM_CONDITIONAL(BUILD_MCS, [test x$cross_compiling = xno])
+AM_CONDITIONAL(BUILD_MCS, [test x$cross_compiling = xno && test x$enable_mcs_build != xno])
 
 AC_SUBST([mcs_topdir])
 AC_SUBST([mcs_topdir_from_srcdir])
@@ -390,13 +390,6 @@ if test "x$PKG_CONFIG" = "xno"; then
        AC_MSG_ERROR([You need to install pkg-config])
 fi
 
-dnl for use on the build system
-dnl pkg-config is stupid
-BUILD_GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0`
-BUILD_GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0 gthread-2.0`
-AC_SUBST(BUILD_GLIB_CFLAGS)
-AC_SUBST(BUILD_GLIB_LIBS)
-
 pkg_config_path=
 AC_ARG_WITH(crosspkgdir, [  --with-crosspkgdir=/path/to/pkg-config/dir],
        if test x$with_crosspkgdir = "x"; then
@@ -410,20 +403,43 @@ AC_ARG_WITH(crosspkgdir, [  --with-crosspkgdir=/path/to/pkg-config/dir],
        fi
 )
 
-## Versions of dependencies
-GLIB_REQUIRED_VERSION=1.3.11
-
-PKG_CHECK_MODULES(BASE_DEPENDENCIES, glib-2.0 >= $GLIB_REQUIRED_VERSION)
-
-GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0`
-GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0 gthread-2.0`
-GMODULE_CFLAGS=`$PKG_CONFIG --cflags gmodule-2.0`
-GMODULE_LIBS=`$PKG_CONFIG --libs gmodule-2.0`
-
+AC_ARG_WITH([glib],
+       [  --with-glib=embedded|system       Choose glib API: system or embedded (default to system)],
+       [], [with_glib=system])
+
+case $with_glib in
+embedded) 
+  GLIB_CFLAGS='-I$(top_srcdir)/eglib/src'
+  GLIB_LIBS='-L$(top_builddir)/eglib/src -leglib -lm'
+  BUILD_GLIB_CFLAGS="$GLIB_CFLAGS"
+  BUILD_GLIB_LIBS="$GLIB_LIBS"
+  AC_CONFIG_SUBDIRS(eglib)
+  ;;
+system)
+  BUILD_GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0`
+  BUILD_GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0 gthread-2.0`
+
+  ## Versions of dependencies
+  GLIB_REQUIRED_VERSION=1.3.11
+  
+  PKG_CHECK_MODULES(BASE_DEPENDENCIES, glib-2.0 >= $GLIB_REQUIRED_VERSION)
+  
+  GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0`
+  GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0 gthread-2.0`
+  GMODULE_CFLAGS=`$PKG_CONFIG --cflags gmodule-2.0`
+  GMODULE_LIBS=`$PKG_CONFIG --libs gmodule-2.0`
+  ;;
+*)
+  AC_MSG_ERROR([Invalid argument to --with-glib.])
+esac
+AM_CONDITIONAL(EGLIB_BUILD, test x$with_glib = xembedded)
+  
 AC_SUBST(GLIB_CFLAGS)
 AC_SUBST(GLIB_LIBS)
 AC_SUBST(GMODULE_CFLAGS)
 AC_SUBST(GMODULE_LIBS)
+AC_SUBST(BUILD_GLIB_CFLAGS)
+AC_SUBST(BUILD_GLIB_LIBS)
 
 if test x$cross_compiling$platform_win32 = xnoyes; then
    AC_MSG_CHECKING(for cygwin glib2-dev package)
@@ -452,20 +468,6 @@ AC_ARG_WITH(gc, [  --with-gc=boehm,included,none],[gc=$with_gc],[gc=$gc_default]
 # Some systems have broken support, so we allow to disable it.
 AC_ARG_WITH(tls, [  --with-tls=__thread,pthread       select Thread Local Storage implementation],[],[with_tls=__thread])
 
-# Kept for compatibility
-AC_ARG_WITH(nptl, [  --with-nptl=yes,no      deprecated, use --with-tls instead],[],[with_nptl=default])
-
-if test "x$with_nptl" != "xdefault"; then
-   if test "x$with_nptl" = "xyes"; then
-      AC_MSG_WARN([--with-nptl=yes is deprecated, use --with-tls=__thread option instead.])
-         with_tls=__thread
-   fi
-   if test "x$with_nptl" = "xno"; then
-      AC_MSG_WARN([--with-nptl=no is deprecated, use --with-tls=pthread option instead.])
-         with_tls=pthread
-   fi
-fi
-
 # Enable support for using sigaltstack for SIGSEGV and stack overflow handling
 # This does not work on some platforms (bug #55253)
 AC_ARG_WITH(sigaltstack, [  --with-sigaltstack=yes,no      enable/disable support for sigaltstack],[],[with_sigaltstack=no])
@@ -482,6 +484,7 @@ if test "x$platform_win32" = "xyes"; then
 fi
 
 AM_CONDITIONAL(STATIC_MONO, test x$with_static_mono != xno)
+AC_ARG_ENABLE(mcs-build, [  --disable-mcs-build disable the build of the mcs directory], try_mcs_build=$enableval, enable_mcs_build=yes)
 
 AC_ARG_WITH(xen_opt,   [  --with-xen_opt=yes,no      Enable Xen-specific behaviour],[],[with_xen_opt=yes])
 if test "x$with_xen_opt" = "xyes"; then
@@ -699,6 +702,7 @@ if test x$platform_win32 = xno; then
        AC_CHECK_FUNCS(setresuid)
        AC_CHECK_FUNCS(kqueue)
        AC_CHECK_FUNCS(backtrace_symbols)
+       AC_CHECK_FUNCS(mkstemp)
 
        dnl ******************************************************************
        dnl *** Check for large file support                               ***
@@ -885,7 +889,7 @@ if test x$platform_win32 = xno; then
        dnl *****************************
        dnl *** Checks for libnsl     ***
        dnl *****************************
-       AC_CHECK_LIB(nsl, gethostbyaddr, LIBS="$LIBS -lnsl")
+       AC_CHECK_FUNC(gethostbyaddr, , AC_CHECK_LIB(nsl, gethostbyaddr, LIBS="$LIBS -lnsl"))
 
        AC_CHECK_FUNCS(inet_pton inet_aton)
 
@@ -1203,41 +1207,6 @@ if test x$platform_win32 = xno; then
                AC_MSG_RESULT(no)
        ]) 
 
-       dnl *********************
-       dnl *** Check for AIO ***
-       dnl *********************
-       AC_MSG_CHECKING([for SIGEV_THREAD definition])
-       dnl Some systems (FreeBSD at least) may have aio_read
-       dnl but don't support/define SIGEV_THREAD.
-       AC_TRY_COMPILE([
-       #include <sys/signal.h>
-       ],[
-       int x = SIGEV_THREAD;
-       ],[
-               ac_cv_c_sigev_thread=yes
-               AC_MSG_RESULT(yes)
-       ],[
-               AC_MSG_RESULT(no)
-       ])
-
-       if test "$ac_cv_c_sigev_thread" = "yes" ; then
-               AC_CHECK_HEADERS(aio.h sys/aio.h)
-               AC_CHECK_LIB(rt, aio_read, [ LIBS="$LIBS -lrt" ],)
-               SIGVAL_PTR="undefined"
-               if test "$ac_cv_header_aio_h" = "yes" -o "$ac_cv_header_sys_aio_h" = "yes" ; then
-                       AC_CHECK_MEMBER(union sigval.sigval_ptr,SIGVAL_PTR="sigval_ptr",, [
-                                       #include <sys/signal.h>
-                                       ])
-                       AC_CHECK_MEMBER(union sigval.sival_ptr,SIGVAL_PTR="sival_ptr",, [
-                                       #include <sys/signal.h>
-                                       ])
-                       if test "$SIGVAL_PTR" = "undefined" ; then
-                               AC_MSG_ERROR([Unable to detect field name in 'union sigval'])
-                       fi
-               fi
-               AC_DEFINE_UNQUOTED(SIGVAL_PTR,$SIGVAL_PTR,[Pointer field name in 'union sigval'])
-       fi
-
        dnl **********************************
        dnl *** epoll                      ***
        dnl **********************************
@@ -1273,13 +1242,6 @@ if test x$platform_win32 = xno; then
        dnl **********************************
        dnl *** Checks for MonoPosixHelper ***
        dnl **********************************
-       AC_CHECK_FUNC(setkey, ,
-               AC_CHECK_LIB(crypt, setkey, [ 
-                       AC_DEFINE(HAVE_SETKEY, 1, [Define if setkey(3) is available]) 
-                       CRYPT_LIBS="-lcrypt" 
-               ])
-       )
-       AC_SUBST(CRYPT_LIBS)
        AC_CHECK_HEADERS(checklist.h)
        AC_CHECK_HEADERS(fstab.h)
        AC_CHECK_HEADERS(attr/xattr.h)
@@ -1312,6 +1274,28 @@ if test x$platform_win32 = xno; then
        AC_CHECK_FUNCS(strerror_r)
        AC_CHECK_FUNCS(ttyname_r)
        AC_CHECK_SIZEOF(size_t)
+       AC_CHECK_TYPES([blksize_t], [AC_DEFINE(HAVE_BLKSIZE_T)], , 
+               [#include <sys/types.h>
+                #include <sys/stat.h>
+                #include <unistd.h>])
+       AC_CHECK_TYPES([blkcnt_t], [AC_DEFINE(HAVE_BLKCNT_T)], ,
+               [#include <sys/types.h>
+                #include <sys/stat.h>
+                #include <unistd.h>])
+       AC_CHECK_TYPES([suseconds_t], [AC_DEFINE(HAVE_SUSECONDS_T)], ,
+               [#include <sys/time.h>])
+       AC_CHECK_TYPES([struct pollfd], [AC_DEFINE(HAVE_STRUCT_POLLFD)], ,
+               [#include <sys/poll.h>])
+       AC_CHECK_TYPES([struct stat], [AC_DEFINE(HAVE_STRUCT_STAT)], ,
+               [#include <sys/types.h>
+                #include <sys/stat.h>
+                #include <unistd.h>])
+       AC_CHECK_TYPES([struct timeval], [AC_DEFINE(HAVE_STRUCT_TIMEVAL)], ,
+               [#include <sys/time.h>
+                #include <sys/types.h>
+                #include <utime.h>])
+       AC_CHECK_TYPES([struct timezone], [AC_DEFINE(HAVE_STRUCT_TIMEZONE)], ,
+               [#include <sys/time.h>])
        AC_CHECK_MEMBERS(
                [struct dirent.d_off, struct dirent.d_reclen, struct dirent.d_type],,, 
                [#include <sys/types.h>
@@ -1511,6 +1495,13 @@ case "$host" in
 #              TARGET=MIPS;
 #              ACCESS_UNALIGNED="no"
 #              ;;
+       mips*)
+               TARGET=MIPS;
+               arch_target=mips;
+               ACCESS_UNALIGNED="no"
+               JIT_SUPPORTED=yes
+               jit_wanted=true
+               ;;
        i*86-*-*)
                TARGET=X86;
                arch_target=x86;
@@ -1584,6 +1575,7 @@ case "$host" in
                JIT_SUPPORTED=yes
                jit_wanted=true
                arch_target=alpha;
+               CFLAGS="$CFLAGS -mieee"
                case $host_os in
                  linux*)
                        LIBC="libc.so.6.1"
@@ -1591,6 +1583,8 @@ case "$host" in
                esac
               ;;
        *-*-mingw*|*-*-cygwin*)
+               # When this is enabled, it leads to very strange crashes at runtime (gcc-3.4.4)
+               have_visibility_hidden=no
                INTL="intl"
                ;;
        hppa2.0w-hp-hpux11.00 | hppa64-hp-hpux11.00)
@@ -1630,6 +1624,8 @@ case "$host" in
                ACCESS_UNALIGNED="no"
                JIT_SUPPORTED=yes
                jit_wanted=true
+               # Required CFLAGS for s390[x].  USE_STRING_INLINES is automatic with gcc 4.1
+               CFLAGS="$CFLAGS -mbackchain -D__USE_STRING_INLINES"
                ;;
        s390x-*-linux*)
                TARGET=S390x;
@@ -1638,6 +1634,7 @@ case "$host" in
                ACCESS_UNALIGNED="no"
                JIT_SUPPORTED=yes
                jit_wanted=true
+               CFLAGS="$CFLAGS -mbackchain -D__USE_STRING_INLINES"
                ;;
 esac
 
@@ -1798,7 +1795,7 @@ if test ${TARGET} = ARM; then
                ])
 
        AC_MSG_RESULT($fpu)
-       CPPFLAGS="$CPPFLAGS -DARM_FPU_$fpu"
+       CPPFLAGS="$CPPFLAGS -DARM_FPU_$fpu=1"
        unset fpu
 fi
 
@@ -1829,6 +1826,7 @@ AM_CONDITIONAL(AMD64, test x$TARGET = xAMD64)
 AM_CONDITIONAL(ALPHA, test x$TARGET = xALPHA)
 AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
 AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
+AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS)
 AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
 AM_CONDITIONAL(ARM, test x$TARGET = xARM)
 AM_CONDITIONAL(S390, test x$TARGET = xS390)
@@ -1941,6 +1939,7 @@ mono/arch/s390x/Makefile
 mono/arch/arm/Makefile
 mono/arch/alpha/Makefile
 mono/arch/ia64/Makefile
+mono/arch/mips/Makefile
 mono/interpreter/Makefile
 mono/tests/Makefile
 mono/tests/tests-config
@@ -1996,7 +1995,7 @@ fi
   # 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; then
+  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 'mono_libdir=${exec_prefix}/lib' >> $srcdir/$mcsdir/build/config.make
@@ -2036,6 +2035,14 @@ echo "
        $disabled
 
 "
+if test x$with_static_mono = xno -a "x$platform_win32" != "xyes"; then
+   AC_MSG_WARN(Turning off static Mono is a risk, you might run into unexepcted bugs)
+fi
+
+if test x$have_zlib = xno; then
+   AC_MSG_WARN(ZLib devel files not available, compression file support in 2.0 won't work.)
+fi
+
 if test x$gc = xsgen; then
         echo IMPORTANT:
        echo IMPORTANT: You have selected an experimental, work-in-progress