Fix Java compilation
[mono.git] / configure.in
index c115b78ed49fab033dd29eee058724af0fcd898f..838fbf8edcd5a0ab33f19767c00cdc151dba1a14 100644 (file)
@@ -6,9 +6,12 @@ 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.2)
+AM_INIT_AUTOMAKE(mono,1.2.5)
 AM_MAINTAINER_MODE
 
+API_VER=1.0
+AC_SUBST(API_VER)
+
 AC_PROG_LN_S
 
 # In case of cygwin, override LN_S, irrespective of what it determines.
@@ -41,12 +44,13 @@ libmono_cflags=""
 libmono_ldflags=""
 AC_SUBST(libmono_cflags)
 AC_SUBST(libmono_ldflags)
+export_ldflags=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+AC_SUBST(export_ldflags)
 
 # Variable to have relocatable .pc files (lib, or lib64)
 reloc_libdir=`basename ${libdir}`
 AC_SUBST(reloc_libdir)
 
-
 dnl if linker handles the version script
 no_version_script=no
 
@@ -66,7 +70,7 @@ case "$host" in
                        export CC
                fi
                HOST_CC="gcc"
-               CPPFLAGS="$CPPFLAGS -DWIN32_THREADS -DFD_SETSIZE=1024"
+               CPPFLAGS="$CPPFLAGS -DWIN32_THREADS -DFD_SETSIZE=1024 -DUNICODE -D_UNICODE"
                libmono_cflags="-mno-cygwin"
                libmono_ldflags="-mno-cygwin"
                libdl=
@@ -79,14 +83,15 @@ case "$host" in
                ;;
        *-*-*netbsd*)
                platform_win32=no
-               CPPFLAGS="$CPPFLAGS -D_REENTRANT"
+               CPPFLAGS="$CPPFLAGS -D_REENTRANT -DGC_NETBSD_THREADS -D_GNU_SOURCE"
                libmono_cflags="-D_REENTRANT"
                LDFLAGS="$LDFLAGS -pthread"
                CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD"
                libmono_ldflags="-pthread"
                need_link_unlink=yes
-               libdl=
-               libgc_threads=no
+               libdl="-ldl"
+               libgc_threads=pthreads
+               with_sigaltstack=no
                ;;
 # these flags will work for all versions of -STABLE
 #
@@ -190,6 +195,14 @@ case "$host" in
        *-*-hpux*)
         platform_win32=no
                CPPFLAGS="$CPPFLAGS -DGC_HPUX_THREADS -D_HPUX_SOURCE -D_XOPEN_SOURCE_EXTENDED -D_REENTRANT"
+               # +ESdbgasm only valid on bundled cc on RISC
+               # silently ignored for ia64
+               if test $GCC != "yes"; then
+                       CFLAGS="$CFLAGS +ESdbgasm"
+                       # Arrange for run-time dereferencing of null
+                       # pointers to produce a SIGSEGV signal.
+                       LDFLAGS="$LDFLAGS -z"
+               fi
                CFLAGS="$CFLAGS +ESdbgasm"
                LDFLAGS="$LDFLAGS -z"
                libmono_cflags="-D_REENTRANT"
@@ -209,6 +222,7 @@ case "$host" in
        *-*-darwin*)
                platform_win32=no
                CPPFLAGS="$CPPFLAGS -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP"
+               CPPFLAGS="$CPPFLAGS -DGetCurrentProcess=MonoGetCurrentProcess"
                libmono_cflags="-D_THREAD_SAFE"
                LDFLAGS="$LDFLAGS -pthread"
                libmono_ldflags="-pthread"
@@ -235,6 +249,7 @@ AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
 
 AC_CHECK_TOOL(CC, gcc, gcc)
 AC_PROG_CC
+AM_PROG_AS
 AM_PROG_CC_STDC
 AC_PROG_INSTALL
 AC_PROG_AWK
@@ -288,8 +303,26 @@ 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 sys/syscall.h)
 
 AC_CHECK_HEADER(zlib.h, [have_zlib=yes], [have_zlib=no])
+if test x$have_zlib = xyes; then
+   AC_TRY_COMPILE([#include <zlib.h>], [
+   void main () {
+   #if defined(ZLIB_VERNUM) && (ZLIB_VERNUM >= 0x1230)
+   }
+   #else
+   #error No good zlib found
+   #endif
+   ],[
+       AC_MSG_RESULT(Using system zlib)
+       zlib_msg="system zlib"
+   ],[
+       AC_MSG_RESULT(Using embedded zlib)
+       have_zlib=no
+       zlib_msg="bundled zlib"
+   ])
+fi
 
 AM_CONDITIONAL(HAVE_ZLIB, test x$have_zlib = xyes)
+AC_DEFINE(HAVE_ZLIB,1,[Have system zlib])
 
 # for mono/metadata/debug-symfile.c
 AC_CHECK_HEADERS(elf.h)
@@ -470,7 +503,7 @@ AC_ARG_WITH(tls, [  --with-tls=__thread,pthread       select Thread Local Storag
 
 # 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])
+AC_ARG_WITH(sigaltstack, [  --with-sigaltstack=yes,no      enable/disable support for sigaltstack],[],[with_sigaltstack=yes])
 
 AC_ARG_WITH(static_mono, [  --with-static_mono=yes,no      link mono statically to libmono (faster)],[],[with_static_mono=yes])
 
@@ -679,6 +712,41 @@ dnl
 
 if test x$platform_win32 = xno; then
 
+       dnl dynamic loader support
+       AC_CHECK_FUNC(dlopen, DL_LIB="",
+               AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", dl_support=no)
+       )
+       if test x$dl_support = xno; then
+               AC_MSG_WARN([No dynamic loading support available])
+       else
+               LIBS="$LIBS $DL_LIB"
+               AC_DEFINE(HAVE_DL_LOADER,1,[dlopen-based dynamic loader available])
+               dnl from glib's configure.in
+               AC_CACHE_CHECK([for preceeding underscore in symbols],
+                       mono_cv_uscore,[
+                       AC_TRY_RUN([#include <dlfcn.h>
+                       int mono_underscore_test (void) { return 42; }
+                       int main() {
+                         void *f1 = (void*)0, *f2 = (void*)0, *handle;
+                         handle = dlopen ((void*)0, 0);
+                         if (handle) {
+                           f1 = dlsym (handle, "mono_underscore_test");
+                           f2 = dlsym (handle, "_mono_underscore_test");
+                         } return (!f2 || f1);
+                       }],
+                               [mono_cv_uscore=yes],
+                               [mono_cv_uscore=no],
+                       [])
+               ])
+               if test "x$mono_cv_uscore" = "xyes"; then
+                       MONO_DL_NEED_USCORE=1
+               else
+                       MONO_DL_NEED_USCORE=0
+               fi
+               AC_SUBST(MONO_DL_NEED_USCORE)
+               AC_CHECK_FUNC(dlerror)
+       fi
+
        dnl ******************************************************************
        dnl *** Checks for the IKVM JNI interface library                  ***
        dnl ******************************************************************
@@ -703,6 +771,10 @@ if test x$platform_win32 = xno; then
        AC_CHECK_FUNCS(kqueue)
        AC_CHECK_FUNCS(backtrace_symbols)
        AC_CHECK_FUNCS(mkstemp)
+       AC_CHECK_FUNCS(mmap)
+       AC_CHECK_FUNCS(madvise)
+
+       AC_CHECK_FUNCS(sched_setaffinity)
 
        dnl ******************************************************************
        dnl *** Check for large file support                               ***
@@ -831,20 +903,48 @@ if test x$platform_win32 = xno; then
        ])
 
        dnl *****************************
-    dnl *** Checks for IPV6_PKTINFO ***
-    dnl *****************************
-    AC_MSG_CHECKING(for IPV6_PKTINFO)
-    AC_TRY_COMPILE([#include <netdb.h>], [
-        int level = IPV6_PKTINFO;
-    ], [
-        # Yes, we have it...
-        AC_MSG_RESULT(yes)
-        AC_DEFINE(HAVE_IPV6_PKTINFO)
-    ], [
-        AC_MSG_RESULT(no)
-    ])
-       dnl *********************************
+       dnl *** Checks for IPV6_PKTINFO ***
+       dnl *****************************
+       AC_MSG_CHECKING(for IPV6_PKTINFO)
+       AC_TRY_COMPILE([#include <netdb.h>], [
+               int level = IPV6_PKTINFO;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IPV6_PKTINFO)
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl **********************************
+       dnl *** Checks for IP_DONTFRAGMENT ***
+       dnl **********************************
+       AC_MSG_CHECKING(for IP_DONTFRAGMENT)
+       AC_TRY_COMPILE([#include <netdb.h>], [
+               int level = IP_DONTFRAGMENT;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IP_DONTFRAGMENT)
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl **********************************
+       dnl *** Checks for IP_MTU_DISCOVER ***
+       dnl **********************************
+       AC_MSG_CHECKING(for IP_MTU_DISCOVER)
+       AC_TRY_COMPILE([#include <netdb.h>], [
+               int level = IP_MTU_DISCOVER;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IP_MTU_DISCOVER)
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl *********************************
        dnl *** Check for struct ip_mreqn ***
        dnl *********************************
        AC_MSG_CHECKING(for struct ip_mreqn)
@@ -1296,6 +1396,9 @@ if test x$platform_win32 = xno; then
                 #include <utime.h>])
        AC_CHECK_TYPES([struct timezone], [AC_DEFINE(HAVE_STRUCT_TIMEZONE)], ,
                [#include <sys/time.h>])
+       AC_CHECK_TYPES([struct utimbuf], [AC_DEFINE(HAVE_STRUCT_UTIMBUF)], ,
+               [#include <sys/types.h>
+                #include <utime.h>])
        AC_CHECK_MEMBERS(
                [struct dirent.d_off, struct dirent.d_reclen, struct dirent.d_type],,, 
                [#include <sys/types.h>
@@ -1306,6 +1409,12 @@ if test x$platform_win32 = xno; then
                AC_CHECK_LIB(attr, lsetxattr, XATTR_LIB="-lattr",)
        )
        AC_SUBST(XATTR_LIB)
+       
+       dnl *********************************
+       dnl *** Checks for Windows compilation ***
+       dnl *********************************
+       AC_CHECK_HEADERS(sys/time.h)
+       AC_CHECK_HEADERS(sys/param.h)
 
        dnl *********************************
        dnl *** Check for Console 2.0 I/O ***
@@ -1326,6 +1435,7 @@ else
        AC_CHECK_LIB(ws2_32, main, LIBS="$LIBS -lws2_32", AC_ERROR(bad mingw install?))
        AC_CHECK_LIB(psapi, main, LIBS="$LIBS -lpsapi", AC_ERROR(bad mingw install?))
        AC_CHECK_LIB(ole32, main, LIBS="$LIBS -lole32", AC_ERROR(bad mingw install?))
+       AC_CHECK_LIB(winmm, main, LIBS="$LIBS -lwinmm", AC_ERROR(bad mingw install?))
        AC_CHECK_LIB(oleaut32, main, LIBS="$LIBS -loleaut32", AC_ERROR(bad mingw install?))
 
        dnl *********************************
@@ -1511,6 +1621,10 @@ case "$host" in
                  solaris*)
                        LIBC="libc.so"
                        INTL="libintl.so"
+                       if test "x$ac_cv_sizeof_void_p" = "x8"; then
+                               TARGET=AMD64
+                               arch_target=amd64
+                       fi
 
                        # On solaris 10 x86, gcc prints a warning saying 'visibility attribute not supported on this configuration; ignored', but linking fails. A test case:
                        # int astruct __attribute__ ((visibility ("hidden")));
@@ -1524,7 +1638,6 @@ case "$host" in
                        # ld: fatal: relocation error: R_386_GOTOFF: file /var/tmp//ccxYR96k.o: symbol astruct: relocation must bind locally
                        have_visibility_hidden=no
 
-                       libmono_ldflags="$libmono_ldflags $LIBS"
                esac
                ;;
        x86_64-*-* | amd64-*-*)
@@ -1558,7 +1671,6 @@ case "$host" in
                  *)
                        LIBC="libc.so"
                        INTL="libintl.so"
-                       libmono_ldflags="$libmono_ldflags $LIBS"
                esac
                jit_wanted=true
                if test x"$GCC" = xyes; then
@@ -1575,7 +1687,7 @@ case "$host" in
                JIT_SUPPORTED=yes
                jit_wanted=true
                arch_target=alpha;
-               CFLAGS="$CFLAGS -mieee"
+               CFLAGS="$CFLAGS -mieee -O0"
                case $host_os in
                  linux*)
                        LIBC="libc.so.6.1"
@@ -1597,10 +1709,11 @@ case "$host" in
                ;;
        hppa*linux*)
                TARGET=HPPA;
+               AC_DEFINE(MONO_ARCH_REGPARMS,1,[Architecture uses registers for Parameters])
                arch_target=hppa; 
                ACCESS_UNALIGNED="no"
-               INTERP_SUPPORTED=yes
-               interp_wanted=true
+               JIT_SUPPORTED=yes
+               jit_wanted=true
                ;;
        macppc-*-openbsd* | powerpc-*-linux* | powerpc-*-openbsd* | \
         powerpc-*-sysv* | powerpc-*-darwin*)
@@ -1749,7 +1862,7 @@ if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then
 fi
 
 mono_debugger_supported=no
-if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; 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*)
@@ -1809,13 +1922,23 @@ if test ${ACCESS_UNALIGNED} = no; then
 fi
 
 PREVIEW=yes
-AC_ARG_WITH(preview, [ --with-preview=yes,no     If you want to install the 2.0 FX preview],[
+AC_ARG_WITH(preview,  [ --with-preview=yes,no     If you want to install the 2.0 FX preview],[
        if test x$with_preview = xno; then
              PREVIEW=no
        fi
 ])
 
+MOONLIGHT=no
+AC_ARG_WITH(moonlight,[ --with-moonlight=yes,no   If you want to build the Moonlight 2.1 assemblies],[
+       if test x$with_moonlight = xyes; then
+             MOONLIGHT=yes
+       fi
+])
+
+libmono_ldflags="$libmono_ldflags $LIBS"
+
 AM_CONDITIONAL(INSTALL_2_0, test x$PREVIEW = xyes)
+AM_CONDITIONAL(INSTALL_2_1, test x$MOONLIGHT = xyes)
 
 AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes)
 AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno)
@@ -1842,7 +1965,7 @@ AC_SUBST(INTL)
 AC_SUBST(SQLITE)
 AC_SUBST(SQLITE3)
 AC_SUBST(X11)
-
+AC_DEFINE_UNQUOTED(ARCHITECTURE,"$arch_target",[The architecture this is running on])
 AC_SUBST(arch_target)
 AC_SUBST(CFLAGS)
 AC_SUBST(CPPFLAGS)
@@ -1912,12 +2035,22 @@ AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/web.config],
     cd $depth
 ],[LN_S='$LN_S'])
 
+AC_CONFIG_COMMANDS([runtime/etc/mono/browscap.ini],
+[   depth=../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/
+    cd runtime/etc/mono/
+    rm -f browscap.ini
+    $LN_S $reldir/data/browscap.ini browscap.ini
+    cd $depth
+],[LN_S='$LN_S'])
+
 AC_OUTPUT([
 Makefile
-mint.pc
-mono.pc
-mono-cairo.pc
-dotnet.pc
 mono-uninstalled.pc
 scripts/mono-nunit.pc
 scripts/mono-find-provides
@@ -1963,12 +2096,18 @@ docs/Makefile
 data/Makefile
 data/net_1_1/Makefile
 data/net_2_0/Makefile
+data/mint.pc
+data/mono.pc
+data/mono-cairo.pc
+data/dotnet.pc
+data/cecil.pc
 samples/Makefile
 support/Makefile
 data/config
 tools/Makefile
 tools/locale-builder/Makefile
 runtime/Makefile
+msvc/Makefile
 ])
 
 if test x$platform_win32 = xyes; then
@@ -2029,9 +2168,11 @@ echo "
        TLS:         $with_tls
        SIGALTSTACK: $with_sigaltstack
        Engine:      $jit_status
-       2.0 Alpha:   $PREVIEW
+       2.0 Beta:    $PREVIEW
+       2.1 Alpha:   $MOONLIGHT
        JNI support: $jdk_headers_found
        libgdiplus:  $libgdiplus_msg
+       zlib:        $zlib_msg
        $disabled
 
 "
@@ -2039,10 +2180,6 @@ 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