2009-05-24 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Sun, 24 May 2009 01:25:53 +0000 (01:25 -0000)
committerZoltan Varga <vargaz@gmail.com>
Sun, 24 May 2009 01:25:53 +0000 (01:25 -0000)
* */CMakeLists.txt: Add beginnings of a cmake based build system.

svn path=/trunk/mono/; revision=134645

CMakeLists.txt [new file with mode: 0644]
ChangeLog
ikvm-native/CMakeLists.txt [new file with mode: 0644]
mono/CMakeLists.txt [new file with mode: 0644]
mono/dis/CMakeLists.txt [new file with mode: 0644]
mono/io-layer/CMakeLists.txt [new file with mode: 0644]
mono/metadata/CMakeLists.txt [new file with mode: 0644]
mono/mini/CMakeLists.txt [new file with mode: 0644]
support/CMakeLists.txt [new file with mode: 0644]

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644 (file)
index 0000000..a22d33d
--- /dev/null
@@ -0,0 +1,2966 @@
+cmake_minimum_required(VERSION 2.6.4)
+
+# FIXME: Sanitize the variables, no need for the duplicate am conditionals
+# - It would be nice to rename 'CMakeFiles' to something like '.cmake'
+# - It would be nice to have a per-target VERBOSE setting
+# - or a way to change the setting name to 'V' and the output to CC <src>
+#   to be similar to the current build output
+
+# We use lowercase commands as advocated by the kde cmake coding style
+
+include(CheckIncludeFile)
+include(CheckCSourceCompiles)
+
+# Implementation of AC_CHECK_HEADERS
+# In addition, it also records the list of variables in the variable 
+# 'autoheader_vars', and for each variable, a documentation string in the
+# variable ${var}_doc
+function(ac_check_headers headers)
+  foreach (header ${ARGV})
+       string(TOUPPER ${header} header_var)
+       string(REPLACE "." "_" header_var ${header_var})
+       string(REPLACE "/" "_" header_var ${header_var})
+       set(header_var "HAVE_${header_var}")
+       check_include_file (${header} ${header_var})
+       set("${header_var}_doc" "Define to 1 if you have the <${header}> header file." PARENT_SCOPE)
+       if (${header_var})
+         set("${header_var}_defined" "1" PARENT_SCOPE)
+       endif()
+       set("${header_var}_val" "1" PARENT_SCOPE)
+       set (autoheader_vars ${autoheader_vars} ${header_var})
+  endforeach()
+  set (autoheader_vars ${autoheader_vars} PARENT_SCOPE)
+endfunction()
+
+function(ac_check_funcs funcs)
+  foreach (func ${ARGV})
+       string(TOUPPER ${func} var)
+       set(var "HAVE_${var}")
+       set(${var})
+       check_function_exists (${func} ${var})
+       set("${var}_doc" "Define to 1 if you have the '${func}' function." PARENT_SCOPE)
+       if (${var})
+         set("${var}_defined" "1" PARENT_SCOPE)
+         set(${var} yes PARENT_SCOPE)
+       endif()
+       set("${var}_val" "1" PARENT_SCOPE)
+       set (autoheader_vars ${autoheader_vars} ${var})
+  endforeach()
+  set (autoheader_vars ${autoheader_vars} PARENT_SCOPE)
+endfunction()
+
+# Implementation of AC_DEFINE
+function(ac_define varname value doc)
+  if (${varname} MATCHES ",")
+       message(FATAL_ERROR ",")
+  endif()
+  set("${varname}_doc" ${doc} PARENT_SCOPE)
+  set("${varname}_defined" 1 PARENT_SCOPE)
+  set("${varname}_val" ${value} PARENT_SCOPE)
+  set (autoheader_vars ${autoheader_vars} ${varname} PARENT_SCOPE)
+endfunction()
+
+# Implementation of AC_DEFINE_UNQUOTED
+function(ac_define_unquoted varname value doc)
+  if (${varname} MATCHES ",")
+       message(FATAL_ERROR ",")
+  endif()
+  set("${varname}_doc" ${doc} PARENT_SCOPE)
+  set("${varname}_defined" 1 PARENT_SCOPE)
+  set("${varname}_val" \"${value}\" PARENT_SCOPE)
+  set (autoheader_vars ${autoheader_vars} ${varname} PARENT_SCOPE)
+endfunction()
+
+Include(CheckTypeSize)
+
+# Implementation of AC_CHECK_SIZEOF
+# FIXME: cross compiling
+function(ac_check_sizeof type)
+  check_type_size(${type} size)
+  if (HAVE_size STREQUAL "TRUE")
+  else()
+       message(FATAL_ERROR "Type ${type} not found.")
+  endif()
+  string(TOUPPER "SIZEOF_${type}" varname)
+  string(REPLACE " " "_" varname ${varname})
+  string(REPLACE "*" "P" varname ${varname})
+
+  set("${varname}_doc" "The size of '${type}' as computed by sizeof" PARENT_SCOPE)
+  set("${varname}_defined" 1 PARENT_SCOPE)
+  set("${varname}_val" ${size} PARENT_SCOPE)
+  set (autoheader_vars ${autoheader_vars} ${varname} PARENT_SCOPE)
+endfunction()
+
+# Implementation of autoheader
+function(AUTOHEADER filename variables)
+  set(tmp_filename "${filename}.tmp")
+  file(WRITE ${tmp_filename} "")
+  foreach(var ${${variables}})
+       file(APPEND ${tmp_filename} "\n/* ${${var}_doc} */\n")
+       if(${${var}_defined})
+         file(APPEND ${tmp_filename} "#define ${var} ${${var}_val}\n")
+       else()
+         file(APPEND ${tmp_filename} "/* #undef ${var} */\n")
+       endif()
+  endforeach()
+  # FIXME: This is unix specific
+  execute_process(COMMAND diff ${filename} ${filename}.tmp RESULT_VARIABLE diff_res OUTPUT_QUIET)
+  if (NOT diff_res STREQUAL 0)
+       message(STATUS "generating ${filename}.")
+       execute_process(COMMAND mv ${filename}.tmp ${filename})
+  else()
+       message(STATUS "${filename} is unchanged.")
+  endif()
+endfunction()
+
+function(ac_msg_checking)
+  message(STATUS "checking ${ARGV}...")
+  set(last_msg_checking ${ARGV} PARENT_SCOPE)
+endfunction()
+
+function(ac_msg_result)
+  message(STATUS "checking ${last_msg_checking}... ${ARGV}")
+endfunction()
+
+function(ac_msg_error)
+  message(FATAL_ERROR "${ARGV}")
+endfunction()
+
+function(ac_msg_warn)
+  message(STATUS "WARNING: ${ARGV}")
+endfunction()
+
+# The lines commented out using ### are the stuff from configure.in which still 
+# need to be ported to cmake
+# The svn revision of the configure.in used is r132691
+
+ac_define_unquoted(VERSION 2.5 "Version number of package")
+###
+###set(API_VER 1.0)
+###AC_SUBST(API_VER)
+###
+###AC_PROG_LN_S
+###
+#### In case of cygwin, override LN_S, irrespective of what it determines.
+#### The build uses cygwin, but the actual runtime doesn't.
+###case $host_os in
+###*cygwin* ) set(LN_S 'cp -p';;)
+###esac
+###
+###
+
+#
+# These variables are the CPPFLAGS/CFLAGS passed to libgc's configure
+# libgc should inherit the original CFLAGS/CPPFLAGS passed to configure, i.e. -O0
+#
+set(CPPFLAGS_FOR_LIBGC ${CPPFLAGS})
+set(CFLAGS_FOR_LIBGC ${CFLAGS})
+
+#
+# These are the flags that need to be stored in the mono.pc file for 
+# compiling code that will embed Mono
+#
+set(libmono_cflags "")
+set(libmono_ldflags "")
+
+###AC_SUBST(libmono_cflags)
+###AC_SUBST(libmono_ldflags)
+###
+#### Variable to have relocatable .pc files (lib, or lib64)
+###set(reloc_libdir `basename ${libdir}`)
+###AC_SUBST(reloc_libdir)
+
+# if linker handles the version script
+set(no_version_script no)
+
+# Set to yes if Unix sockets cannot be created in an anonymous namespace
+set(need_link_unlink no)
+
+#
+# Platform support
+#
+
+# Obtain the GNU style target
+# From GetTargetTriple.cmake in LLVM
+function( get_target_triple var )
+  if( MSVC )
+    set( ${var} "i686-pc-win32" PARENT_SCOPE )
+  else( MSVC )
+    set(config_guess config.guess)
+    execute_process(COMMAND sh ${config_guess}
+      RESULT_VARIABLE TT_RV
+      OUTPUT_VARIABLE TT_OUT
+      OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if( NOT TT_RV EQUAL 0 )
+      message(FATAL_ERROR "Failed to execute ${config_guess}")
+    endif( NOT TT_RV EQUAL 0 )
+    set( ${var} ${TT_OUT} PARENT_SCOPE )
+  endif( MSVC )
+endfunction( get_target_triple var )
+
+get_target_triple(host)
+
+message(STATUS "checking host platform characteristics...")
+
+set(libgc_threads no)
+set(has_dtrace no)
+set(parallel_mark yes)
+
+if(host MATCHES .*-.*-linux.*)
+  set(platform_win32 no)
+  set(CPPFLAGS "${CPPFLAGS} -DHAVE_CONFIG_H -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP -DUSE_MUNMAP")
+  set(libmono_cflags "-D_REENTRANT")
+  set(libmono_ldflags "-lpthread")
+  set(libdl "-ldl")
+  set(libgc_threads pthreads)
+  set(AOT_SUPPORTED "yes")
+  set(use_sigposix yes)
+else()
+  message(FATAL_ERROR "The cmake build doesn't yet support host '${host}'.")
+endif()
+
+#### Thread configuration inspired by sleepycat's db
+###case "$host" in
+###    *-*-mingw*|*-*-cygwin*)
+###            set(platform_win32 yes)
+###            ac_define(PLATFORM_WIN32,1,[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])
+###            if test "x$cross_compiling" = "xno"; then
+###                    set(CC "gcc -mno-cygwin -g")
+###                    # So libgc configure gets -mno-cygwin
+###                    export CC
+###            fi
+###            set(HOST_CC "gcc")
+###            # Windows 2000 is required that includes Internet Explorer 5.01
+###            set(CPPFLAGS "$CPPFLAGS -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0501 -D_UNICODE -DUNICODE -DWIN32_THREADS -DFD_SETSIZE=1024")
+###            set(libmono_cflags "-mno-cygwin -mms-bitfields -mwindows")
+###            set(libmono_ldflags "-mno-cygwin -mms-bitfields -mwindows")
+###            set(libdl )
+###            set(libgc_threads win32)
+###            set(gc_default included)
+###            set(with_sigaltstack no)
+###            set(LN_S cp)
+###            # This forces libgc to use the DllMain based thread registration code on win32
+###            set(libgc_configure_args "$libgc_configure_args --enable-win32-dllmain=yes")
+###            ;;
+###    *-*-*netbsd*)
+###            set(platform_win32 no)
+###            set(CPPFLAGS "$CPPFLAGS -D_REENTRANT -DGC_NETBSD_THREADS -D_GNU_SOURCE")
+###            set(libmono_cflags "-D_REENTRANT")
+###            set(LDFLAGS "$LDFLAGS -pthread")
+###            set(CPPFLAGS "$CPPFLAGS -DPLATFORM_BSD")
+###            set(libmono_ldflags "-pthread")
+###            set(need_link_unlink yes)
+###            set(libdl "-ldl")
+###            set(libgc_threads pthreads)
+###            set(with_sigaltstack no)
+###            set(use_sigposix yes)
+###            ;;
+###    *-*-*freebsd*)
+###            set(platform_win32 no)
+###            if test "x$PTHREAD_CFLAGS" = "x"; then
+###                    set(CPPFLAGS "$CPPFLAGS -DGC_FREEBSD_THREADS")
+###                    set(libmono_cflags )
+###            else
+###                    set(CPPFLAGS "$CPPFLAGS $PTHREAD_CFLAGS -DGC_FREEBSD_THREADS")
+###                    set(libmono_cflags "$PTHREAD_CFLAGS")
+###            fi
+###            if test "x$PTHREAD_LIBS" = "x"; then
+###                    set(LDFLAGS "$LDFLAGS -pthread")
+###                    set(libmono_ldflags "-pthread")
+###            else
+###                    set(LDFLAGS "$LDFLAGS $PTHREAD_LIBS")
+###                    set(libmono_ldflags "$PTHREAD_LIBS")
+###            fi
+###            set(CPPFLAGS "$CPPFLAGS -DPLATFORM_BSD")
+###            set(need_link_unlink yes)
+###            ac_define(PTHREAD_POINTER_ID, 1, [pthread is a pointer])
+###            set(libdl )
+###            set(libgc_threads pthreads)
+###            # This doesn't seem to work as of 7.0 on amd64
+###            set(with_sigaltstack no)
+#### TLS is only partially implemented on -CURRENT (compiler support
+#### but NOT library support)
+####
+###            set(with_tls pthread)
+###            set(use_sigposix yes)
+###            ;;
+###    *-*-*openbsd*)
+###            set(platform_win32 no)
+###            set(CPPFLAGS "$CPPFLAGS -D_THREAD_SAFE -DGC_FREEBSD_THREADS -DPLATFORM_BSD")
+###            set(libmono_cflags "-D_THREAD_SAFE")
+###            set(LDFLAGS "$LDFLAGS -pthread")
+###            set(libmono_ldflags "-pthread")
+###            set(need_link_unlink yes)
+###            ac_define(PTHREAD_POINTER_ID)
+###            set(libdl )
+###            set(libgc_threads pthreads)
+###            set(use_sigposix yes)
+###            ;;
+###    *-*-linux*)
+###            set(platform_win32 no)
+###            set(CPPFLAGS "$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP -DUSE_MUNMAP")
+###            set(libmono_cflags "-D_REENTRANT")
+###            set(libmono_ldflags "-lpthread")
+###            set(libdl "-ldl")
+###            set(libgc_threads pthreads)
+###            set(AOT_SUPPORTED "yes")
+###            set(use_sigposix yes)
+###            ;;
+###    *-*-hpux*)
+###            set(platform_win32 no)
+###            set(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
+###                    set(CFLAGS "$CFLAGS +ESdbgasm")
+###                    # Arrange for run-time dereferencing of null
+###                    # pointers to produce a SIGSEGV signal.
+###                    set(LDFLAGS "$LDFLAGS -z")
+###            fi
+###            set(CFLAGS "$CFLAGS +ESdbgasm")
+###            set(LDFLAGS "$LDFLAGS -z")
+###            set(libmono_cflags "-D_REENTRANT")
+###            set(libmono_ldflags "-lpthread")
+###            set(libgc_threads pthreads)
+###            set(need_link_unlink yes)
+###            set(use_sigposix yes)
+###            ;;
+###    *-*-solaris*)
+###            set(platform_win32 no)
+###            set(CPPFLAGS "$CPPFLAGS -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_MMAP -DUSE_MUNMAP -DPLATFORM_SOLARIS")
+###            set(need_link_unlink yes)
+###            set(libmono_cflags "-D_REENTRANT")
+###            set(libgc_threads pthreads)
+###            # This doesn't seem to work on solaris/x86, but the configure test runs
+###            set(with_tls pthread)
+###            set(has_dtrace yes)
+###            set(use_sigposix yes)
+###            ;;
+###    *-*-darwin*)
+###            set(parallel_mark "Disabled_Currently_Hangs_On_MacOSX")
+###            set(platform_win32 no)
+###            set(platform_darwin yes)
+###            set(CPPFLAGS "$CPPFLAGS -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP")
+###            set(CPPFLAGS "$CPPFLAGS -DGetCurrentProcess=MonoGetCurrentProcess -DGetCurrentThread=MonoGetCurrentThread -DCreateEvent=MonoCreateEvent")
+###            set(libmono_cflags "-D_THREAD_SAFE")
+###            set(LDFLAGS "$LDFLAGS -pthread")
+###            set(libmono_ldflags "-pthread")
+###            set(need_link_unlink yes)
+###            ac_define(PTHREAD_POINTER_ID)
+###            ac_define(USE_MACH_SEMA, 1, [...])
+###            set(no_version_script yes)
+###            set(libdl )
+###            set(libgc_threads pthreads)
+###            set(has_dtrace yes)
+###            if test "x$cross_compiling" = "xyes"; then
+###                    set(has_broken_apple_cpp yes)
+###            fi
+###            ;;
+###    *)
+###            AC_MSG_WARN([*** Please add $host to configure.in checks!])
+###            set(platform_win32 no)
+###            set(libdl "-ldl")
+###            ;;
+###esac
+###AC_MSG_RESULT(ok)
+###
+###if test x$need_link_unlink = xyes; then
+###   ac_define(NEED_LINK_UNLINK, 1, [Define if Unix sockets cannot be created in an anonymous namespace])
+###fi
+###
+
+if(use_sigposix)
+  set(PLATFORM_SIGPOSIX 1)
+endif()
+if(platform_win32)
+  set(PLATFORM_WIN32 yes)
+endif()
+if(${target_os} MATCHES "*linux*")
+  set(PLATFORM_LINUX yes)
+endif()
+if(platform_darwin)
+  set(PLATFORM_DARWIN yes)
+endif()
+
+include(CMakeDetermineASM-ATTCompiler)
+
+find_program(BISON NAMES bison)
+
+if(BISON STREQUAL "BISON-NOTFOUND")
+  message(FATAL_ERROR "You need to install bison")
+else()
+  message(STATUS "Found bison: ${BISON}")
+endif()
+
+###AC_PROG_INSTALL
+###AC_PROG_AWK
+#### We should use AM_PROG_AS, but it's not available on automake/aclocal 1.4
+###: ${set(CCAS '$(CC)'})
+#### Set ASFLAGS if not already set.
+###: ${set(CCASFLAGS '$(CFLAGS)'})
+###AC_SUBST(CCAS)
+###AC_SUBST(CCASFLAGS)
+###
+#### may require a specific autoconf version
+#### AC_PROG_CC_FOR_BUILD
+#### CC_FOR_BUILD not automatically detected
+###set(CC_FOR_BUILD $CC)
+###set(CFLAGS_FOR_BUILD $CFLAGS)
+###set(BUILD_EXEEXT )
+###if test "x$cross_compiling" = "xyes"; then
+###    set(CC_FOR_BUILD cc)
+###    set(CFLAGS_FOR_BUILD )
+###    set(BUILD_EXEEXT "")
+###fi
+###AC_SUBST(CC_FOR_BUILD)
+###AC_SUBST(CFLAGS_FOR_BUILD)
+###AC_SUBST(HOST_CC)
+###AC_SUBST(BUILD_EXEEXT)
+###
+###AM_CONDITIONAL(CROSS_COMPILING, [test x$cross_compiling = xyes])
+###AM_CONDITIONAL(USE_BATCH_FILES, [test x$platform_win32 = xyes -a x$cross_compiling = xyes])
+###
+#### Set STDC_HEADERS
+###AC_HEADER_STDC
+###AC_LIBTOOL_WIN32_DLL
+#### This causes monodis to not link correctly
+####AC_DISABLE_FAST_INSTALL
+###set(export_ldflags `(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`)
+###AC_SUBST(export_ldflags)
+###
+#### Test whenever ld supports -version-script
+###AC_PROG_LD
+###AC_PROG_LD_GNU
+###if test "x$lt_cv_prog_gnu_ld" = "xno"; then
+###   set(no_version_script yes)
+###fi
+###
+###AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes)
+###
+
+ac_check_headers(unistd.h stdint.h sys/types.h)
+ac_check_headers(sys/filio.h sys/sockio.h netdb.h utime.h sys/utime.h semaphore.h sys/un.h linux/rtc.h sys/syscall.h sys/mkdev.h)
+ac_check_headers(sys/user.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h)
+
+ac_check_headers(zlib.h)
+set(have_zlib ${HAVE_ZLIB_H})
+if(have_zlib)
+  set(compiles)
+  check_c_source_compiles("
+#include <zlib.h>
+void main () {
+#if defined(ZLIB_VERNUM) && (ZLIB_VERNUM >= 0x1230)
+}
+#else
+#error No good zlib found
+#endif
+" compiles)
+  if(compiles)
+       ac_msg_result("Using system zlib")
+       set(zlib_msg "system zlib")
+  set(HAVE_ZLIB yes)
+  else()
+       ac_msg_result("Using embedded zlib")
+       set(have_zlib no)
+       set(zlib_msg "bundled zlib")
+  endif()
+endif()
+
+if(have_zlib)
+  set(HAVE_ZLIB yes)
+endif()
+ac_define(HAVE_ZLIB 1 "Have system zlib")
+
+# for mono/metadata/debug-symfile.c
+ac_check_headers(elf.h)
+
+# for support
+ac_check_headers(poll.h)
+ac_check_headers(sys/poll.h)
+ac_check_headers(sys/wait.h)
+ac_check_headers(grp.h)
+ac_check_headers(syslog.h)
+
+# for mono/dis
+ac_check_headers(wchar.h)
+ac_check_headers(ieeefp.h)
+
+# Check whenever using GCC
+include(CheckCSourceCompiles)
+include(CheckCCompilerFlag)
+check_c_source_compiles("
+#ifdef __GNUC__
+#else
+#error 1
+#endif
+void main () {}
+" GCC)
+
+ac_msg_checking("for isinf")
+set(compiles)
+check_c_source_compiles("
+#include <math.h>
+void main () {
+int f = isinf (1);
+}
+" compiles)
+if(compiles)
+  ac_msg_result(yes)
+  ac_define(HAVE_ISINF 1 "isinf available")
+else()
+  ac_msg_result(no)
+endif()
+
+# not 64 bit clean in cross-compile
+ac_check_sizeof("void *" 4)
+
+set(WARN '')
+
+if(GCC)
+  set(WARN "-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings")
+  # The runtime code does not respect ANSI C strict aliasing rules
+  set(CFLAGS "${CFLAGS} -fno-strict-aliasing")
+  CHECK_C_COMPILER_FLAG("-Wdeclaration-after-statement" HAS_WDECL_AFTER_STATEMENT)
+  if(HAS_WDECL_AFTER_STATEMENT)
+       set(WARN "${WARN} -Wdeclaration-after-statement")
+  endif()
+else()
+       # The Sun Forte compiler complains about inline functions that access static variables
+       # so disable all inlining.
+###    case "$host" in
+###    *-*-solaris*)
+###            set(CFLAGS "$CFLAGS -Dinline=")
+###            ;;
+###    esac
+###fi
+endif()
+
+set(CFLAGS "${CFLAGS} -g ${WARN}")
+
+###set(CFLAGS_FOR_LIBGC "$CFLAGS_FOR_LIBGC -g")
+###
+
+set(srcdir ${CMAKE_SOURCE_DIR})
+set(top_srcdir ${CMAKE_SOURCE_DIR})
+
+# FIXME:
+set(top_builddir ${CMAKE_BINARY_DIR})
+
+# Where's the 'mcs' source tree?
+if(EXISTS ${srcdir}/mcs)
+  set(mcsdir mcs)
+else()
+  set(mcsdir ../mcs)
+endif()
+
+#
+# A sanity check to catch cases where the package was unpacked
+# with an ancient tar program (Solaris)
+#
+ac_msg_checking("integrity of package")
+if(EXISTS ${srcdir}/${mcsdir}/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapTypeMapper.cs)
+  ac_msg_result(ok)
+else()
+  set(errorm "Your mono distribution is incomplete;  if unpacking from a tar file, make sure you use GNU tar;  see http://www.mono-project.com/IncompletePackage for more details")
+  ac_msg_error(${errorm})
+endif()
+
+set(mcs_topdir ${top_srcdir}/${mcsdir})
+set(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 && test x$enable_mcs_build != xno])
+###
+###AC_SUBST([mcs_topdir])
+###AC_SUBST([mcs_topdir_from_srcdir])
+###
+#### Where's the 'olive' source tree?
+###if test -d $srcdir/olive; then
+###  set(olivedir olive)
+###else
+###  set(olivedir ../olive)
+###fi
+###
+###if test -d $srcdir/$olivedir; then
+###set(olive_topdir '$(top_srcdir)/'$olivedir)
+###fi
+###
+#### gettext: prepare the translation directories. 
+#### we do not configure the full gettext, as we consume it dynamically from C#
+###AM_PO_SUBDIRS
+###
+###if test "x$USE_NLS" = "xyes"; then
+###   AC_CHECK_PROG(HAVE_MSGFMT, msgfmt,yes,no)
+###
+###   if test "x$HAVE_MSGFMT" = "xno"; then
+###      ac_msg_error([msgfmt not found. You need to install the 'gettext' package, or pass --enable-set(nls no to configure.]))
+###   fi
+###fi
+###
+set(libgdiplus installed CACHE STRING "=installed|sibling|<path> Override the libgdiplus used for System.Drawing tests (defaults to installed)")
+set(with_libgdiplus ${libgdiplus})
+
+###case $with_libgdiplus in
+###no|installed) set(libgdiplus_loc  ;;)
+###yes|sibling) set(libgdiplus_loc `cd ../libgdiplus && pwd`/src/libgdiplus.la ;;)
+###/*) set(libgdiplus_loc $with_libgdiplus ;;)
+###*) set(libgdiplus_loc `pwd`/$with_libgdiplus ;;)
+###esac
+###AC_SUBST([libgdiplus_loc])
+###
+###
+###set(pkg_config_path )
+###set(crosspkgdir, [  --with-set(crosspkgdir /path/to/pkg-config/dir      Change pkg-config dir to custom dir],)
+###    if test x$with_crosspkgdir = "x"; then
+###            if test -s $PKG_CONFIG_PATH; then
+###                    set(pkg_config_path $PKG_CONFIG_PATH)
+###            fi
+###    else
+###            set(pkg_config_path $with_crosspkgdir)
+###            set(PKG_CONFIG_PATH $pkg_config_path)
+###            export PKG_CONFIG_PATH
+###    fi
+###)
+###
+###set([glib],
+###    [  --with-set(glib embedded|system    Choose glib API: system or embedded (default to system)],)
+###    [], [set(with_glib system]))
+###
+###set(eglib_dir )
+###
+
+include(FindPkgConfig)
+
+# FIXME:
+set(with_glib "system")
+if (${with_glib} STREQUAL "system")
+  ###  if test "x$cross_compiling" = "xyes"; then
+  ###    set(pkg_config_path "$PKG_CONFIG_PATH")
+  ###    unset PKG_CONFIG_PATH
+  ###  fi
+  PKG_CHECK_MODULES(GLIB2 REQUIRED glib-2.0 gthread-2.0)
+  set(BUILD_GLIB_CFLAGS ${GLIB2_CFLAGS})
+  set(BUILD_GLIB_LIBS ${GLIB2_LIBRARIES})
+
+  ###  if test "x$cross_compiling" = "xyes"; then
+  ###    set(PKG_CONFIG_PATH $pkg_config_path)
+  ###    export PKG_CONFIG_PATH
+  ###  fi
+  ###  
+  ## Versions of dependencies
+  set(GLIB_REQUIRED_VERSION 2.4.0)
+
+  PKG_CHECK_MODULES(GLIB2 REQUIRED glib-2.0 >= ${GLIB_REQUIRED_VERSION} gthread-2.0)
+  set(GLIB_CFLAGS ${GLIB2_CFLAGS})
+  set(GLIB_LIBS ${GLIB2_LIBRARIES})
+  PKG_CHECK_MODULES(GMODULE REQUIRED gmodule-2.0)
+  set(GMODULE_CFLAGS ${GMODULE_CFLAGS})
+  set(GMODULE_LIBS ${GMODULE_LIBRARIES})
+endif()
+
+###case $with_glib in
+###embedded) 
+###  set(GLIB_CFLAGS '-I$(top_srcdir)/eglib/src -I$(top_builddir)/eglib/src')
+###  set(GLIB_LIBS '-L$(top_builddir)/eglib/src -leglib -lm')
+###  set(BUILD_GLIB_CFLAGS "$GLIB_CFLAGS")
+###  set(BUILD_GLIB_LIBS "$GLIB_LIBS")
+###  set(GMODULE_CFLAGS "$GLIB_CFLAGS")
+###  set(GMODULE_LIBS "$GLIB_LIBS")
+###  set(eglib_dir eglib)
+###  AC_CONFIG_SUBDIRS(eglib)
+###  ;;
+###*)
+###  ac_msg_error([Invalid argument to --with-glib.])
+###esac
+if(with_glib STREQUAL "embedded")
+  set(EGLIB_BUILD yes)
+endif()
+###  
+###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)
+###AC_SUBST(eglib_dir)
+###
+###if test x$cross_compiling$platform_win32 = xnoyes; then
+###   ac_msg_checking(for cygwin glib2-dev package)
+###   if [ cygcheck --f /usr/lib/libglib-2.0.dll.a | grep -q glib2-devel ]; then
+###      ac_msg_result(found)
+###      ac_msg_error([Mono cannot be built with the cygwin glib2-devel package installed, because that package doesn't work with -mno-cygwin. Please uninstall it then re-run configure.])
+###   else
+###      ac_msg_result(not found, ok)
+###   fi
+###
+###   ac_msg_checking(for broken gwin32.h)
+###   set(glib_include `$PKG_CONFIG --cflags-only-I glib-2.0 | sed -e 's/ -I.*//g' | sed -e 's/-I//g'`)
+###   if test -f $glib_include/glib/gwin32.h; then
+###      if [ grep ftruncate $glib_include/glib/gwin32.h | grep -q define ]; then
+###             ac_msg_result(failed)
+###             set(hashmark '#')
+###             ac_msg_error([Your version of gwin32.h is broken and will cause compilation errors when building mono. Please fix it by deleting the line: '$hashmark   define ftruncate...' from '$glib_include/glib/gwin32.h' then re-run configure.])
+###      fi
+###   fi
+###   ac_msg_result(ok)
+###fi
+
+# Enable support for fast thread-local storage
+# Some systems have broken support, so we allow to disable it.
+set(tls __thread CACHE STRING "Select Thread Local Storage implementation. Possible values are '__thread_' and 'pthread' (defaults to __thread)")
+set(with_tls ${tls})
+
+# Enable support for using sigaltstack for SIGSEGV and stack overflow handling
+# This does not work on some platforms (bug #55253)
+set(sigaltstack yes CACHE BOOL "Enable/disable support for sigaltstack (defaults to yes)")
+set(with_sigaltstack ${sigaltstack})
+
+set(static_mono yes CACHE BOOL "Link mono statically to libmono (faster) (defaults to yes)")
+set(with_static_mono ${static_mono})
+###
+###if test "x$enable_static" = "xno"; then
+###   set(with_static_mono no)
+###fi
+###
+###if test "x$platform_win32" = "xyes"; then
+###   # Boehm GC requires the runtime to be in its own dll
+###   set(with_static_mono no)
+###fi
+###
+if(with_static_mono)
+  set(STATIC_MONO yes)
+endif()
+###AC_ARG_ENABLE(mcs-build, [  --disable-mcs-build disable the build of the mcs directory], set(try_mcs_build $enableval, enable_mcs_build=yes))
+###
+###set(xen_opt,   [  --with-set(xen_opt yes,no          Enable Xen-specific behaviour (defaults to yes)],[],[with_xen_opt=yes]))
+###if test "x$with_xen_opt" = "xyes"; then
+###    ac_define(MONO_XEN_OPT, 1, [Xen-specific behaviour])
+###    set(ORIG_CFLAGS $CFLAGS)
+###    set(CFLAGS "$CFLAGS -mno-tls-direct-seg-refs")
+###    ac_msg_checking(for -mno-tls-direct-seg-refs option to gcc)
+###    AC_TRY_COMPILE([], [
+###                                       void main () { }
+###    ], [
+###       ac_msg_result(yes)
+###       # Pass it to libgc as well
+###       set(CFLAGS_FOR_LIBGC "$CFLAGS_FOR_LIBGC -mno-tls-direct-seg-refs")
+###    ], [
+###       ac_msg_result(no)
+###       set(CFLAGS $ORIG_CFLAGS)
+###    ])
+###fi
+
+set (quiet-build yes CACHE BOOL "Enable quiet runtime build (on by default)")
+
+set(DISABLED_FEATURES none)
+
+###AC_ARG_ENABLE(minimal, [  --enable-set(minimal LIST      drop support for LIST subsystems.)
+###     LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug,
+###     reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd.],
+###[
+###    for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do
+###            eval "mono_feature_disable_$set(feature 'yes'")
+###            AC_MSG_NOTICE([Disabled support for feature: $feature])
+###    done
+###    set(DISABLED_FEATURES $enable_minimal)
+###    set(disabled "Disabled:    $enable_minimal")
+###],[])
+###
+ac_define_unquoted(DISABLED_FEATURES "${DISABLED_FEATURES}" "String of disabled features")
+###
+###if test "x$mono_feature_disable_aot" = "xyes"; then
+###    ac_define(DISABLE_AOT, 1, [Disable AOT support])
+###fi
+###
+###if test "x$mono_feature_disable_profiler" = "xyes"; then
+###    ac_define(DISABLE_PROFILER, 1, [Disable default profiler support])
+###fi
+###AM_CONDITIONAL(DISABLE_PROFILER, test x$mono_feature_disable_profiler = xyes)
+###
+###if test "x$mono_feature_disable_decimal" = "xyes"; then
+###    ac_define(DISABLE_DECIMAL, 1, [Disable System.Decimal support])
+###fi
+###
+###if test "x$mono_feature_disable_pinvoke" = "xyes"; then
+###    ac_define(DISABLE_PINVOKE, 1, [Disable P/Invoke support])
+###fi
+###
+###if test "x$mono_feature_disable_debug" = "xyes"; then
+###    ac_define(DISABLE_DEBUG, 1, [Disable runtime debugging support])
+###fi
+###
+###if test "x$mono_feature_disable_reflection_emit" = "xyes"; then
+###    ac_define(DISABLE_REFLECTION_EMIT, 1, [Disable reflection emit support])
+###    set(mono_feature_disable_reflection_emit_save yes)
+###fi
+###
+###if test "x$mono_feature_disable_reflection_emit_save" = "xyes"; then
+###    ac_define(DISABLE_REFLECTION_EMIT_SAVE, 1, [Disable assembly saving support in reflection emit])
+###fi
+###
+###if test "x$mono_feature_disable_large_code" = "xyes"; then
+###    ac_define(DISABLE_LARGE_CODE, 1, [Disable support for huge assemblies])
+###fi
+###
+###if test "x$mono_feature_disable_logging" = "xyes"; then
+###    ac_define(DISABLE_LOGGING, 1, [Disable support debug logging])
+###fi
+###
+###if test "x$mono_feature_disable_com" = "xyes"; then
+###    ac_define(DISABLE_COM, 1, [Disable COM support])
+###fi
+###
+###if test "x$mono_feature_disable_ssa" = "xyes"; then
+###    ac_define(DISABLE_SSA, 1, [Disable advanced SSA JIT optimizations])
+###fi
+###
+###if test "x$mono_feature_disable_generics" = "xyes"; then
+###    ac_define(DISABLE_GENERICS, 1, [Disable generics support])
+###fi
+###
+###if test "x$mono_feature_disable_attach" = "xyes"; then
+###    ac_define(DISABLE_ATTACH, 1, [Disable agent attach support])
+###fi
+###
+###if test "x$mono_feature_disable_jit" = "xyes"; then
+###    ac_define(DISABLE_JIT, 1, [Disable the JIT, only full-aot mode will be supported by the runtime.])
+###fi
+###
+###AM_CONDITIONAL(DISABLE_JIT, test x$mono_feature_disable_jit = xyes)
+###
+###if test "x$mono_feature_disable_simd" = "xyes"; then
+###    ac_define(DISABLE_SIMD, 1, [Disable SIMD intrinsics related optimizations.])
+###fi
+###
+###ac_msg_checking(for visibility __attribute__)
+###AC_TRY_COMPILE([], [
+###   void __attribute__ ((visibility ("hidden"))) doit (void) {}
+###   void main () { doit (); }
+###], [
+###   set(have_visibility_hidden yes)
+###   ac_msg_result(yes)
+###], [
+###   set(have_visibility_hidden no)
+###   ac_msg_result(no)
+###])
+###
+
+#
+# libgc checks
+#
+
+set(gc_headers no)
+set(gc included)
+set(use_included_gc no)
+set(libgc_configure_args)
+set(gc_default included)
+
+set(gc ${gc_default} CACHE STRING "The GC library to use (defaults to included)")
+set(with_gc ${gc})
+
+# FIXME:
+set(enable_parallel_mark yes)
+###AC_ARG_ENABLE(parallel-mark, [  --enable-parallel-mark     Enables GC Parallel Marking], set(enable_parallel_mark $enableval, enable_parallel_mark=$parallel_mark))
+###if test x$enable_parallel_mark = xyes; then
+###    set(libgc_configure_args "$libgc_configure_args --enable-parallel-mark")
+###fi
+###
+set(LIBGC_CFLAGS )
+set(LIBGC_LIBS )
+set(LIBGC_STATIC_LIBS )
+set(libgc_dir )
+
+if (gc STREQUAL included)
+  set(found_boehm yes)
+  set(gc_headers yes)
+  set(use_included_gc yes)
+  set(libgc_dir libgc)
+
+  set(LIBGC_CFLAGS '-I${top_srcdir}/libgc/include')
+  set(LIBGC_LIBS '${top_builddir}/libgc/libmonogc.la')
+  set(LIBGC_STATIC_LIBS '${top_builddir}/libgc/libmonogc-static.la')
+
+  ac_define(HAVE_BOEHM_GC 1 "Have Boehm GC")
+###  AC_SUBST(HAVE_BOEHM_GC)
+
+  ac_define(HAVE_GC_H 1 "Have gc.h")
+  ac_define(USE_INCLUDED_LIBGC 1 "Use included libgc")
+
+  # The included libgc contains GCJ support
+  ac_define(HAVE_GC_GCJ_MALLOC 1 "Have GC_gcj_malloc")
+  ac_define(HAVE_GC_ENABLE 1 "Have GC_enable")
+  if (enable_parallel_mark STREQUAL yes)
+       ac_define_unquoted(USED_GC_NAME "Included Boehm (with typed GC and Parallel Mark)" "GC description")
+  else()
+       ac_define_unquoted(USED_GC_NAME "Included Boehm (with typed GC)" "GC description")
+  endif()
+endif()
+  
+###case "x$gc" in
+###    xboehm|xbohem|xyes)
+###            ac_check_headers(gc.h gc/gc.h, set(gc_headers yes))
+###            AC_CHECK_LIB(gc, GC_malloc, set(found_boehm "yes",,$libdl))
+###
+###            if test "x$found_boehm" != "xyes"; then
+###                    ac_msg_error("GC requested but libgc not found! Install libgc or run configure with --with-set(gc none."))
+###            fi
+###            if test "x$gc_headers" != "xyes"; then
+###                    ac_msg_error("GC requested but header files not found! You may need to install them by hand.")
+###            fi
+###
+###            ac_define(HAVE_BOEHM_GC, 1, [Have Boehm GC])
+###            AC_SUBST(HAVE_BOEHM_GC)
+###            set(LIBGC_LIBS "-lgc $libdl")
+###            set(LIBGC_STATIC_LIBS "$LIBGC_LIBS")
+###
+###            # ac_check_funcs does not work for some reason...
+###            AC_CHECK_LIB(gc, GC_gcj_malloc, set(found_gcj_malloc "yes",,$libdl))
+###            if test "x$found_gcj_malloc" = "xyes"; then
+###                    ac_define(HAVE_GC_GCJ_MALLOC, 1, [Have GC_gcj_malloc])
+###                    ac_define_unquoted(USED_GC_NAME, "System Boehm (with typed GC)", [GC description])
+###            else
+###                    ac_define_unquoted(USED_GC_NAME, "System Boehm (no typed GC)", [GC description])
+###            fi
+###            AC_CHECK_LIB(gc, GC_enable, set(found_gc_enable "yes",,$libdl))
+###            if test "x$found_gc_enable" = "xyes"; then
+###                    ac_define(HAVE_GC_ENABLE, 1, [Have 'GC_enable'])
+###            fi
+###            ;;
+###
+###    xincluded)
+###            set(found_boehm yes)
+###            set(gc_headers yes)
+###            set(use_included_gc yes)
+###            set(libgc_dir libgc)
+###
+###            set(LIBGC_CFLAGS '-I$(top_srcdir)/libgc/include')
+###            set(LIBGC_LIBS '$(top_builddir)/libgc/libmonogc.la')
+###            set(LIBGC_STATIC_LIBS '$(top_builddir)/libgc/libmonogc-static.la')
+###
+###            ac_define(HAVE_BOEHM_GC, 1, [Have Boehm GC])
+###            AC_SUBST(HAVE_BOEHM_GC)
+###
+###            ac_define(HAVE_GC_H, 1, [Have gc.h])
+###            ac_define(USE_INCLUDED_LIBGC, 1, [Use included libgc])
+###
+###            # The included libgc contains GCJ support
+###            ac_define(HAVE_GC_GCJ_MALLOC, 1, [Have GC_gcj_malloc])
+###            ac_define(HAVE_GC_ENABLE, 1, [Have GC_enable])
+###            if test x$enable_parallel_mark = xyes; then
+###                    ac_define_unquoted(USED_GC_NAME, "Included Boehm (with typed GC and Parallel Mark)", [GC description])
+###            else
+###                    ac_define_unquoted(USED_GC_NAME, "Included Boehm (with typed GC)", [GC description])
+###            fi
+###            ;;
+###
+###    xsgen)
+###            set(found_boehm no)
+###            set(gc_headers no)
+###            set(use_included_gc no)
+###            ac_define(HAVE_SGEN_GC,1,[Using the simple generational GC.])
+###            ac_define(HAVE_MOVING_COLLECTOR,1,[The GC can move objects.])
+###            ac_define(HAVE_WRITE_BARRIERS,1,[The GC needs write barriers.])
+###            ac_define_unquoted(USED_GC_NAME, "Simple generational", [GC description])
+###            ;;
+###
+###    xnone)
+###            AC_MSG_WARN("Compiling mono without GC.")
+###            ac_define_unquoted(USED_GC_NAME, "none", [GC description])
+###            ac_define(HAVE_NULL_GC,1,[No GC support.])
+###            ;;
+###    *)
+###            ac_msg_error([Invalid argument to --with-gc.])
+###            ;;
+###esac
+###
+###set(large-heap, [  --with-large-set(heap yes,no       Enable support for GC heaps larger than 3GB (defaults to no)], [large_heap=$withval], [large_heap=no]))
+###if test "x$large_heap" = "xyes"; then
+###   echo "FOO"
+###   set(CPPFLAGS "$CPPFLAGS -DLARGE_CONFIG")
+###fi
+###
+###AM_CONDITIONAL(INCLUDED_LIBGC, test x$use_included_gc = xyes)
+###AC_SUBST(LIBGC_CFLAGS)
+###AC_SUBST(LIBGC_LIBS)
+###AC_SUBST(LIBGC_STATIC_LIBS)
+###AC_SUBST(libgc_dir)
+###
+#
+# End of libgc checks
+#
+
+include(CheckFunctionExists)
+include(CheckLibraryExists)
+
+if(platform_win32 STREQUAL no)
+
+###
+       # hires monotonic clock support
+###    AC_SEARCH_LIBS(clock_gettime, rt)
+
+  check_function_exists (dlopen dlopen_found)
+  if (dlopen_found)
+       set(DL_LIB "")
+  else()
+       check_library_exists (-ldl dlopen "" libdl_found)
+       if (libdl_found)
+         set(DL_LIB "-ldl")
+       else()
+         set(dl_support no)
+       endif()
+  endif()
+
+  if (dl_support STREQUAL no)
+       # FIXME:
+       ###             AC_MSG_WARN([No dynamic loading support available])
+  else()
+       set(LIBS ${LIBS} ${DL_LIB})
+       ac_define(HAVE_DL_LOADER 1 "dlopen-based dynamic loader available")
+       
+###            # 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);
+###                    }],
+###                            [set(mono_cv_uscore yes],)
+###                            [set(mono_cv_uscore no],)
+###                    [])
+###            ])
+###            if test "x$mono_cv_uscore" = "xyes"; then
+###                    set(MONO_DL_NEED_USCORE 1)
+###            else
+###                    set(MONO_DL_NEED_USCORE 0)
+###            fi
+###            AC_SUBST(MONO_DL_NEED_USCORE)
+###            AC_CHECK_FUNC(dlerror)
+    endif()
+
+       # ******************************************************************
+       # *** Checks for the IKVM JNI interface library                  ***
+       # ******************************************************************
+       set(ikvm-native yes CACHE BOOL "Build the IKVM JNI interface library (defaults to yes)")
+       set(with_ikvm_native ${ikvm-native})
+       set(ikvm_native_dir )
+       if(with_ikvm_native)
+         set(ikvm_native_dir ikvm-native)
+         set(jdk_headers_found "IKVM Native")
+       endif()
+
+       ac_check_headers(execinfo.h)
+
+       ac_check_funcs(getgrgid_r)
+       ac_check_funcs(getgrnam_r)
+       ac_check_funcs(getpwnam_r)
+       ac_check_funcs(getpwuid_r)
+       ac_check_funcs(getresuid)
+       ac_check_funcs(setresuid)
+       ac_check_funcs(kqueue)
+       ac_check_funcs(backtrace_symbols)
+       ac_check_funcs(mkstemp)
+       ac_check_funcs(mmap)
+       ac_check_funcs(madvise)
+       ac_check_funcs(getrusage)
+       ac_check_funcs(getpriority)
+       ac_check_funcs(setpriority)
+
+       ac_check_funcs(sched_setaffinity)
+
+       # ******************************************************************
+       # *** Check for large file support                               ***
+       # *** (If we were using autoconf 2.50 we'd use AC_SYS_LARGEFILE) ***
+       # ******************************************************************
+###    
+       # Check that off_t can represent 2**63 - 1 correctly, working around
+       # potential compiler bugs.  Defines LARGE_FILE_SUPPORT, adds $1 to
+       # CPPFLAGS and sets $large_offt to yes if the test succeeds
+###    set(large_offt no)
+###    AC_DEFUN([LARGE_FILES], [
+###            set(large_CPPFLAGS $CPPFLAGS)
+###            set(CPPFLAGS "$CPPFLAGS $1")
+###            AC_TRY_RUN([
+###                    #include <sys/types.h>
+###
+###                    #define BIG_OFF_T (((off_t)1<<62)-1+((off_t)1<<62))
+###
+###                    int main(void) {
+###                            int set(big_off_t ((BIG_OFF_T%2147483629==721) &&)
+###                                           (BIG_OFF_T%set(2147483647 =1));)
+###                            if(big_off_t) {
+###                                    exit(0);
+###                            } else {
+###                                    exit(1);
+###                            }
+###                    }
+###            ], [
+###                    ac_msg_result(ok)
+###                    ac_define(HAVE_LARGE_FILE_SUPPORT, 1, [Have large file support])
+###                    set(large_CPPFLAGS "$large_CPPFLAGS $1")
+###                    set(large_offt yes)
+###            ], [
+###                    ac_msg_result(no)
+###            ], "")
+###            set(CPPFLAGS $large_CPPFLAGS)
+###    ])
+###
+###    ac_msg_checking(if off_t is 64 bits wide)
+###    LARGE_FILES("")
+###    if test $large_offt = no; then
+###            ac_msg_checking(if set(_FILE_OFFSET_BITS 64 gives 64 bit off_t))
+###            LARGE_FILES("-set(D_FILE_OFFSET_BITS 64"))
+###    fi
+###    if test $large_offt = no; then
+###            AC_MSG_WARN([No 64 bit file size support available])
+###    fi
+###    
+       # *****************************
+       # *** Checks for libsocket  ***
+       # *****************************
+###    AC_CHECK_LIB(socket, socket, set(LIBS "$LIBS -lsocket"))
+###
+       # *******************************
+       # *** Checks for MSG_NOSIGNAL ***
+       # *******************************
+###    ac_msg_checking(for MSG_NOSIGNAL)
+###    AC_TRY_COMPILE([#include <sys/socket.h>], [
+###            int f = MSG_NOSIGNAL;
+###    ], [
+###            # Yes, we have it...
+###            ac_msg_result(yes)
+###            ac_define(HAVE_MSG_NOSIGNAL, 1, [Have MSG_NOSIGNAL])
+###    ], [
+###            # We'll have to use signals
+###            ac_msg_result(no)
+###    ])
+###
+       # *****************************
+       # *** Checks for SOL_IP     ***
+       # *****************************
+###    ac_msg_checking(for SOL_IP)
+###    AC_TRY_COMPILE([#include <netdb.h>], [
+###            int level = SOL_IP;
+###    ], [
+###            # Yes, we have it...
+###            ac_msg_result(yes)
+###            ac_define(HAVE_SOL_IP, 1, [Have SOL_IP])
+###    ], [
+###            # We'll have to use getprotobyname
+###            ac_msg_result(no)
+###    ])
+###
+       # *****************************
+       # *** Checks for SOL_IPV6     ***
+       # *****************************
+###    ac_msg_checking(for SOL_IPV6)
+###    AC_TRY_COMPILE([#include <netdb.h>], [
+###            int level = SOL_IPV6;
+###    ], [
+###            # Yes, we have it...
+###            ac_msg_result(yes)
+###            ac_define(HAVE_SOL_IPV6, 1, [Have SOL_IPV6])
+###    ], [
+###            # We'll have to use getprotobyname
+###            ac_msg_result(no)
+###    ])
+###
+       # *****************************
+       # *** Checks for SOL_TCP    ***
+       # *****************************
+###    ac_msg_checking(for SOL_TCP)
+###    AC_TRY_COMPILE([#include <netdb.h>], [
+###            int level = SOL_TCP;
+###    ], [
+###            # Yes, we have it...
+###            ac_msg_result(yes)
+###            ac_define(HAVE_SOL_TCP, 1, [Have SOL_TCP])
+###    ], [
+###            # We'll have to use getprotobyname
+###            ac_msg_result(no)
+###    ])
+###
+       # *****************************
+       # *** Checks for IP_PKTINFO ***
+       # *****************************
+###    ac_msg_checking(for IP_PKTINFO)
+###    AC_TRY_COMPILE([#include <netdb.h>], [
+###            int level = IP_PKTINFO;
+###    ], [
+###            # Yes, we have it...
+###            ac_msg_result(yes)
+###            ac_define(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
+###    ], [
+###            ac_msg_result(no)
+###    ])
+###
+       # *****************************
+       # *** Checks for IPV6_PKTINFO ***
+       # *****************************
+###    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, 1, [Have IPV6_PKTINFO])
+###    ], [
+###            ac_msg_result(no)
+###    ])
+###
+       # **********************************
+       # *** Checks for IP_DONTFRAGMENT ***
+       # **********************************
+###    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, 1, [Have IP_DONTFRAGMENT])
+###    ], [
+###            ac_msg_result(no)
+###    ])
+###
+       # **********************************
+       # *** Checks for IP_MTU_DISCOVER ***
+       # **********************************
+###    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, 1, [Have IP_MTU_DISCOVER])
+###    ], [
+###            ac_msg_result(no)
+###    ])
+###
+###    # *********************************
+       # *** Check for struct ip_mreqn ***
+       # *********************************
+###    ac_msg_checking(for struct ip_mreqn)
+###    AC_TRY_COMPILE([#include <netinet/in.h>], [
+###            struct ip_mreqn mreq;
+###            mreq.imr_address.s_addr = 0;
+###    ], [
+###            # Yes, we have it...
+###            ac_msg_result(yes)
+###            ac_define(HAVE_STRUCT_IP_MREQN, 1, [Have struct ip_mreqn])
+###    ], [
+###            # We'll just have to try and use struct ip_mreq
+###            ac_msg_result(no)
+###            ac_msg_checking(for struct ip_mreq)
+###            AC_TRY_COMPILE([#include <netinet/in.h>], [
+###                    struct ip_mreq mreq;
+###                    mreq.imr_interface.s_addr = 0;
+###            ], [
+###                    # Yes, we have it...
+###                    ac_msg_result(yes)
+###                    ac_define(HAVE_STRUCT_IP_MREQ, 1, [Have struct ip_mreq])
+###            ], [
+###                    # No multicast support
+###                    ac_msg_result(no)
+###            ])
+###    ])
+###    
+       # **********************************
+       # *** Check for gethostbyname2_r ***
+       # **********************************
+###    ac_msg_checking(for gethostbyname2_r)
+###            AC_TRY_LINK([#include <netdb.h>], [
+###            gethostbyname2_r(NULL,0,NULL,NULL,0,NULL,NULL);
+###    ], [
+###            # Yes, we have it...
+###            ac_msg_result(yes)
+###            ac_define(HAVE_GETHOSTBYNAME2_R, 1, [Have gethostbyname2_r])
+###    ], [
+###            ac_msg_result(no)
+###    ])
+###
+       # *****************************
+       # *** Checks for libnsl     ***
+       # *****************************
+###    AC_CHECK_FUNC(gethostbyaddr, , AC_CHECK_LIB(nsl, gethostbyaddr, set(LIBS "$LIBS -lnsl")))
+
+ac_check_funcs(inet_pton inet_aton)
+
+# ***********************************************
+# *** Checks for size of sockaddr_un.sun_path ***
+# ***********************************************
+# FIXME: cache
+ac_msg_checking("size of sockaddr_un.sun_path")
+
+FILE(WRITE "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest.c"
+"
+                       #include <sys/types.h>
+                       #include <stdio.h>
+                       #include <sys/un.h>
+
+                       int main(void) {
+                               struct sockaddr_un sock_un;
+                               printf(\"%d\\n\", sizeof(sock_un.sun_path));
+                               exit(0);
+                       }
+")
+
+TRY_RUN(run_res run_compiled
+  ${CMAKE_BINARY_DIR}
+  ${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest.c
+  RUN_OUTPUT_VARIABLE output)
+
+set(mono_cv_sizeof_sunpath 0)
+if(run_compiled)
+  if (run_res EQUAL 0)
+       string(REGEX MATCH "[0-9]+" mono_cv_sizeof_sunpath ${output})
+  endif()
+endif()
+
+ac_msg_result(${mono_cv_sizeof_sunpath})
+ac_define(MONO_SIZEOF_SUNPATH ${mono_cv_sizeof_sunpath} "Sizeof sock_un.sun_path")
+###
+       # *************************************
+       # *** Checks for zero length arrays ***
+       # *************************************
+###    ac_msg_checking(whether $CC supports zero length arrays)
+###    AC_TRY_COMPILE([
+###                struct s {
+###                        int  length;
+###                        char data [0];
+###                };
+###        ], [], [
+###            ac_msg_result(yes)
+###            ac_define_unquoted(MONO_ZERO_ARRAY_LENGTH, 0, [Length of zero length arrays])
+###    ], [
+###            ac_msg_result(no)
+###            ac_define_unquoted(MONO_ZERO_ARRAY_LENGTH, 1, [Length of zero length arrays])
+###    ])
+###
+       # *****************************
+       # *** Checks for libxnet    ***
+       # *****************************
+###    case "${host}" in
+###            *solaris* )
+###                    ac_msg_checking(for Solaris XPG4 support)
+###                    if test -f /usr/lib/libxnet.so; then
+###                            set(CPPFLAGS "$CPPFLAGS -D_XOPEN_SOURCE=500")
+###                            set(CPPFLAGS "$CPPFLAGS -D__EXTENSIONS__")
+###                            set(CPPFLAGS "$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED=1")
+###                            set(LIBS "$LIBS -lxnet")
+###                            ac_msg_result(yes)
+###                    else
+###                            ac_msg_result(no)
+###                    fi
+###
+###                    if test "$GCC" = "yes"; then
+###                            set(CFLAGS "$CFLAGS -Wno-char-subscripts")
+###                    fi
+###                    ;;
+###    esac
+###
+       # *****************************
+       # *** Checks for libpthread ***
+       # *****************************
+# on FreeBSD -STABLE, the pthreads functions all reside in libc_r
+# and libpthread does not exist
+#
+###    case "${host}" in
+###            *-*-*freebsd*)
+###                    AC_CHECK_LIB(pthread, main, set(LIBS "$LIBS -pthread"))
+###            ;;
+###            *)
+###                    AC_CHECK_LIB(pthread, main, set(LIBS "$LIBS -lpthread"))
+###            ;;
+###    esac
+ac_check_headers(pthread.h)
+###    ac_check_funcs(pthread_mutex_timedlock)
+###    ac_check_funcs(pthread_getattr_np pthread_attr_get_np)
+###    ac_msg_checking(for PTHREAD_MUTEX_RECURSIVE)
+###    AC_TRY_COMPILE([ #include <pthread.h>], [
+###            pthread_mutexattr_t attr;
+###            pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+###    ], [
+###            ac_msg_result(ok)
+###    ], [
+###            ac_msg_result(no)
+###            AC_MSG_WARN(Using mono_mutex_t for recursive mutexes)
+###            ac_define(USE_MONO_MUTEX, 1, [Use mono_mutex_t])
+###    ])
+###    ac_check_funcs(pthread_attr_setstacksize)
+###    ac_check_funcs(pthread_attr_getstack)
+###    ac_check_funcs(pthread_get_stacksize_np pthread_get_stackaddr_np)
+###
+       # ***********************************
+       # *** Checks for working __thread ***
+       # ***********************************
+###    ac_msg_checking(for working __thread)
+###    if test "x$with_tls" != "x__thread"; then
+###            ac_msg_result(disabled)
+###    else
+###            AC_TRY_RUN([
+###                    #include <pthread.h>
+###                    __thread int i;
+###                    static int res1, res2;
+###
+###                    void thread_main (void *arg)
+###                    {
+###                            i = arg;
+###                            sleep (1);
+###                            if (arg == 1)
+###                                    res1 = (i == arg);
+###                            else
+###                                    res2 = (i == arg);
+###                    }
+###
+###                    int main () {
+###                            pthread_t t1, t2;
+###
+###                            i = 5;
+###
+###                            pthread_create (&t1, NULL, thread_main, 1);
+###                            pthread_create (&t2, NULL, thread_main, 2);
+###
+###                            pthread_join (t1, NULL);
+###                            pthread_join (t2, NULL);
+###
+###                            return !(res1 + res2 == 2);
+###                    }
+###            ], [
+###                            ac_msg_result(yes)
+###            ], [
+###                            ac_msg_result(no)
+###                            set(with_tls pthread)
+###            ])
+###    fi
+###
+       # **************************************
+       # *** Checks for working sigaltstack ***
+       # **************************************
+###    ac_msg_checking(for working sigaltstack)
+###    if test "x$with_sigaltstack" != "xyes"; then
+###            ac_msg_result(disabled)
+###    else
+###            AC_TRY_RUN([
+###                    #include <stdio.h>
+###                    #include <stdlib.h>
+###                    #include <unistd.h>
+###                    #include <signal.h>
+###                    #include <pthread.h>
+###                    #include <sys/wait.h>
+###                    #if defined(__FreeBSD__) || defined(__NetBSD__)
+###                    #define SA_STACK SA_ONSTACK
+###                    #endif
+###                    static void
+###                    sigsegv_signal_handler (int _dummy, siginfo_t *info, void *context)
+###                    {
+###                            exit (0);
+###                    }
+###
+###                    static void *
+###                    loop (void *ignored)
+###                    {
+###                            char *ptr = NULL;
+###
+###                            *ptr = 0;
+###                            return NULL;
+###                    }
+###
+###                    static void
+###                    child ()
+###                    {
+###                            struct sigaction sa;
+###                            struct sigaltstack sas;
+###                            pthread_t id;
+###                            pthread_attr_t attr;
+###
+###                            sa.sa_sigaction = sigsegv_signal_handler;
+###                            sigemptyset (&sa.sa_mask);
+###                            sa.sa_flags = SA_SIGINFO | SA_ONSTACK;
+###                            if (sigaction (SIGSEGV, &sa, NULL) == -1) {
+###                                    perror ("sigaction");
+###                                    return;
+###                            }
+###
+###                            sas.ss_sp = malloc (SIGSTKSZ);
+###                            sas.ss_size = SIGSTKSZ;
+###                            sas.ss_flags = 0;
+###                            if (sigaltstack (&sas, NULL) == -1) {
+###                                    perror ("sigaltstack");
+###                                    return;
+###                            }
+###
+###                            pthread_attr_init (&attr);
+###                            if (pthread_create(&id, &attr, loop, &attr) != 0) {
+###                                    printf ("pthread_create\n");
+###                                    return;
+###                            }
+###
+###                            sleep (100);
+###                    }
+###
+###                    int
+###                    main ()
+###                    {
+###                            pid_t son;
+###                            int status;
+###                            int i;
+###
+###                            son = fork ();
+###                            if (son == -1) {
+###                                    return 1;
+###                            }
+###
+###                            if (son == 0) {
+###                                    child ();
+###                                    return 0;
+###                            }
+###
+###                            for (i = 0; i < 3; ++i) {
+###                                    sleep (1);
+###                                    waitpid (son, &status, WNOHANG);
+###                                    if (WIFEXITED (status) && WEXITSTATUS (status) == 0)
+###                                            return 0;
+###                            }
+###
+###                            kill (son, SIGKILL);
+###                            return 1;
+###                    }
+###
+###            ], [
+###                            ac_msg_result(yes)
+###                            ac_define(HAVE_WORKING_SIGALTSTACK, 1, [Have a working sigaltstack])
+###            ], [
+###                            set(with_sigaltstack no)
+###                            ac_msg_result(no)
+###            ])
+###    fi
+###
+       # ********************************
+       # *** Checks for semaphore lib ***
+       # ********************************
+       # 'Real Time' functions on Solaris
+       # posix4 on Solaris 2.6
+       # pthread (first!) on Linux
+###    AC_SEARCH_LIBS(sem_init, pthread rt posix4) 
+       check_library_exists(pthread shm_open "" HAVE_SHM_OPEN1)
+       if(HAVE_SHM_OPEN1)
+         # FIXME:
+       else()
+         check_library_exists(rt shm_open "" HAVE_SHM_OPEN2)
+         if(HAVE_SHM_OPEN2)
+               set(LIBS ${LIBS} -lrt)
+               set(CMAKE_REQUIRED_LIBRARIES rt)
+               ac_check_funcs(shm_open)
+               set(CMAKE_REQUIRED_LIBRARIES)
+         else()
+               # FIXME: posix4
+         endif()
+       endif()
+
+       # ********************************
+       # *** Checks for timezone stuff **
+       # ********************************
+###    AC_CACHE_CHECK(for tm_gmtoff in struct tm, ac_cv_struct_tm_gmtoff,
+###            AC_TRY_COMPILE([
+###                    #include <time.h>
+###                    ], [
+###                    struct tm tm;
+###                    tm.tm_gmtoff = 1;
+###                    ], set(ac_cv_struct_tm_gmtoff yes, ac_cv_struct_tm_gmtoff=no)))
+###    if test $ac_cv_struct_tm_gmtoff = yes; then
+###            ac_define(HAVE_TM_GMTOFF, 1, [Have tm_gmtoff])
+###    else
+###            AC_CACHE_CHECK(for timezone variable, ac_cv_var_timezone,
+###                    AC_TRY_COMPILE([
+###                            #include <time.h>
+###                    ], [
+###                            timezone = 1;
+###                    ], set(ac_cv_var_timezone yes, ac_cv_var_timezone=no)))
+###            if test $ac_cv_var_timezone = yes; then
+###                    ac_define(HAVE_TIMEZONE, 1, [Have timezone variable])
+###            else
+###                    AC_ERROR(unable to find a way to determine timezone)
+###            fi
+###    fi
+###
+# *********************************
+# *** Checks for math functions ***
+# *********************************
+set(LIBS ${LIBS} -lm)
+###    if test "x$has_broken_apple_cpp" != "xyes"; then
+###            ac_check_funcs(finite, , ac_msg_checking(for finite in math.h)
+###                    AC_TRY_LINK([#include <math.h>], 
+###                    [ finite(0.0); ], 
+###                    ac_define(HAVE_FINITE, 1, [Have finite]) ac_msg_result(yes),
+###                    ac_msg_result(no)))
+###    fi
+###        ac_check_funcs(isfinite, , ac_msg_checking(for isfinite in math.h)
+###                AC_TRY_LINK([#include <math.h>], 
+###                [ isfinite(0.0); ], 
+###                ac_define(HAVE_ISFINITE, 1, [Have isfinite]) ac_msg_result(yes),
+###                ac_msg_result(no)))
+###
+# ****************************************************************
+# *** Checks for working poll() (macosx defines it but doesn't ***
+# *** have it in the library (duh))                            ***
+# ****************************************************************
+###    ac_check_funcs(poll)
+###
+# *************************
+# *** Check for signbit ***
+# *************************
+###    ac_msg_checking(for signbit)
+###    AC_TRY_LINK([#include <math.h>], [
+###            int s = signbit(1.0);
+###    ], [
+###            ac_msg_result(yes)
+###            ac_define(HAVE_SIGNBIT, 1, [Have signbit])
+###    ], [
+###            ac_msg_result(no)
+###    ]) 
+###
+# **********************************
+# *** epoll                       ***
+# **********************************
+ac_check_headers(sys/epoll.h)
+set(haveepoll no)
+###    ac_check_funcs(epoll_ctl, [set(haveepoll yes], ))
+###    if test "x$haveepoll" = "xyes" -a "x$ac_cv_header_sys_epoll_h" = "xyes" ; then
+###            ac_define(HAVE_EPOLL, 1, [epoll supported])
+###    fi
+###
+# ******************************
+# *** Checks for SIOCGIFCONF ***
+# ******************************
+ac_check_headers(sys/ioctl.h)
+ac_check_headers(net/if.h)
+###    ac_msg_checking(for ifreq)
+###    AC_TRY_COMPILE([
+###            #include <stdio.h>
+###            #include <sys/ioctl.h>
+###            #include <net/if.h>
+###            ], [
+###            struct ifconf ifc;
+###            struct ifreq *ifr;
+###            void *x;
+###            ifc.ifc_len = 0;
+###            ifc.ifc_buf = NULL;
+###            x = (void *) &ifr->ifr_addr;
+###            ],[
+###                    ac_msg_result(yes)
+###                    ac_define(HAVE_SIOCGIFCONF, 1, [Can get interface list])
+###            ], [
+###                    ac_msg_result(no)
+###            ])
+# **********************************
+# ***     Checks for sin_len     ***
+# **********************************
+###    ac_msg_checking(for sockaddr_in.sin_len)
+###    AC_TRY_COMPILE([
+###            #include <netinet/in.h>
+###            ], [
+###            struct sockaddr_in saddr;
+###            saddr.sin_len = sizeof (saddr);
+###            ],[
+###                    ac_msg_result(yes)
+###                    ac_define(HAVE_SOCKADDR_IN_SIN_LEN, 1, [sockaddr_in has sin_len])
+###            ], [
+###                    ac_msg_result(no)
+###            ])      
+# **********************************
+# ***    Checks for sin6_len     ***
+# **********************************
+###    ac_msg_checking(for sockaddr_in6.sin6_len)
+###    AC_TRY_COMPILE([
+###            #include <netinet/in.h>
+###            ], [
+###            struct sockaddr_in6 saddr6;
+###            saddr6.sin6_len = sizeof (saddr6);
+###            ],[
+###                    ac_msg_result(yes)
+###                    ac_define(HAVE_SOCKADDR_IN6_SIN_LEN, 1, [sockaddr_in6 has sin6_len])
+###            ], [
+###                    ac_msg_result(no)
+###            ])      
+# **********************************
+# *** Checks for MonoPosixHelper ***
+# **********************************
+ac_check_headers(checklist.h)
+ac_check_headers(fstab.h)
+ac_check_headers(attr/xattr.h)
+ac_check_headers(sys/extattr.h)
+ac_check_headers(sys/sendfile.h)
+ac_check_headers(sys/statvfs.h)
+ac_check_headers(sys/statfs.h)
+ac_check_headers(sys/vfstab.h)
+ac_check_headers(sys/xattr.h)
+ac_check_headers(sys/mman.h)
+ac_check_headers(sys/param.h)
+ac_check_headers(sys/mount.h)
+###    ac_check_funcs(getdomainname)
+###    ac_check_funcs(setdomainname)
+###    ac_check_funcs(fgetgrent)
+###    ac_check_funcs(fgetpwent)
+###    ac_check_funcs(fgetpwent)
+###    ac_check_funcs(getfsstat)
+###    ac_check_funcs(lutimes)
+###    ac_check_funcs(mremap)
+###    ac_check_funcs(remap_file_pages)
+###    ac_check_funcs(posix_fadvise)
+###    ac_check_funcs(posix_fallocate)
+###    ac_check_funcs(posix_madvise)
+###    ac_check_funcs(vsnprintf)
+###    ac_check_funcs(sendfile)
+###    ac_check_funcs(sethostid)
+###    ac_check_funcs(statfs)
+###    ac_check_funcs(fstatfs)
+###    ac_check_funcs(statvfs)
+###    ac_check_funcs(fstatvfs)
+###    ac_check_funcs(stime)
+###    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 flock], [ac_define(HAVE_STRUCT_FLOCK)], ,
+###            [#include <unistd.h>
+###             #include <fcntl.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 timespec], [ac_define(HAVE_STRUCT_TIMESPEC)], ,
+###            [#include <time.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_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>
+###             #include <dirent.h>])
+###
+# Favour xattr through glibc, but use libattr if we have to
+###    AC_CHECK_FUNC(lsetxattr, ,
+###            AC_CHECK_LIB(attr, lsetxattr, set(XATTR_LIB "-lattr",))
+###    )
+###    AC_SUBST(XATTR_LIB)
+###
+# kinfo_proc.kp_proc works on darwin but fails on other simil-bsds
+###    AC_CHECK_MEMBERS(
+###            [struct kinfo_proc.kp_proc],,, 
+###            [#include <sys/types.h>
+###             #include <sys/sysctl.h>
+###             #include <sys/proc.h>
+###             ])
+###
+# *********************************
+# *** Checks for Windows compilation ***
+# *********************************
+ac_check_headers(sys/time.h)
+ac_check_headers(sys/param.h)
+ac_check_headers(dirent.h)
+
+# *********************************
+# *** Check for Console 2.0 I/O ***
+# *********************************
+ac_check_headers(curses.h)
+ac_check_headers(term.h)
+###    ac_check_headers([term.h], [], [],
+###    [#if HAVE_CURSES_H
+###     #include <curses.h>
+###     #endif
+###    ])
+ac_check_headers(termios.h)
+###
+# * This is provided in io-layer, but on windows it's only available
+# * on xp+
+###    ac_define(HAVE_GETPROCESSID, 1, [Define if GetProcessId is available])
+###else
+###    set(jdk_headers_found no)
+###    AC_CHECK_LIB(ws2_32, main, set(LIBS "$LIBS -lws2_32", AC_ERROR(bad mingw install?)))
+###    AC_CHECK_LIB(psapi, main, set(LIBS "$LIBS -lpsapi", AC_ERROR(bad mingw install?)))
+###    AC_CHECK_LIB(ole32, main, set(LIBS "$LIBS -lole32", AC_ERROR(bad mingw install?)))
+###    AC_CHECK_LIB(winmm, main, set(LIBS "$LIBS -lwinmm", AC_ERROR(bad mingw install?)))
+###    AC_CHECK_LIB(oleaut32, main, set(LIBS "$LIBS -loleaut32", AC_ERROR(bad mingw install?)))
+###    AC_CHECK_LIB(advapi32, main, set(LIBS "$LIBS -ladvapi32", AC_ERROR(bad mingw install?)))
+###    AC_CHECK_LIB(version, main, set(LIBS "$LIBS -lversion", AC_ERROR(bad mingw install?)))
+###
+# *********************************
+# *** Check for struct ip_mreqn ***
+# *********************************
+###    ac_msg_checking(for struct ip_mreqn)
+###    AC_TRY_COMPILE([#include <ws2tcpip.h>], [
+###            struct ip_mreqn mreq;
+###            mreq.imr_address.s_addr = 0;
+###    ], [
+###            # Yes, we have it...
+###            ac_msg_result(yes)
+###            ac_define(HAVE_STRUCT_IP_MREQN)
+###    ], [
+###            # We'll just have to try and use struct ip_mreq
+###            ac_msg_result(no)
+###            ac_msg_checking(for struct ip_mreq)
+###            AC_TRY_COMPILE([#include <ws2tcpip.h>], [
+###                    struct ip_mreq mreq;
+###                    mreq.imr_interface.s_addr = 0;
+###            ], [
+###                    # Yes, we have it...
+###                    ac_msg_result(yes)
+###                    ac_define(HAVE_STRUCT_IP_MREQ)
+###            ], [
+###                    # No multicast support
+###                    ac_msg_result(no)
+###            ])
+###    ])
+###    ac_check_funcs(GetProcessId)
+###fi
+###
+endif()
+
+# socklen_t check
+ac_msg_checking("for socklen_t")
+check_c_source_compiles("
+#include <sys/types.h>
+#include <sys/socket.h>
+void main () { 
+  socklen_t foo; 
+}" HAVE_SOCKLEN_T)
+if(HAVE_SOCKLEN_T)
+  ac_define(HAVE_SOCKLEN_T 1 "Have socklen_t")
+  ac_msg_result(yes)
+else()
+  ac_msg_result(no)
+endif()
+
+###ac_msg_checking(for array element initalizer support)
+###AC_TRY_COMPILE([#include <sys/socket.h>], [
+###    const int array[] = {[1] = 2,};
+###], [
+# Yes, we have it...
+###    ac_msg_result(yes)
+###    ac_define(HAVE_ARRAY_ELEM_INIT,1,[Supports C99 array initialization])
+###], [
+# We'll have to use signals
+###    ac_msg_result(no)
+###])
+###
+ac_check_funcs(trunc)
+if(NOT HAVE_TRUNC)
+  ac_msg_checking("for trunc in math.h")
+  # Simply calling trunc (0.0) is no good since gcc will optimize the call away
+  set(compiles)
+  check_c_source_compiles("
+#include <math.h>
+void main () {
+static void *p = &trunc;
+}
+" compiles)
+  if (compiles)
+       ac_define(HAVE_TRUNC 1 "")
+       ac_msg_result(yes)
+  else()
+       ac_msg_result(no)
+  endif()
+endif()
+
+###if test "x$ac_cv_truncl" != "xyes"; then
+###   AC_CHECK_LIB(sunmath, aintl, [ ac_define(HAVE_AINTL, 1, [Has the 'aintl' function]) set(LIBS "$LIBS -lsunmath"]))
+###fi
+
+ac_check_funcs(round)
+ac_check_funcs(rint)
+
+# ****************************
+# *** Look for /dev/random ***
+# ****************************
+
+###ac_msg_checking([if usage of random device is requested])
+###AC_ARG_ENABLE(dev-random,
+###[  --disable-dev-random    disable the use of the random device (enabled by default)],
+###set(try_dev_random $enableval, try_dev_random=yes))
+
+###ac_msg_result($try_dev_random)
+
+###case "{$target}" in
+###    *-openbsd*)
+###    set(NAME_DEV_RANDOM "/dev/srandom")
+###    ;;
+
+# Win32 does not have /dev/random, they have their own method...
+
+###    *-*-mingw*|*-*-cygwin*)
+###    set(ac_cv_have_dev_random no)
+###    ;;
+
+# Everywhere else, it's /dev/random
+
+###    *)
+###    set(NAME_DEV_RANDOM "/dev/random")
+###    ;;
+###esac
+
+###ac_define_unquoted(NAME_DEV_RANDOM, "$NAME_DEV_RANDOM", [Name of /dev/random])
+
+# Now check if the device actually exists
+
+###if test "x$try_dev_random" = "xyes"; then
+###    AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
+###    [if test -r "$NAME_DEV_RANDOM" ; then
+###        set(ac_cv_have_dev_random yes; else ac_cv_have_dev_random=no; fi]))
+###    if test "x$ac_cv_have_dev_random" = "xyes"; then
+###        ac_define(HAVE_CRYPT_RNG, 1, [Have /dev/random])
+###    fi
+###else
+###    ac_msg_checking(for random device)
+###    set(ac_cv_have_dev_random no)
+###    ac_msg_result(has been disabled)
+###fi
+
+###if test "x$platform_win32" = "xyes"; then
+###    ac_define(HAVE_CRYPT_RNG)
+###fi
+
+###if test "x$ac_cv_have_dev_random" = "xno" \
+###    && test "x$platform_win32" = "xno"; then
+###    AC_MSG_WARN([[
+###***
+###*** A system-provided entropy source was not found on this system.
+###*** Because of this, the System.Security.Cryptography random number generator
+###*** will throw a NotImplemented exception.
+###***
+###*** If you are seeing this message, and you know your system DOES have an
+###*** entropy collection in place, please contact <crichton@gimp.org> and
+###*** provide information about the system and how to access the random device.
+###***
+###*** Otherwise you can install either egd or prngd and set the environment
+###*** variable MONO_EGD_SOCKET to point to the daemon's socket to use that.
+###***]])
+###fi
+### 
+###ac_msg_checking([if inter-process shared handles are requested])
+###AC_ARG_ENABLE(shared-handles, [  --disable-shared-handles disable inter-process shared handles], set(try_shared_handles $enableval, try_shared_handles=yes))
+###ac_msg_result($try_shared_handles)
+###if test "x$try_shared_handles" != "xyes"; then
+###    ac_define(DISABLE_SHARED_HANDLES, 1, [Disable inter-process shared handles])
+###    AC_SUBST(DISABLE_SHARED_HANDLES)
+###fi
+
+###if test x$gc = xsgen; then
+###   if test x$with_tls != x__thread; then
+###      ac_msg_error([The SGEN garbage collector depends on a working __thread implementation, and either --with-set(thread pthread was passed to configure, or the configure test for __thread failed.]))
+###   fi
+###fi
+
+###AC_ARG_ENABLE(nunit-tests, [  --enable-nunit-tests  Run the nunit tests of the class library on 'make check'])
+###AM_CONDITIONAL(ENABLE_NUNIT_TESTS, [test x$enable_nunit_tests = xyes])
+
+ac_msg_checking("if big-arrays are to be enabled")
+set(big-arrays no CACHE STRING "Enable the allocation and indexing of arrays greater than Int32.MaxValue]")
+set(enable_big_arrays ${big-arrays})
+###if test "x$enable_big_arrays" = "xyes" ; then
+###    if  test "x$ac_cv_sizeof_void_p" = "x8"; then
+###    ac_define(MONO_BIG_ARRAYS,1,[Enable the allocation and indexing of arrays greater than Int32.MaxValue])
+###    else
+###        ac_msg_error([The allocation and indexing of arrays greater than Int32.MaxValue is not supported on this platform.])
+###    fi
+###fi
+###ac_msg_result($enable_big_arrays)
+
+# **************
+# *** DTRACE ***
+# **************
+
+set(dtrace ${has_dtrace} CACHE BOOL "Enable DTrace probes")
+set(enable_dtrace ${dtrace})
+
+###if test "x$enable_dtrace" = "xyes"; then
+###   if test "x$has_dtrace" = "xno"; then
+###      ac_msg_error([DTrace probes are not supported on this platform.])
+###   fi
+###   AC_PATH_PROG(DTRACE, [dtrace], [no], [$PATH:/usr/sbin])
+###   if test "x$DTRACE" = "xno"; then
+###      ac_msg_result([dtrace utility not found, dtrace support disabled.])
+###      set(enable_dtrace no)
+###   fi
+###fi
+
+set(dtrace_g no)
+###if test "x$enable_dtrace" = "xyes"; then
+###    ac_define(ENABLE_DTRACE, 1, [Enable DTrace probes])
+###    set(DTRACEFLAGS )
+###    if test "x$ac_cv_sizeof_void_p" = "x8"; then
+###            case "$host" in
+###                    powerpc-*-darwin*)
+###                    set(DTRACEFLAGS "-arch ppc64")
+###                    ;;
+###                    i*86-*-darwin*)
+###                    set(DTRACEFLAGS "-arch x86_64")
+###                    ;;
+###                    *)
+###                    set(DTRACEFLAGS -64)
+###                    ;;
+###            esac
+###    else
+###            case "$host" in
+###                    powerpc-*-darwin*)
+###                    set(DTRACEFLAGS "-arch ppc")
+###                    ;;
+###                    i*86-*-darwin*)
+###                    set(DTRACEFLAGS "-arch i386")
+###                    ;;
+###                    *)
+###                    set(DTRACEFLAGS -32)
+###                    ;;
+###            esac
+###    fi
+###    AC_SUBST(DTRACEFLAGS)
+###    case "$host" in
+###            *-*-solaris*)
+###            set(dtrace_g yes)
+###            ;;
+###    esac
+###    ac_check_headers([sys/sdt.h])
+###fi
+###AM_CONDITIONAL(ENABLE_DTRACE, [test x$enable_dtrace = xyes])
+###AM_CONDITIONAL(DTRACE_G_REQUIRED, [test x$dtrace_g = xyes])
+
+# **************
+# ***  LLVM  ***
+# **************
+
+set(llvm no CACHE BOOL "Enable the experimental LLVM back-end")
+set(enable_llvm ${llvm})
+
+###if test "x$enable_llvm" = "xyes"; then
+###   AC_PATH_PROG(LLVM_CONFIG, llvm-config, no)
+###   if test "x$LLVM_CONFIG" = "xno"; then
+###      ac_msg_error([llvm-config not found.])
+###   fi
+
+###   set(LLVM_CXXFLAGS `$LLVM_CONFIG --cflags`)
+###   set(LLVM_LDFLAGS `$LLVM_CONFIG --ldflags`)
+###   set(LLVM_LIBS `$LLVM_CONFIG --libs core engine`)
+###   set(LLVM_LIBS "$LLVM_LDFLAGS $LLVM_LIBS -lstdc++")
+
+###   AC_SUBST(LLVM_CXXFLAGS)
+###   AC_SUBST(LLVM_LIBS)
+###   ac_define(ENABLE_LLVM, 1, [Enable the LLVM back end])
+###fi
+
+if(enable_llvm)
+  set(ENABLE_LLVM yes)
+endif()
+
+#
+# Architecture-specific checks
+#
+set(TARGET "unknown")
+set(ACCESS_UNALIGNED "yes")
+
+set(JIT_SUPPORTED no)
+set(INTERP_SUPPORTED no)
+set(LIBC "libc.so.6")
+set(INTL "libc.so.6")
+set(SQLITE "libsqlite.so.0")
+set(SQLITE3 "libsqlite3.so.0")
+set(X11 "libX11.so")
+
+set(sizeof_register "SIZEOF_VOID_P")
+
+set(jit_wanted false)
+set(interp_wanted false)
+
+if(host MATCHES "(x86_64-.*-.*)|(amd64-.*-.*)")
+  set(TARGET AMD64)
+  set(arch_target amd64)
+  set(JIT_SUPPORTED yes)
+  set(jit_wanted true)
+else()
+  message(FATAL_ERROR "Host ${host} not yet supported by the cmake build.")
+endif()
+
+# FIXME: Define the others as well
+if (${TARGET} STREQUAL "X86")
+  ac_define(TARGET_X86 1 [...])
+elseif (${TARGET} STREQUAL "AMD64")
+  ac_define(TARGET_AMD64 1 [...])
+elseif (${TARGET} STREQUAL "ARM")
+  ac_define(TARGET_ARM 1 [...])
+endif()
+
+###case "$host" in
+#      mips-sgi-irix5.* | mips-sgi-irix6.*)
+#              set(TARGET MIPS;)
+#              set(ACCESS_UNALIGNED "no")
+#              ;;
+###    mips*)
+###            set(TARGET MIPS;)
+###            set(arch_target mips;)
+###            set(ACCESS_UNALIGNED "no")
+###            set(JIT_SUPPORTED yes)
+###            set(jit_wanted true)
+
+###            ac_msg_checking(for mips n32)
+###            AC_TRY_COMPILE([], [
+###            void main () {
+###            #if _MIPS_SIM != _ABIN32
+###            #error Not mips n32
+###            #endif
+###            }
+###            ],[
+###            ac_msg_result(yes)
+###            set(sizeof_register 8)
+###            ],[
+###            ac_msg_result(no)
+###            ])
+###            ;;
+###    i*86-*-*)
+###            set(TARGET X86;)
+###            set(arch_target x86;)
+###            set(JIT_SUPPORTED yes)
+###            set(jit_wanted true)
+###            case $host_os in
+###              solaris*)
+###                    set(LIBC "libc.so")
+###                    set(INTL "libintl.so")
+###                    if test "x$ac_cv_sizeof_void_p" = "x8"; then
+###                            set(TARGET AMD64)
+###                            set(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")));
+###                    # void foo ()
+###                    # {
+###                    #       void *p = &astruct;
+###                    # }
+###                    # gcc -fPIC --shared -o libfoo.so foo.c
+###                    # yields:
+###                    # foo.c:6: warning: visibility attribute not supported in this configuration; ignored
+###                    # ld: fatal: relocation error: R_386_GOTOFF: file /var/tmp//ccxYR96k.o: symbol astruct: relocation must bind locally
+###                    set(have_visibility_hidden no)
+
+###            esac
+###            ;;
+###    ia64-*-*)
+###            set(TARGET IA64)
+###            set(arch_target ia64)
+###            set(ACCESS_UNALIGNED "no")
+###            set(JIT_SUPPORTED yes)
+###            set(jit_wanted true)
+###            set(LIBC "libc.so.6.1")
+###            set(INTL "libc.so.6.1")
+###            AC_CHECK_LIB(unwind, _U_dyn_register, [], [ac_msg_error(library libunwind not found)])
+###            set(libmono_ldflags "-lunwind")
+###            ;;
+###    sparc*-*-*)
+###            if test "x$ac_cv_sizeof_void_p" = "x8"; then
+###               set(TARGET SPARC64)
+###            else
+###                    set(TARGET SPARC)
+###            fi
+###            set(arch_target sparc;)
+###            set(JIT_SUPPORTED yes)
+###            set(ACCESS_UNALIGNED "no")
+###            case $host_os in
+###              linux*) ;;
+###              *)
+###                    set(LIBC "libc.so")
+###                    set(INTL "libintl.so")
+###            esac
+###            set(jit_wanted true)
+###            if test x"$GCC" = xyes; then
+###                    # We don't support v8 cpus
+###                    set(CFLAGS "$CFLAGS -Wno-cast-align -mcpu=v9")
+###            fi
+###            if test x"$AR" = xfalse; then
+###                    ac_msg_error([The required utility 'ar' is not found in your PATH. Usually it can be found in /usr/ccs/bin.])
+###            fi
+###            ;;
+###       alpha*-*-linux* | alpha*-*-osf*)
+###            set(TARGET ALPHA;)
+###            set(ACCESS_UNALIGNED "no")
+###            set(JIT_SUPPORTED yes)
+###            set(jit_wanted true)
+###            set(arch_target alpha;)
+###            set(CFLAGS "$CFLAGS -mieee -O0")
+###            case $host_os in
+###              linux*)
+###                    set(LIBC "libc.so.6.1")
+###                    set(INTL "libc.so.6.1")
+###            esac
+###           ;;
+###    *-*-mingw*|*-*-cygwin*)
+###            # When this is enabled, it leads to very strange crashes at runtime (gcc-3.4.4)
+###            set(have_visibility_hidden no)
+###            set(INTL "intl")
+###            ;;
+###    hppa2.0w-hp-hpux11.00 | hppa64-hp-hpux11.00)
+###            set(TARGET HPPA;)
+###            set(arch_target hppa; )
+###            set(LIBC "libc.sl")
+###            set(ACCESS_UNALIGNED "no")
+###            set(INTERP_SUPPORTED yes)
+###            set(interp_wanted true)
+###            ;;
+###    hppa*linux*)
+###            set(TARGET HPPA;)
+###            ac_define(MONO_ARCH_REGPARMS,1,[Architecture uses registers for Parameters])
+###            set(arch_target hppa; )
+###            set(ACCESS_UNALIGNED "no")
+###            set(JIT_SUPPORTED yes)
+###            set(jit_wanted true)
+###            ;;
+###    macppc-*-openbsd* | powerpc*-*-linux* | powerpc-*-openbsd* | \
+###        powerpc-*-sysv* | powerpc-*-darwin* | powerpc-*-netbsd* )
+###            if test "x$ac_cv_sizeof_void_p" = "x8"; then
+###                    set(TARGET POWERPC64;)
+###                    set(CPPFLAGS "$CPPFLAGS -D__mono_ppc__ -D__mono_ppc64__")
+###                    set(CFLAGS "$CFLAGS -mminimal-toc")
+###            else
+###                    set(TARGET POWERPC;)
+###                    set(CPPFLAGS "$CPPFLAGS -D__mono_ppc__")
+###            fi
+###            ac_define(MONO_ARCH_REGPARMS,1,[Architecture uses registers for Parameters])
+###            set(arch_target ppc;)
+###            set(JIT_SUPPORTED yes)
+###            set(jit_wanted true)
+###            ;;
+###    arm*-darwin*)
+###            set(TARGET ARM;)
+###            set(arch_target arm;)
+###            set(ACCESS_UNALIGNED "no")
+###            set(JIT_SUPPORTED yes)
+###            set(CPPFLAGS "$CPPFLAGS -DARM_FPU_NONE=1")
+###            set(jit_wanted true)
+###            ;;
+###    arm*-linux*)
+###            set(TARGET ARM;)
+###            set(arch_target arm;)
+###            set(ACCESS_UNALIGNED "no")
+###            set(JIT_SUPPORTED yes)
+###            set(jit_wanted true)
+###            ;;
+###    s390-*-linux*)
+###            set(TARGET S390;)
+###            ac_define(MONO_ARCH_REGPARMS,1,[Architecture uses registers for Parameters])
+###            set(arch_target s390;)
+###            set(ACCESS_UNALIGNED "no")
+###            set(JIT_SUPPORTED yes)
+###            set(jit_wanted true)
+###            # Required CFLAGS for s390[x].  USE_STRING_INLINES is automatic with gcc 4.1
+###            set(CFLAGS "$CFLAGS -mbackchain -D__USE_STRING_INLINES")
+###            ;;
+###    s390x-*-linux*)
+###            set(TARGET S390x;)
+###            ac_define(MONO_ARCH_REGPARMS,1,[Architecture uses registers for Parameters])
+###            set(arch_target s390x;)
+###            set(ACCESS_UNALIGNED "no")
+###            set(JIT_SUPPORTED yes)
+###            set(jit_wanted true)
+###            set(CFLAGS "$CFLAGS -mbackchain -D__USE_STRING_INLINES")
+###            ;;
+###esac
+
+if (${sizeof_register} STREQUAL "4")
+   ac_define(SIZEOF_REGISTER 4 "size of machine integer registers")
+elseif (${sizeof_register} STREQUAL "8")
+   ac_define(SIZEOF_REGISTER 8 "size of machine integer registers")
+else()
+   ac_define(SIZEOF_REGISTER SIZEOF_VOID_P "size of machine integer registers")
+endif()
+
+###if (${have_visibility_hidden" = "xyes"; then
+###   ac_define(HAVE_VISIBILITY_HIDDEN, 1, [Support for the visibility ("hidden") attribute])
+###fi
+
+###set(jit, [  --with-set(jit yes,no              If you want to build scripts that default to the JIT (defaults to no)],[)
+###    if test x$withval = xyes; then
+###       set(jit_wanted true)
+###    else
+###       set(jit_wanted false)
+###    fi
+###])
+
+###set(interp, [  --with-set(interp yes,no           If you want to build scripts that default to the interpreter (defaults to no)],[)
+###    if test x$withval = xyes; then
+###       set(interp_wanted true)
+###    else
+###       set(interp_wanted false)
+###    fi
+###])
+
+set(USEJIT no)
+if(JIT_SUPPORTED)
+  if (jit_wanted)
+       set(USEJIT yes)
+       set(jit_status "Building and using the JIT")
+  else()
+       if (interp_wanted)
+         set(jit_status "Building the JIT, defaulting to the interpreter")
+       else()
+         message(FATAL_ERROR "No JIT or interpreter support available or selected.")
+       endif()
+  endif()
+else()
+       if (interp_wanted)
+         set(jit_status "interpreter")
+       else()
+         message(FATAL_ERROR "No JIT or interpreter support available or selected.")
+       endif()
+endif()  
+set(USE_JIT ${USEJIT})
+
+set(libsuffix ".so")
+
+###case "$host" in
+###     *-*-darwin*)
+###    set(libsuffix ".dylib")
+###    set(LIBC "libc.dylib")
+###    set(INTL "libintl.dylib")
+###    set(SQLITE "libsqlite.0.dylib")
+###    set(SQLITE3 "libsqlite3.0.dylib")
+###    set(X11 "libX11.dylib")
+###    ;;
+###     *-*-*netbsd*)
+###    set(LIBC "libc.so.12")
+###    set(INTL "libintl.so.0")
+###    ;;
+###    *-*-*freebsd*)
+###            set(LIBC "libc.so")
+###    set(INTL "libintl.so")
+###    ;;
+###    *-*-*openbsd*)
+###            set(LIBC "libc.so")
+###    set(INTL "libintl.so")
+###    ;;
+###    *-*-*linux*)
+###    AC_PATH_X
+###    ac_msg_checking(for the soname of libX11.so)
+###    for i in $x_libraries /usr/lib /usr/lib64; do
+###            for r in 4 5 6; do
+###                    if test -f $i/libX11.so.$r; then
+###                            set(X11 libX11.so.$r)
+###                            ac_msg_result($X11)
+###                    fi
+###            done
+###    done
+###    
+###    if (${X11" = "xlibX11.so"; then
+###            AC_MSG_WARN([Could not find X development libs. Do you have the -devel package installed? WinForms may not work...]);
+###    fi
+###    ;;
+###esac
+
+
+###AC_SUBST(libsuffix)
+
+ac_check_headers(valgrind/memcheck.h)
+if(${TARGET} STREQUAL "AMD64" OR ${TARGET} STREQUAL "X86")
+  if(with_tls STREQUAL __thread)
+               #
+               # On some linux distributions, TLS works in executables, but linking 
+               # against a shared library containing TLS fails with:
+               # undefined reference to `__tls_get_addr'
+               #
+###            rm -f conftest.c conftest.so conftest
+###            echo "static __thread int foo; void main () { foo = 5; }" > conftest.c
+###            $CC -fPIC --shared -o conftest.so conftest.c > /dev/null 2>&1
+###            $CC -o conftest conftest.so > /dev/null 2>&1
+###            if test ! -f conftest; then
+###               AC_MSG_WARN([Disabling usage of __thread.]);
+###               set(with_tls pthread)
+###            fi
+###            rm -f conftest.c conftest.so conftest
+  endif()
+endif()
+
+set(mono_debugger_supported no)
+if(${TARGET} STREQUAL "AMD64" OR ${TARGET} STREQUAL "X86")
+  if(use_included_gc)
+       if (host MATCHES ".*-.*-.*linux.*")
+         set(mono_debugger_supported yes)
+       endif()
+  endif()
+endif()
+
+ac_msg_checking("if the Mono Debugger is supported on this platform")
+if(mono_debugger_supported)
+  ac_define(MONO_DEBUGGER_SUPPORTED 1 "The Mono Debugger is supported on this platform")
+endif()
+ac_msg_result(${mono_debugger_supported})
+if(mono_debugger_supported)
+  set(MONO_DEBUGGER_SUPPORTED yes)
+endif()
+
+if (with_tls STREQUAL "__thread")
+  ac_define(HAVE_KW_THREAD 1 "Have __thread keyword")
+  ac_define(USE_COMPILER_TLS 1 "Use __thread for TLS access")
+# Pass the information to libgc
+###    set(CPPFLAGS "$CPPFLAGS -DUSE_COMPILER_TLS")
+###    ac_msg_checking(if the tls_model attribute is supported)
+###    AC_TRY_COMPILE([static __thread int foo __attribute__((tls_model("initial-exec")));], [
+###            ], [
+###                    ac_msg_result(yes)
+###                    ac_define(HAVE_TLS_MODEL_ATTR, 1, [tld_model available])
+###            ], [
+###                    ac_msg_result(no)
+###    ])
+###fi
+
+endif()
+###if test ${TARGET} = ARM && test x$cross_compiling = xno && test x$enable_mcs_build != xno; then
+# ******************************************
+# *** Check to see what FPU is available ***
+# ******************************************
+###    ac_msg_checking(which FPU to use)
+
+###    AC_TRY_COMPILE([], [
+###            __asm__ ("ldfd f0, [r0]");
+###            ], set(fpu FPA, fpu=NONE))
+
+###    ac_msg_result($fpu)
+###    set(CPPFLAGS "$CPPFLAGS -DARM_FPU_$fpu=1")
+###    unset fpu
+###fi
+
+if(${TARGET} STREQUAL "unknown")
+       set(CPPFLAGS ${CPPFLAGS} -DNO_PORT)
+       ac_msg_warn("mono has not been ported to ${host}: some things may not work.")
+endif()
+
+if(NOT ACCESS_UNALIGNED)
+  set(CPPFLAGS ${CPPFLAGS} -DNO_UNALIGNED_ACCESS)
+endif()
+
+###case "x$gc" in
+###    xincluded)
+###            # Pass CPPFLAGS to libgc configure
+###            # We should use a separate variable for this to avoid passing useless and
+###            # potentially problematic defines to libgc (like -set(D_FILE_OFFSET_BITS 64))
+###            # This should be executed late so we pick up the final version of CPPFLAGS
+###            # The problem with this approach, is that during a reconfigure, the main
+###            # configure scripts gets invoked with these arguments, so we use separate
+###            # variables understood by libgc's configure to pass CPPFLAGS and CFLAGS.
+###            set(LIBGC_CPPFLAGS $CPPFLAGS)
+###            if test x$TARGET = xSPARC -o x$TARGET = xSPARC64; then
+###                    set(LIBGC_CPPFLAGS `echo $LIBGC_CPPFLAGS | sed -e 's/-D_FILE_OFFSET_BITS=64//g'`)
+###            fi
+###            set(ac_configure_args "$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args \"CPPFLAGS_FOR_LIBGC=$LIBGC_CPPFLAGS\" \"CFLAGS_FOR_LIBGC=$CFLAGS_FOR_LIBGC\"")
+###            AC_CONFIG_SUBDIRS(libgc)
+###            ;;
+###esac
+
+set(preview yes CACHE BOOL "If you want to install the 2.0 FX preview (defaults to yes)")
+set(PREVIEW ${preview})
+set(moonlight yes CACHE BOOL "If you want to build the Moonlight 2.1 assemblies (defaults to yes)")
+set(MOONLIGHT ${moonlight})
+set(OPROFILE no)
+set(oprofile no CACHE STRING "<oprofile install dir> or 'no' to disable oprofile support (defaults to no)")
+if (NOT oprofile STREQUAL no)
+###    if test x$with_oprofile != xno; then
+###        set(oprofile_include $with_oprofile/include)
+###        if test ! -f $oprofile_include/opagent.h; then
+###              ac_msg_error([oprofile include file not found at $oprofile_include/opagent.h])
+###            fi
+###        set(OPROFILE yes)
+###            set(OPROFILE_CFLAGS "-I$oprofile_include")
+###        set(OPROFILE_LIBS "-L$with_oprofile/lib/oprofile -lopagent")
+###        ac_define(HAVE_OPROFILE,1,[Have oprofile support])
+###    fi
+###])
+
+endif()
+set(MALLOC_MEMPOOLS no)
+set(malloc_mempools no CACHE STRING "Use malloc for each single mempool allocation (only for runtime debugging, defaults to no)")
+###    if test x$with_malloc_mempools = xyes; then
+###            set(MALLOC_MEMPOOLS yes)
+###            ac_define(USE_MALLOC_FOR_MEMPOOLS,1,[Use malloc for each single mempool allocation])
+###    fi
+###])
+
+
+set(DISABLE_MCS_DOCS no)
+set(mcs_docs yes CACHE STRING "If you want to build the documentation under mcs (defaults to yes)")
+if(NOT mcs_docs)
+  set(DISABLE_MCS_DOCS yes)
+endif()
+if(OPROFILE)
+  set(HAVE_OPROFILE yes)
+endif()
+###AC_SUBST(OPROFILE_CFLAGS)
+###AC_SUBST(OPROFILE_LIBS)
+
+###set(libmono_ldflags "$libmono_ldflags $LIBS")
+
+if(PREVIEW)
+  set(INSTALL_2_0 yes)
+endif()
+if(MOONLIGHT)
+  set(INSTALL_2_1 yes)
+endif()
+
+###AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes)
+###AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno)
+# Define a variable for the target
+set(${TARGET} 1)
+
+if (interp_wanted)
+  set(INTERP_SUPPORTED yes)
+endif()
+if (gc STREQUAL "included")
+  set(INCLUDED_LIBGC yes)
+endif()
+
+###AC_SUBST(LIBC)
+###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)
+###AC_SUBST(LDFLAGS)
+
+set(mono_build_root ${CMAKE_BINARY_DIR})
+
+if (USEJIT)
+  set(mono_runtime mono/mini/mono)
+else()
+  set(mono_runtime mono/interpreter/mint)
+endif()
+
+set(mono_cfg_root ${mono_build_root}/runtime)
+if (platform_win32)
+###if test x$platform_win32 = xyes; then
+###  if (${cross_compiling" = "xno"; then
+###    set(mono_cfg_dir `cygpath -w -a $mono_cfg_root`\\etc)
+###  else
+###    set(mono_cfg_dir `echo $mono_cfg_root | tr '/' '\\\'`\\etc)
+###  fi
+else()
+  set(mono_cfg_dir ${mono_cfg_root}/etc)
+endif()
+
+function(ac_config_files file)
+  configure_file("${file}.in" ${file} @ONLY)
+endfunction()
+ac_config_files("po/mcs/Makefile.in")
+
+ac_config_files("runtime/mono-wrapper")
+ac_config_files("runtime/monodis-wrapper")
+execute_process (COMMAND chmod a+x runtime/mono-wrapper runtime/monodis-wrapper)
+
+###AC_CONFIG_COMMANDS([runtime/etc/mono/1.0/machine.config],
+###[   set(depth ../../../..)
+###    case $srcdir in
+###    [[\\/$]]* | ?:[[\\/]]* ) set(reldir $srcdir ;;)
+###    .) set(reldir $depth ;;)
+###    *) set(reldir $depth/$srcdir ;;)
+###    esac
+###    $ac_aux_dir/install-sh -d runtime/etc/mono/1.0
+###    cd runtime/etc/mono/1.0
+###    rm -f machine.config
+###    $LN_S $reldir/data/net_1_1/machine.config machine.config
+###    cd $depth
+###],[set(LN_S '$LN_S']))
+
+###AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/machine.config],
+###[   set(depth ../../../..)
+###    case $srcdir in
+###    [[\\/$]]* | ?:[[\\/]]* ) set(reldir $srcdir ;;)
+###    .) set(reldir $depth ;;)
+###    *) set(reldir $depth/$srcdir ;;)
+###    esac
+###    $ac_aux_dir/install-sh -d runtime/etc/mono/2.0
+###    cd runtime/etc/mono/2.0
+###    rm -f machine.config
+###    $LN_S $reldir/data/net_2_0/machine.config machine.config
+###    cd $depth
+###],[set(LN_S '$LN_S']))
+
+###AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/web.config],
+###[   set(depth ../../../..)
+###    case $srcdir in
+###    [[\\/$]]* | ?:[[\\/]]* ) set(reldir $srcdir ;;)
+###    .) set(reldir $depth ;;)
+###    *) set(reldir $depth/$srcdir ;;)
+###    esac
+###    $ac_aux_dir/install-sh -d runtime/etc/mono/2.0
+###    cd runtime/etc/mono/2.0
+###    rm -f web.config
+###    $LN_S $reldir/data/net_2_0/web.config web.config
+###    cd $depth
+###],[set(LN_S '$LN_S']))
+
+###AC_CONFIG_COMMANDS([runtime/etc/mono/browscap.ini],
+###[   set(depth ../../..)
+###    case $srcdir in
+###    [[\\/$]]* | ?:[[\\/]]* ) set(reldir $srcdir ;;)
+###    .) set(reldir $depth ;;)
+###    *) set(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
+###],[set(LN_S '$LN_S']))
+
+###AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/Browsers/Compat.browser],
+###[   set(depth ../../../../..)
+###    case $srcdir in
+###    [[\\/$]]* | ?:[[\\/]]* ) set(reldir $srcdir ;;)
+###    .) set(reldir $depth ;;)
+###    *) set(reldir $depth/$srcdir ;;)
+###    esac
+###    $ac_aux_dir/install-sh -d runtime/etc/mono/2.0/Browsers/
+###    cd runtime/etc/mono/2.0/Browsers
+###    rm -f Compat.browser
+###    $LN_S $reldir/data/net_2_0/Browsers/Compat.browser Compat.browser
+###    cd $depth
+###],[set(LN_S '$LN_S']))
+
+###if test x$enable_quiet_build = xyes; then
+###   AC_CONFIG_COMMANDS([quiet], [for i in `find mono libgc support -name Makefile.in | sed -e 's/Makefile.in/Makefile/g'`; do if test -f $i; then $srcdir/scripts/patch-quiet.sh $i; fi; done], [set(shell $SHELL]))
+###   AC_CONFIG_COMMANDS([quiet-libtool], [sed -e 's/$echo "copying selected/$show "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool; sed -e 's/$ECHO "copying selected/# "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool])
+###fi
+
+
+autoheader("config.h" autoheader_vars)
+
+set(SUBDIRS po ${libgc_dir} ${eglib_dir} mono ${ikvm_native_dir} support data runtime scripts man samples web msvc docs)
+
+foreach(dir ${SUBDIRS})
+  add_subdirectory(${dir})
+endforeach()
+
+###AC_OUTPUT([
+###mono-uninstalled.pc
+###scripts/mono-find-provides
+###scripts/mono-find-requires
+###mono/Makefile
+###mono/utils/Makefile
+###mono/metadata/Makefile
+###mono/dis/Makefile
+###mono/cil/Makefile
+###mono/arch/Makefile
+###mono/arch/x86/Makefile
+###mono/arch/amd64/Makefile
+###mono/arch/hppa/Makefile
+###mono/arch/ppc/Makefile
+###mono/arch/sparc/Makefile
+###mono/arch/s390/Makefile
+###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
+###mono/tests/assemblyresolve/Makefile
+###mono/tests/cas/Makefile
+###mono/tests/cas/assembly/Makefile
+###mono/tests/cas/demand/Makefile
+###mono/tests/cas/inheritance/Makefile
+###mono/tests/cas/linkdemand/Makefile
+###mono/tests/cas/threads/Makefile
+###mono/benchmark/Makefile
+###mono/monograph/Makefile
+###mono/io-layer/Makefile
+###mono/mini/Makefile
+###mono/profiler/Makefile
+###ikvm-native/Makefile
+###scripts/Makefile
+###man/Makefile
+###web/Makefile
+###docs/Makefile
+###data/Makefile
+###data/net_1_1/Makefile
+###data/net_2_0/Makefile
+###data/net_2_0/Browsers/Makefile
+###data/mint.pc
+###data/mono.pc
+###data/mono-cairo.pc
+###data/mono-nunit.pc
+###data/mono-options.pc
+###data/mono-lineeditor.pc
+###data/monodoc.pc
+###data/mono.web.pc
+###data/dotnet.pc
+###data/dotnet35.pc
+###data/wcf.pc
+###data/cecil.pc
+###data/system.web.extensions_1.0.pc
+###data/system.web.extensions.design_1.0.pc
+###data/system.web.mvc.pc
+###samples/Makefile
+###support/Makefile
+###data/config
+###tools/Makefile
+###tools/locale-builder/Makefile
+###runtime/Makefile
+###msvc/Makefile
+###po/Makefile
+###])
+
+###if test x$platform_win32 = xyes; then
+###   # Get rid of 'cyg' prefixes in library names
+###   sed -e "s/\/cyg\//\/\//" libtool > libtool.new; mv libtool.new libtool; chmod 755 libtool
+###   # libtool seems to inherit -mno-cygwin from our CFLAGS, and uses it to compile its executable
+###   # wrapper scripts which use exec(). gcc has no problem compiling+linking this, but the resulting
+###   # executable doesn't work...
+###   sed -e "s,-mno-cygwin,,g" libtool > libtool.new; mv libtool.new libtool; chmod 755 libtool
+###fi
+
+###(
+###  case $prefix in
+###  NONE) set(prefix $ac_default_prefix ;;)
+###  esac
+###  case $exec_prefix in
+###  NONE) set(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 "set(prefix $prefix" > $srcdir/$mcsdir/build/config.make)
+###    echo "set(exec_prefix $exec_prefix" >> $srcdir/$mcsdir/build/config.make)
+###    echo "set(sysconfdir $sysconfdir" >> $srcdir/$mcsdir/build/config.make)
+###    echo 'set(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
+###    case $INSTALL in
+###    [[\\/$]]* | ?:[[\\/]]* ) set(mcs_INSTALL $INSTALL ;;)
+###    *) set(mcs_INSTALL $mono_build_root/$INSTALL ;;)
+###    esac
+
+###    echo "INSTALL = $mcs_INSTALL" >> $srcdir/$mcsdir/build/config.make
+
+###    export VERSION
+###    [set(myver $($AWK 'BEGIN {)
+###      split (ENVIRON["VERSION"] ".0.0.0", vsplit, ".")
+###      if(length(vsplit [1]) > 4) {
+###        split (substr(ENVIRON["VERSION"], 0, 4) "." substr(ENVIRON["VERSION"], 5) ".0.0", vsplit, ".")
+###      }
+###      print vsplit [1] "." vsplit [2] "." vsplit [3] "." vsplit [4]
+###    }')]
+
+###    echo "MONO_VERSION = $myver" >> $srcdir/$mcsdir/build/config.make
+###  fi
+
+###  if test x$platform_darwin = xyes; then
+###    echo "PLATFORM = darwin" >> $srcdir/$mcsdir/build/config.make
+###  fi
+
+###  if test x$TARGET = xAMD64 -a x$platform_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
+###      echo "set(prefix $prefix" > $srcdir/$olivedir/build/config.make)
+###      echo "set(exec_prefix $exec_prefix" >> $srcdir/$olivedir/build/config.make)
+###      echo 'set(mono_libdir ${exec_prefix}/lib' >> $srcdir/$olivedir/build/config.make)
+###      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(NOT libgdiplus_loc)
+  set(libgdiplus_msg "assumed to be installed")
+else()
+  set(libgdiplus_msg ${libgdiplus_loc})
+endif()
+
+message(STATUS
+"
+        mcs source:    ${mcs_topdir}
+        olive source:  ${olive_topdir}
+
+       GC:            ${gc}
+       TLS:           ${with_tls}
+       SIGALTSTACK:   ${with_sigaltstack}
+       Engine:        ${jit_status}
+       2.0 Beta:      ${PREVIEW}
+       2.1 Alpha:     ${MOONLIGHT}
+       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}
+
+")
+
+if(NOT with_static_mono)
+  if(NOT platform_win32)
+       ac_msg_warn("Turning off static Mono is a risk, you might run into unexpected bugs")
+  endif()
+endif()
+
+if(gc STREQUAL sgen)
+message("
+ IMPORTANT:
+ IMPORTANT: You have selected an experimental, work-in-progress 
+ IMPORTANT: GC engine.  This GC engine is currently not supported
+ IMPORTANT: and is not yet ready for use.  
+ IMPORTANT:
+ IMPORTANT: There are known problems with it, use at your own risk.
+ IMPORTANT:
+")
+endif()
+
+if(enable_llvm)
+message("
+ IMPORTANT:
+ IMPORTANT: The LLVM Back End is experimental and does not work yet.
+ IMPORTANT:
+")
+endif()
+
+# Makefile.am
+
+###    -rm -fr $(mcslib)/monolite-*
+###    -mkdir -p $(mcslib)
+###    test ! -d $(monolite) || test ! -d $(monolite).old || rm -fr $(monolite).old
+###    test ! -d $(monolite) || mv -f $(monolite) $(monolite).old
+###    cd $(mcslib) && { (wget -O- $(monolite_url) || curl $(monolite_url)) | gzip -d | tar xf - ; }
+###    cd $(mcslib) && mv -f monolite-* monolite
+
+
+#### Keep in sync with SUBDIRS
+##### 'tools' is not normally built
+###DIST_SUBDIRS = po libgc $(eglib_dir) mono ikvm-native support data runtime scripts man samples web tools msvc docs
+
+###EXTRA_DIST= nls.m4 po.m4 progtest.m4 mono-uninstalled.pc.in build-mingw32.sh LICENSE mkinstalldirs
+
+###DISTCHECK_CONFIGURE_FLAGS = EXTERNAL_MCS=false EXTERNAL_RUNTIME=false
+
+#### Distribute the 'mcs' tree too
+###dist-hook:
+###    test -d $(distdir)/mcs || mkdir $(distdir)/mcs
+###    d=`cd $(distdir)/mcs && pwd`; cd $(mcs_topdir) && $(MAKE) PROFILE=net_1_1 distdir=$$d dist-recursive
+###    d=`cd $(distdir)/mcs && pwd`; cd $(mcs_topdir) && $(MAKE) PROFILE=net_2_0 distdir=$$d dist-recursive
+
+###pkgconfigdir = $(libdir)/pkgconfig
+###noinst_DATA = mono-uninstalled.pc
+###DISTCLEANFILES= mono-uninstalled.pc
+
+###.PHONY: get-monolite-latest mcs-do-compiler-tests compiler-tests bootstrap-world
+
+#### building with monolite
+set(mcslib ${mcs_topdir}/class/lib)
+set(monolite ${mcslib}/monolite)
+set(monolite_url http://mono.ximian.com/daily/monolite-latest.tar.gz)
+add_custom_target(get-monolite-latest
+COMMAND        -rm -fr ${mcslib}/monolite-*
+COMMAND        -mkdir -p ${mcslib}
+COMMAND        test ! -d ${monolite} || test ! -d ${monolite}.old || rm -fr ${monolite}.old
+COMMAND        test ! -d ${monolite} || mv -f ${monolite} ${monolite}.old
+COMMAND        cd ${mcslib} && { (wget -O- ${monolite_url} || curl ${monolite_url}) | gzip -d | tar xf - \; }
+COMMAND        cd ${mcslib} && mv -f monolite-* monolite
+)
+
+###compiler-tests: mcs-do-clean
+###    $(MAKE) all
+###    $(MAKE) mcs-do-compiler-tests
+
+###compiler-tests-net_2_0:
+###    -rm -f $(mcs_topdir)/build/common/Consts.cs.save
+###    -mv -f $(mcs_topdir)/build/common/Consts.cs $(mcs_topdir)/build/common/Consts.cs.save
+###    cd $(mcs_topdir) && $(MAKE) PROFILE=net_2_0_bootstrap clean
+###    cd $(mcs_topdir) && $(MAKE) PROFILE=net_2_0 clean
+###    -mv -f $(mcs_topdir)/build/common/Consts.cs.save $(mcs_topdir)/build/common/Consts.cs
+###    $(MAKE) all
+###    $(MAKE) build_profiles=net_2_0 mcs-do-compiler-tests
+
+###bootstrap-world: compiler-tests
+###    $(MAKE) install
+
+###bootstrap-world-net_2_0: compiler-tests-net_2_0
+###    $(MAKE) install
+
+#### internal targets
+###mcs-do-clean:
+###    cd runtime && $(MAKE) clean-local
+###    cd mono/tests && $(MAKE) clean
+###mcs-do-compiler-tests:
+###    cd runtime && $(MAKE) test_select='TEST_SUBDIRS="tests errors"' check-local
+###    cd mono/tests && $(MAKE) check
+
+###win32getdeps:
+###    wget http://www.go-mono.com/archive/pkgconfig-0.11-20020310.zip
+###    wget http://www.go-mono.com/archive/glib-2.0.4-20020703.zip 
+###    wget http://www.go-mono.com/archive/glib-dev-2.0.4-20020703.zip 
+###    wget http://www.go-mono.com/archive/libiconv-1.7.zip 
+###    wget http://www.go-mono.com/archive/libiconv-dev-1.7.zip 
+###    wget http://www.go-mono.com/archive/libintl-0.10.40-20020101.zip
+###    unzip -n -d / pkgconfig-0.11-20020310.zip
+###    unzip -n -d / glib-2.0.4-20020703.zip
+###    unzip -n -d / glib-dev-2.0.4-20020703.zip
+###    unzip -n -d / libiconv-1.7.zip
+###    unzip -n -d / libiconv-dev-1.7.zip
+###    unzip -n -d / libintl-0.10.40-20020101.zip
+
+###win32setup:
+###    makensis /DMILESTONE=$(VERSION) /DSOURCE_INSTALL_DIR=$(SOURCE_INSTALL_DIR) /DBUILDNUM=$(BUILDNUM) monowiz.win32.nsi
+
+###bootstrap: all
+###    @echo "*** 'make bootstrap' is obsolete.  Just run 'make' to perform a combined mono+mcs build"
+###    exit 1
+
+###patch-quiet:
+###    find mono -name Makefile -exec scripts/patch-quiet.sh {} \;
+###    find libgc -name Makefile -exec scripts/patch-quiet.sh {} \;
+
+###update-csproj:
+###    (cd $(mcs_topdir)/build/csproj && gmcs genproj.cs) && (cd runtime; make V=1 extra_targets=csproj-local)
index 4210358101a7f31f346243d5ef3e5d49c181fc96..a4d96252b1a50f196a70888420e6b7c43c8749cc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2009-05-24  Zoltan Varga  <vargaz@gmail.com>
+
+       * */CMakeLists.txt: Add beginnings of a cmake based build system.
+
 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
 
        * acinclude.m4 (dolt_supported): Enable dolt on sparc linux.
diff --git a/ikvm-native/CMakeLists.txt b/ikvm-native/CMakeLists.txt
new file mode 100644 (file)
index 0000000..74c6a1a
--- /dev/null
@@ -0,0 +1,4 @@
+
+ADD_DEFINITIONS(${GMODULE_CFLAGS})
+ADD_LIBRARY(ikvm_native SHARED jni.c os.c jni.h)
+TARGET_LINK_LIBRARIES(ikvm_native ${GMODULE_LIBS})
\ No newline at end of file
diff --git a/mono/CMakeLists.txt b/mono/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ed828ce
--- /dev/null
@@ -0,0 +1,6 @@
+set(SUBDIRS utils io-layer cil metadata
+      arch interpreter mini dis monograph tests benchmark profiler)
+
+foreach(subdir ${SUBDIRS})
+  add_subdirectory(${subdir})
+endforeach()
\ No newline at end of file
diff --git a/mono/dis/CMakeLists.txt b/mono/dis/CMakeLists.txt
new file mode 100644 (file)
index 0000000..2153956
--- /dev/null
@@ -0,0 +1,42 @@
+if(PLATFORM_WIN32)
+###export HOST_CC
+endif()
+
+set(libmonodis_a_SOURCES  
+       get.c   
+       get.h   
+       dis-cil.c
+       dis-cil.h
+       util.c  
+       util.h)
+
+set(monodis_SOURCES  
+       dump.c  
+       dump.h  
+       main.c  
+       meta.h  
+       declsec.c
+       declsec.h)
+
+set(monodis_LDADD              
+       libmonodis.a            
+       ${runtime_lib}          
+       ${GLIB_LIBS})
+
+include_directories(${top_srcdir})
+include_directories(${GLIB2_INCLUDE_DIRS})
+set(CMAKE_C_FLAGS "${CFLAGS} ${CPPFLAGS}")
+
+# FIXME: cmake doesn't seem to link the libs together into libmono-static.a
+link_directories(../../libgc/.libs)
+
+add_executable(monodis ${libmonodis_a_SOURCES} ${monodis_SOURCES})
+target_link_libraries(monodis mono-static ${GLIB_LIBS})
+
+###bin_PROGRAMS monodis
+
+###noinst_LIBRARIES libmonodis.a
+
+###man_MANS monodis.1
+
+###EXTRA_DIST ${man_MANS}
diff --git a/mono/io-layer/CMakeLists.txt b/mono/io-layer/CMakeLists.txt
new file mode 100644 (file)
index 0000000..b1274b1
--- /dev/null
@@ -0,0 +1,141 @@
+
+# Last synched with Makefile.am at r134597
+
+set(OTHER_H
+       access.h
+       atomic.h
+       collection.h
+       context.h
+       critical-sections.h
+       error.h 
+       events.h
+       handles.h
+       io.h    
+       io-layer.h
+       io-portability.h
+       macros.h
+       messages.h
+       mono-mutex.h
+       mutexes.h
+       processes.h
+       security.h
+       semaphores.h
+       sockets.h
+       status.h
+       system.h
+       threads.h
+       timefuncs.h
+       types.h 
+       uglify.h
+       versioninfo.h
+       wait.h  
+       wapi.h)
+
+set(OTHER_SRC
+       access.h        
+       atomic.c        
+       atomic.h        
+       collection.c    
+       collection.h    
+       context.c       
+       context.h       
+       critical-sections.c
+       critical-sections.h
+       critical-section-private.h
+       error.c         
+       error.h         
+       events.c        
+       events.h        
+       event-private.h 
+       handles.c       
+       handles.h       
+       handles-private.h
+       io.c            
+       io.h            
+       io-portability.c
+       io-portability.h
+       io-private.h    
+       io-layer.h      
+       locking.c       
+       macros.h        
+       messages.c      
+       messages.h      
+       misc.c          
+       misc-private.h  
+       mutexes.c       
+       mutexes.h       
+       mutex-private.h 
+       mono-mutex.c    
+       mono-mutex.h    
+       mono-spinlock.h 
+       processes.c     
+       processes.h     
+       process-private.h
+       security.c      
+       security.h      
+       semaphores.c    
+       semaphores.h    
+       semaphore-private.h
+       shared.c        
+       shared.h        
+       sockets.c       
+       sockets.h       
+       socket-private.h
+       socket-wrappers.h
+       status.h        
+       system.c        
+       system.h        
+       threads.h       
+       thread-private.h
+       timefuncs.c     
+       timefuncs.h     
+       timefuncs-private.h
+       types.h         
+       uglify.h        
+       versioninfo.c   
+       versioninfo.h   
+       wait.c          
+       wait.h          
+       wapi_glob.h     
+       wapi_glob.c     
+       wapi.h          
+       wapi-private.h  
+       wthreads.c)
+
+set(WINDOWS_H
+  io-layer.h)
+
+set(WINDOWS_SRC
+  io-layer.h
+  io-layer-dummy.c)
+
+set(HPPA_SRC
+  hppa_atomic.S)
+
+if(PLATFORM_WIN32)
+###if PLATFORM_WIN32
+###libwapi_la_SOURCES = $(WINDOWS_SRC)
+###libwapiinclude_HEADERS = $(WINDOWS_H)
+else()
+###if HPPA
+###libwapi_la_SOURCES = $(OTHER_SRC) $(HPPA_SRC)
+#### to enable pick up of config.h
+###libwapi_la_CCASFLAGS = -I$(top_builddir)
+###else
+set(libwapi_la_SOURCES ${OTHER_SRC})
+###endif
+###libwapiinclude_HEADERS = $(OTHER_H)
+###endif
+endif()
+
+###EXTRA_DIST =
+###    $(WINDOWS_SRC)
+###        $(HPPA_SRC) \
+###    $(OTHER_SRC)
+
+set(top_srcdir ../../)
+include_directories(${top_srcdir} ${top_srcdir}/mono ${GLIB2_INCLUDE_DIRS})
+add_definitions(${CFLAGS} ${LIBGC_CFLAGS} ${CPPFLAGS})
+
+add_library(wapi-static STATIC ${libwapi_la_SOURCES})
+add_library(wapi SHARED ${libwapi_la_SOURCES})
diff --git a/mono/metadata/CMakeLists.txt b/mono/metadata/CMakeLists.txt
new file mode 100644 (file)
index 0000000..1189be6
--- /dev/null
@@ -0,0 +1,232 @@
+if(PLATFORM_WIN32)
+###win32_sources = \
+###    console-win32.c
+
+###platform_sources = $(win32_sources)
+
+#### Use -m here. This will use / as directory separator (C:/WINNT).
+#### The files that use MONO_ASSEMBLIES and/or MONO_CFG_DIR replace the
+#### / by \ if running under WIN32.
+###if CROSS_COMPILING
+###assembliesdir = ${libdir}
+###confdir = ${sysconfdir}
+###else
+###assembliesdir = `cygpath -m "${libdir}"`
+###confdir = `cygpath -m "${sysconfdir}"`
+###endif
+###export HOST_CC
+#### The mingw math.h has "extern inline" functions that dont appear in libs, so
+#### optimisation is required to actually inline them
+###AM_CFLAGS = -O
+
+else()
+
+# FIXME:
+set(assembliesdir ${CMAKE_INSTALL_PREFIX}/lib)
+set(sysconfdir ${CMAKE_INSTALL_PREFIX}/etc)
+set(confdir ${sysconfdir})
+###assembliesdir = $(exec_prefix)/lib
+###confdir = $(sysconfdir)
+
+set(unix_sources
+  console-unix.c)
+
+set(platform_sources ${unix_sources})
+
+endif(PLATFORM_WIN32)
+
+###bin_PROGRAMS = pedump
+
+#
+#### libtool is not capable of creating static/shared versions of the same
+#### convenience lib, so we have to do it ourselves
+#
+###noinst_LTLIBRARIES = libmonoruntime.la libmonoruntime-static.la
+
+set(top_srcdir ../../)
+INCLUDE_DIRECTORIES(${top_srcdir} ${top_srcdir}/mono ${GLIB2_INCLUDE_DIRS})
+ADD_DEFINITIONS("-DMONO_BINDIR=\"${CMAKE_BINARY_DIR}\"")
+ADD_DEFINITIONS("-DMONO_ASSEMBLIES=\"${assembliesdir}\"")
+ADD_DEFINITIONS("-DMONO_CFG_DIR=\"${confdir}\"")
+ADD_DEFINITIONS(${CFLAGS} ${LIBGC_CFLAGS} ${CPPFLAGS})
+
+#
+#### Make sure any prefix changes are updated in the binaries too.
+#
+####  assembly.c uses MONO_ASSEMBLIES
+####  mono-config.c uses MONO_CFG_DIR
+#
+#### This won't result in many more false positives than AC_DEFINEing them
+#### in configure.in.
+#
+###assembly.lo mono-config.lo: Makefile
+
+###CLEANFILES = mono-bundle.stamp
+
+###libmonoruntime_static_la_LIBADD = $(bundle_obj) $(libmonoruntime_la_LIBADD)
+
+set(null_sources
+  console-null.c)
+
+set(libmonoruntime_la_SOURCES
+       ${platform_sources}
+       appdomain.c     
+       assembly.c      
+       attach.h        
+       attach.c        
+       boehm-gc.c      
+       char-conversions.h
+       cil-coff.h      
+       class.c         
+       class-internals.h
+       cominterop.c    
+       cominterop.h    
+       console-io.h    
+       coree.c         
+       coree.h         
+       culture-info.h  
+       culture-info-tables.h
+       debug-helpers.c 
+       debug-mono-symfile.h
+       debug-mono-symfile.c
+       decimal.c       
+       decimal.h       
+       domain.c        
+       domain-internals.h
+       environment.c   
+       environment.h   
+       exception.c     
+       exception.h     
+       file-io.c       
+       file-io.h       
+       filewatcher.c   
+       filewatcher.h   
+       gc.c            
+       gc-internal.h   
+       generic-sharing.c
+       icall.c         
+       icall-def.h     
+       image.c         
+       loader.c        
+       locales.c       
+       locales.h       
+       lock-tracer.c   
+       lock-tracer.h   
+       marshal.c       
+       marshal.h       
+       mempool.c       
+       mempool-internals.h
+       metadata.c      
+       metadata-verify.c
+       metadata-internals.h
+       method-builder.h 
+       method-builder.c 
+       mono-config.c   
+       mono-debug.h    
+       mono-debug.c    
+       mono-debug-debugger.h
+       mono-debug-debugger.c
+       mono-endian.c   
+       mono-endian.h   
+       mono-mlist.c    
+       mono-mlist.h    
+       mono-perfcounters.c
+       mono-perfcounters.h
+       mono-perfcounters-def.h
+       monitor.c       
+       monitor.h       
+       normalization-tables.h
+       null-gc.c       
+       number-formatter.h
+       object.c        
+       object-internals.h
+       opcodes.c       
+       socket-io.c     
+       socket-io.h     
+       process.c       
+       process.h       
+       profiler.c      
+       profiler-private.h
+       rand.h          
+       rand.c          
+       reflection.c    
+       security.c      
+       security.h      
+       security-core-clr.c
+       security-core-clr.h
+       security-manager.c
+       security-manager.h
+       sgen-gc.c       
+       sgen-gc.h       
+       string-icalls.c 
+       string-icalls.h 
+       sysmath.h       
+       sysmath.c       
+       tabledefs.h     
+       threads.c       
+       threads-types.h 
+       threadpool.c    
+       threadpool.h    
+       threadpool-internals.h
+       verify.c        
+       verify-internals.h
+       wrapper-types.h)
+
+set(libmonoruntime_static_la_SOURCES ${libmonoruntime_la_SOURCES})
+
+###libmonoruntimeincludedir = $(includedir)/mono-$(API_VER)/mono/metadata
+
+###libmonoruntimeinclude_HEADERS = \
+###    assembly.h              \
+###    attrdefs.h              \
+###    appdomain.h             \
+###    blob.h                  \
+###    class.h                 \
+###    debug-helpers.h         \
+###    debug-mono-symfile.h    \
+###    threads.h               \
+###    environment.h           \
+###    exception.h             \
+###    image.h                 \
+###    loader.h                \
+###    mempool.h               \
+###    metadata.h              \
+###    mono-config.h           \
+###    mono-debug.h            \
+###    mono-gc.h               \
+###    object.h                \
+###    opcodes.h               \
+###    profiler.h              \
+###    reflection.h            \
+###    row-indexes.h           \
+###    tokentype.h             \
+###    verify.h                
+
+#ADD_LIBRARY(libmonoruntime SHARED ${libmonoruntime_la_SOURCES})
+
+###if DTRACE_G_REQUIRED
+
+###PEDUMP_DTRACE_OBJECT = pedump-dtrace.$(OBJEXT)
+
+###pedump-dtrace.$(OBJEXT): $(top_srcdir)/data/mono.d libmonoruntime.la ../io-layer/libwapi.la ../utils/libmonoutils.la
+###    DTRACE="$(DTRACE)" DTRACEFLAGS="$(DTRACEFLAGS)" AR="$(AR)" $(SHELL) $(top_srcdir)/data/dtrace-prelink.sh \
+###    --pic pedump-dtrace.$(OBJEXT) $(top_srcdir)/data/mono.d libmonoruntime.la ../io-layer/libwapi.la ../utils/libmonoutils.la
+
+###else
+###PEDUMP_DTRACE_OBJECT = 
+###endif
+
+add_library(monoruntime-static STATIC ${libmonoruntime_static_la_SOURCES})
+#add_library(monoruntime SHARED ${libmonoruntime_static_la_SOURCES})
+#target_link_libraries(monoruntime wapi monoutils monogc ${GLIB2_LIBRARIES} ${LIBS})
+
+# FIXME:
+link_directories(../../libgc/.libs)
+add_executable(pedump pedump.c)
+target_link_libraries(pedump monoruntime-static wapi monoutils monogc-static ${GLIB2_LIBRARIES} ${LIBS})
+
+###pedump_LDADD = libmonoruntime.la ../io-layer/libwapi.la ../utils/libmonoutils.la \
+###    $(LIBGC_LIBS) $(GLIB_LIBS) -lm $(PEDUMP_DTRACE_OBJECT)
+
+###EXTRA_DIST = make-bundle.pl sample-bundle $(win32_sources) $(unix_sources) $(null_sources)
+
diff --git a/mono/mini/CMakeLists.txt b/mono/mini/CMakeLists.txt
new file mode 100644 (file)
index 0000000..dd34cc9
--- /dev/null
@@ -0,0 +1,666 @@
+
+# Last synched with Makefile.am at r134597
+
+cmake_policy(SET CMP0010 NEW)
+
+# Helper functions
+
+function(add_cs_target target sources args depends)
+  separate_arguments(sources)
+  separate_arguments(args)
+  separate_arguments(depends)
+  add_custom_command(
+       OUTPUT ${target}
+       COMMAND ${MCS} -out:${target} ${args} ${sources}
+       DEPENDS ${sources} ${depends}
+       )
+  add_custom_target (${target}-target DEPENDS ${target})
+endfunction()
+
+function(add_cs_dll target sources args depends)
+  add_cs_target(${target} ${sources} "-target:library ${args}" "${depends}")
+endfunction()
+
+function(add_cs_exe target sources args depends)
+  add_cs_target(${target} ${sources} "-target:exe ${args}" "${depends}")
+endfunction()
+
+function(add_il_target target sources args)
+  separate_arguments(sources)
+  separate_arguments(args)
+  add_custom_command(
+       OUTPUT ${target}
+       COMMAND ${ILASM} -output=${target} ${args} ${sources}
+       DEPENDS ${sources}
+       )
+  add_custom_target (${target}-target DEPENDS ${target})
+endfunction()
+
+
+
+
+set(count 100000)
+set(mtest for_loop)
+set(monodir ${top_builddir})
+
+set(CLASS ${mcs_topdir}/class/lib/net_2_0)
+
+set(RUNTIME MONO_PATH=${CLASS} ${top_builddir}/runtime/mono-wrapper)
+set(RUNTIME_AOTCHECK MONO_PATH=${CLASS}:. ${top_builddir}/runtime/mono-wrapper)
+
+set(MCS ${RUNTIME} ${CLASS}/gmcs.exe -unsafe -nowarn:0162)
+set(ILASM ${RUNTIME} ${CLASS}/ilasm.exe)
+
+set(x86_sources
+       mini-x86.c      
+       mini-x86.h      
+       exceptions-x86.c
+       tramp-x86.c)
+
+set(amd64_sources
+       mini-amd64.c    
+       mini-amd64.h    
+       exceptions-amd64.c
+       tramp-amd64.c)
+
+set(ppc_sources
+       mini-ppc.c      
+       mini-ppc.h      
+       exceptions-ppc.c
+       tramp-ppc.c)
+
+set(arm_sources
+       mini-arm.c      
+       mini-arm.h      
+       exceptions-arm.c
+       tramp-arm.c)
+
+set(mips_sources
+       mini-mips.c     
+       mini-mips.h     
+       exceptions-mips.c
+       tramp-mips.c)
+
+set(sparc_sources
+       mini-sparc.c    
+       mini-sparc.h    
+       exceptions-sparc.c
+       tramp-sparc.c)
+
+set(s390_sources
+       mini-s390.c     
+       mini-s390.h     
+       exceptions-s390.c
+       tramp-s390.c)
+
+set(s390x_sources
+       mini-s390x.c    
+       mini-s390x.h    
+       exceptions-s390x.c
+       tramp-s390x.c)
+
+set(ia64_sources
+       mini-ia64.c     
+       mini-ia64.h     
+       exceptions-ia64.c
+       tramp-ia64.c)
+
+set(alpha_sources
+       mini-alpha.c    
+       mini-alpha.h    
+       exceptions-alpha.c
+       tramp-alpha.c)
+
+set(hppa_sources
+       mini-hppa.c     
+       mini-hppa.h     
+       exceptions-hppa.c
+       tramp-hppa.c)
+
+set(darwin_sources
+       mini-darwin.c)
+
+set(windows_sources
+       mini-windows.c)
+
+set(posix_sources
+       mini-posix.c)
+
+set(common_sources
+       mini.c          
+       ir-emit.h       
+       method-to-ir.c  
+       decompose.c     
+       mini.h          
+       version.h       
+       optflags-def.h  
+       jit-icalls.h    
+       jit-icalls.c    
+       trace.c         
+       trace.h         
+       patch-info.h    
+       mini-ops.h      
+       mini-arch.h     
+       dominators.c    
+       cfold.c         
+       regalloc.c      
+       regalloc.h      
+       helpers.c       
+       liveness.c      
+       ssa.c           
+       abcremoval.c    
+       abcremoval.h    
+       ssapre.c        
+       ssapre.h        
+       local-propagation.c
+       driver.c        
+       debug-mini.c    
+       debug-mini.h    
+       linear-scan.c   
+       aot-compiler.c  
+       aot-runtime.c   
+       graph.c         
+       mini-codegen.c  
+       mini-exceptions.c
+       mini-trampolines.c  
+       declsec.c       
+       declsec.h       
+       wapihandles.c   
+       branch-opts.c   
+       mini-generic-sharing.c
+       regalloc2.c     
+       simd-methods.h  
+       tasklets.c      
+       tasklets.h      
+       simd-intrinsics.c
+       unwind.h        
+       unwind.c        
+       image-writer.h
+       image-writer.c
+       dwarfwriter.h
+       dwarfwriter.c
+       mini-gc.h       
+       mini-gc.c)
+
+set(test_sources               
+       basic-calls.cs  
+       basic-long.cs   
+       bench.cs        
+       objects.cs      
+       arrays.cs       
+       basic-float.cs  
+       basic-math.cs   
+       basic.cs        
+       exceptions.cs   
+       devirtualization.cs
+       iltests.il.in   
+       test.cs         
+       generics.cs     
+       generics-variant-types.il
+       basic-simd.cs)
+
+if(MONO_DEBUGGER_SUPPORTED)
+if(AMD64)
+set(mono_debugger_arch_sources mdb-debug-info64.s)
+elseif(X86)
+set(mono_debugger_arch_sources mdb-debug-info32.s)
+endif()
+enable_language(ASM-ATT)
+set(mono_debugger_sources debug-debugger.c debug-debugger.h ${mono_debugger_arch_sources})
+
+set(ASM-ATT_FLAGS)
+else(MONO_DEBUGGER_SUPPORTED)
+set(mono_debugger_sources)
+endif(MONO_DEBUGGER_SUPPORTED)
+
+set(regtests basic.exe basic-float.exe basic-long.exe basic-calls.exe objects.exe arrays.exe basic-math.exe exceptions.exe iltests.exe devirtualization.exe generics.exe basic-simd.exe)
+
+if(X86)
+set(arch_sources ${x86_sources} ${mono_debugger_sources})
+set(arch_built cpu-x86.h)
+set(arch_define __i386__)
+endif()
+
+if(AMD64)
+set(arch_sources ${amd64_sources} ${mono_debugger_sources})
+set(arch_built cpu-amd64.h)
+set(arch_define __x86_64__)
+endif()
+
+if(POWERPC)
+set(arch_sources ${ppc_sources})
+set(arch_built cpu-ppc.h)
+set(arch_define __ppc__)
+endif()
+
+if(POWERPC64)
+set(arch_sources ${ppc_sources})
+set(arch_built cpu-ppc64.h)
+set(arch_define __ppc64__)
+endif()
+
+if(MIPS)
+set(arch_sources ${mips_sources})
+set(arch_built cpu-mips.h)
+set(arch_define __mips__)
+endif()
+
+if(ARM)
+# pick up arm_dpimacros.h and arm_fpamacros.h
+set(ARCH_CFLAGS -I../arch/arm)
+set(arch_sources ${arm_sources})
+set(arch_built cpu-arm.h)
+set(arch_define __arm__)
+endif()
+
+if(SPARC)
+set(arch_sources ${sparc_sources})
+set(arch_built cpu-sparc.h)
+set(arch_define __sparc__)
+endif()
+
+if(SPARC64)
+set(arch_sources ${sparc_sources})
+set(arch_built cpu-sparc.h)
+set(arch_define __sparc__)
+endif()
+
+if(S390)
+set(arch_sources ${s390_sources})
+set(arch_built cpu-s390.h)
+set(arch_define __s390__)
+endif()
+
+if(S390x)
+set(arch_sources ${s390x_sources})
+set(arch_built cpu-s390x.h)
+set(arch_define __s390__)
+endif()
+
+if(IA64)
+set(arch_sources ${ia64_sources})
+set(arch_built cpu-ia64.h)
+set(arch_define __ia64__)
+endif()
+
+if(ALPHA)
+set(arch_sources ${alpha_sources} ${mono_debugger_sources})
+set(arch_built cpu-alpha.h)
+set(arch_define __alpha__)
+endif()
+
+if(HPPA)
+# Only support 32-bit targets for now
+set(arch_sources ${hppa_sources})
+set(arch_built cpu-hppa.h)
+set(arch_define __hppa__)
+endif()
+
+if(PLATFORM_WIN32)
+set(os_sources ${windows_sources})
+endif()
+
+if(PLATFORM_SIGPOSIX)
+set(os_sources ${posix_sources})
+endif()
+
+if(PLATFORM_DARWIN)
+set(os_sources ${darwin_sources} ${posix_sources})
+endif()
+
+#### we don't always use the perl impl because it's an additional
+#### build dependency for the poor windows users
+#### ${arch_define} is the preprocessor symbol that enables all the opcodes
+#### for the specific platform in mini-ops.h
+###if CROSS_COMPILING
+###GENMDESC_PRG=perl ${srcdir)/genmdesc.pl ${arch_define} ${srcdir)
+###else !CROSS_COMPILING
+set(GENMDESC_PRG ${CMAKE_CURRENT_BINARY_DIR}/genmdesc)
+###endif !CROSS_COMPILING
+
+function(add_genmdesc_target target source define)
+  add_custom_command(
+       OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${target}
+       COMMAND ${GENMDESC_PRG} ${CMAKE_CURRENT_BINARY_DIR}/${target} ${define} ${source}
+       DEPENDS genmdesc ${source}
+       )
+endfunction()
+
+foreach(arch x86 amd64 sparc ia64 alpha hppa mips)
+  add_genmdesc_target(cpu-${arch}.h cpu-${arch}.md ${arch}_desc)
+endforeach()
+
+add_genmdesc_target(cpu-ppc.h cpu-ppc.md ppcg4)
+add_genmdesc_target(cpu-ppc64.h cpu-ppc64.md ppc64_cpu_desc)
+add_genmdesc_target(cpu-arm.h cpu-arm.md arm_cpu_desc)
+add_genmdesc_target(cpu-s390.h cpu-s390.md s390_cpu_desc)
+add_genmdesc_target(cpu-s390x.h cpu-s390x.md s390x_cpu_desc)
+
+include_directories(../..)
+include_directories(${GLIB2_INCLUDE_DIRS})
+include_directories(${LIBGC_INCLUDE_DIRS})
+# FIXME:
+link_directories(../../libgc/.libs)
+set(CMAKE_C_FLAGS "${CFLAGS} ${LIBGC_CFLAGS} ${CPPFLAGS}")
+
+# genmdesc
+add_executable(genmdesc genmdesc.c helpers.c)
+target_link_libraries(genmdesc monoutils-static monoruntime-static ${GLIB2_LIBRARIES})
+
+# libmono
+
+set(libmono_la_SOURCES ${common_sources} ${llvm_sources} ${arch_sources} ${os_sources})
+
+# FIXME: cmake doesn't seem to recognize the ${arch_built} dependency
+add_library(libmono-static STATIC ${libmono_la_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/${arch_built})
+target_link_libraries(libmono-static monoruntime-static monoutils-static monogc-static wapi-static ${GLIB2_LIBRARIES} ${LIBS})
+set_target_properties(libmono-static PROPERTIES OUTPUT_NAME "mono-static")
+
+# FIXME: cmake has no support for convenience libraries, so we would end up 
+# creating a lot of shared libraries linking to each other
+#add_library(libmono SHARED ${libmono_la_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/${arch_built})
+#set_target_properties(libmono PROPERTIES OUTPUT_NAME "mono")
+#target_link_libraries(libmono monoruntime monoutils monogc wapi ${GLIB2_LIBRARIES} ${LIBS})
+
+# version.h
+
+# Its a pain to try to pass a complex shell script to add_custom_command (), so
+# write it to disk instead
+# " needs to be escaped as \"
+# \ needs to be escaped as \\
+set(top_srcdir ../../)
+file(WRITE create-version.h.sh "
+       if test -d ${top_srcdir}/.git/svn; then svn_info=\"echo \\\"`git log --no-color --first-parent --pretty=format:%b|grep -m1 git-svn-id|sed -e 's,git-svn-id: \\(.*\\)@\\(.*\\) .*,URL: \\1 Revision: \\2,'`\"; fi;
+       if test -d ${srcdir}/.svn; then svn_info='svn info'; fi;
+       if test -n \"$svn_info\"; then
+               (cd ${top_srcdir};
+                       LANG=C; export LANG;
+                       branch=`$svn_info | grep URL | sed -e 's,.*source/\\(.*\\)/mono.*,/\\1/mono,'`;
+                       version=`$svn_info | grep Revision | sed 's/.*: //'`;
+                       echo \"#define FULL_VERSION \\\"$branch r$version\\\"\";
+               );
+       else
+               echo \"#define FULL_VERSION \\\"tarball\\\"\";
+       fi > version.h
+")
+
+# FIXME: dependencies ?
+add_custom_command(
+  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version.h
+  COMMAND chmod a+x ./create-version.h.sh
+  COMMAND ./create-version.h.sh
+  VERBATIM
+)
+
+# buildver.h
+
+# We build this after libmono was built so it contains the date when the final
+# link was done
+add_custom_command(
+  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/buildver.h
+  PRE_LINK
+  COMMAND sh -c "X='\"'; echo \"const char *build_date = $X`date`$X;\" > ${CMAKE_CURRENT_BINARY_DIR}/buildver.h"
+  DEPENDS libmono-static
+  VERBATIM
+)
+set_source_files_properties(main.c PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/buildver.h)
+set_source_files_properties(main.c PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/buildver.h)
+
+# mono
+
+add_executable(mono main.c ${CMAKE_CURRENT_BINARY_DIR}/buildver.h)
+add_dependencies(mono libmono-static)
+target_link_libraries(mono libmono-static ${GLIB2_LIBRARIES})
+
+# Test file targets
+
+foreach(test ${test_sources})
+  if (${test} MATCHES ".*\\.cs")
+       string(REPLACE ".cs" ".exe" exe_name ${test})
+       add_cs_exe(${exe_name} ${test} "-r:TestDriver.dll -r:generics-variant-types.dll -r:Mono.Simd.dll" "TestDriver.dll generics-variant-types.dll")
+  endif()
+endforeach()
+
+set(il_source "iltests.il")
+set(exe_name "iltests.exe")
+add_custom_command(
+  OUTPUT ${exe_name}
+  COMMAND ${ILASM} -output=${exe_name} ${il_source}
+  DEPENDS ${il_source}
+  )
+add_custom_target(${exe_name}-exe DEPENDS ${exe_name})
+
+add_custom_command(
+  OUTPUT "iltests.il"
+  COMMAND echo // DO NOT EDIT: This file has been generated from iltests.il.in > iltests.il
+  COMMAND cpp -Darch=${arch_define} < iltests.il.in | sed "s/^#.*//" >> iltests.il
+  DEPENDS iltests.il.in
+  VERBATIM
+)
+
+add_cs_dll("TestDriver.dll" "TestDriver.cs" "-r:System.dll -r:System.dll" "")
+
+add_il_target("generics-variant-types.dll" "generics-variant-types.il" "-dll")
+  
+# Testing targets
+
+add_custom_target(rcheck
+  COMMAND ${RUNTIME} --regression ${regtests}
+  DEPENDS mono ${regtests}
+)
+
+# FIXME: make runs rcheck, but then says: 'No rule to make target `rcheck', needed by `mono/mini/CMakeFiles/check'
+#add_custom_target(check
+#  DEPENDS rcheck)
+add_custom_target(check
+  COMMAND ${RUNTIME} --regression ${regtests}
+  DEPENDS mono ${regtests}
+)
+
+add_custom_target(testi
+  COMMAND ${RUNTIME} -v -v --ncompile 1 --compile Test:${mtest} test.exe
+  DEPENDS mono test.exe
+)
+
+# ensure the tests are actually correct
+add_custom_target(checktests
+  COMMAND for i in ${regtests}\; do ${RUNTIME} $$i\; done
+  DEPENDS ${regtests}
+)
+
+add_custom_target(aotcheck
+  COMMAND rm -f *.exe.so
+  COMMAND ${RUNTIME} --aot ${regtests} || exit 1
+  COMMAND for i in ${regtests}\; do ${RUNTIME_AOTCHECK} --regression $$i || exit 1\; done
+  COMMAND rm -f *.exe.so
+  DEPENDS mono ${regtests}
+)
+
+# This currently only works on amd64/arm
+add_custom_target(fullaotcheck
+  COMMAND      rm -rf fullaot-tmp
+  COMMAND      mkdir fullaot-tmp
+  COMMAND      cp ${CLASS}/mscorlib.dll ${CLASS}/Mono.Simd.dll ${regtests} generics-variant-types.dll TestDriver.dll fullaot-tmp/
+  COMMAND      cp ${regtests} fullaot-tmp/
+  COMMAND      MONO_PATH=fullaot-tmp ${top_builddir}/runtime/mono-wrapper --aot=full fullaot-tmp/* || exit 1
+  COMMAND   for i in ${regtests}\; do echo $$i\; MONO_PATH=fullaot-tmp ${top_builddir}/runtime/mono-wrapper --full-aot fullaot-tmp/$$i --exclude '!FULLAOT' || exit 1\; done
+  DEPENDS mono ${regtests}
+)
+
+add_custom_target(bench
+  COMMAND time env ${RUNTIME} --ncompile ${count} --compile Test:${mtest} test.exe
+  DEPENDS mono test.exe
+)
+
+add_custom_target(stat1
+  COMMAND ${RUNTIME} --verbose --statfile stats.pl --regression bench.exe
+  COMMAND perl viewstat.pl stats.pl
+  DEPENDS mono bench.exe
+)
+
+add_custom_target(stat2
+  COMMAND ${RUNTIME} --verbose --statfile stats.pl --regression basic.exe
+  COMMAND perl viewstat.pl -e stats.pl
+  DEPENDS mono basic.exe
+)
+
+add_custom_target(stat3
+  COMMAND ${RUNTIME} --statfile stats.pl --ncompile 1000 --compile Tests:test_0_many_nested_loops bench.exe 
+  COMMAND perl viewstat.pl stats.pl
+  DEPENDS mono bench.exe
+)
+
+#### This is needed for automake dependency generation
+###if INCLUDED_LIBGC
+###libgc_libs=${monodir)/libgc/libmonogc.la
+###libgc_static_libs=${monodir)/libgc/libmonogc-static.la
+###else
+###libgc_libs=${LIBGC_LIBS)
+###libgc_static_libs=${LIBGC_STATIC_LIBS)
+###endif
+
+###AM_CFLAGS = \
+###    -I${top_srcdir}         \
+###    ${LIBGC_CFLAGS)         \
+###    ${GLIB_CFLAGS)
+###    ${PLATFORM_CFLAGS} ${ARCH_CFLAGS)
+
+###AM_CXXFLAGS = ${LLVM_CXXFLAGS} ${GLIB_CFLAGS)
+
+###if PLATFORM_WIN32
+###export HOST_CC
+#### The mingw math.h has "extern inline" functions that dont appear in libs, so
+#### optimisation is required to actually inline them
+###PLATFORM_CFLAGS = -O
+###endif
+
+#### hack for automake to have the same source file in a library and a bin
+###genmdesc_CFLAGS = ${AM_CFLAGS)
+
+###if NO_VERSION_SCRIPT
+###monoldflags=${export_ldflags)
+###monobinldflags=${export_ldflags)
+###else
+###monoldflags=-Wl,-version-script=${srcdir)/ldscript ${export_ldflags)
+###monobinldflags=-Wl,-version-script=${srcdir)/ldscript.mono ${export_ldflags)
+###endif
+
+###if PLATFORM_WIN32
+###libmono_la_LDFLAGS=-no-undefined -avoid-version -Wl,--kill-at ${monoldflags)
+###else
+###libmono_la_LDFLAGS=${monoldflags)
+###endif
+
+###if JIT_SUPPORTED
+
+###if PLATFORM_WIN32
+###bin_PROGRAMS = mono monow
+###else
+###bin_PROGRAMS = mono
+###endif
+
+###noinst_PROGRAMS = genmdesc
+
+###lib_LTLIBRARIES = libmono.la
+###noinst_LTLIBRARIES = libmono-static.la
+###endif
+
+###if DTRACE_G_REQUIRED
+###LIBMONO_DTRACE_OBJECT = .libs/mono-dtrace.${OBJEXT)
+###if STATIC_MONO
+###MONO_DTRACE_OBJECT = mono-dtrace.${OBJEXT)
+###else
+###MONO_DTRACE_OBJECT = 
+###endif
+###else
+###MONO_DTRACE_OBJECT = 
+###LIBMONO_DTRACE_OBJECT = 
+###endif
+
+###if STATIC_MONO
+#### Link libmono into mono statically
+#### This leads to higher performance, especially with TLS
+###MONO_LIB=libmono-static.la
+###else 
+###MONO_LIB=libmono.la
+###endif
+
+###mono_LDADD = \
+###    ${MONO_LIB)                     \
+###    ${GLIB_LIBS)            \
+###    ${LLVM_LIBS)            \
+###    -lm     \
+###    ${MONO_DTRACE_OBJECT)
+
+###mono_LDFLAGS = \
+###    ${static_flags} -export-dynamic ${monobinldflags)
+
+###if DTRACE_G_REQUIRED
+
+###mono-dtrace.${OBJEXT): ${top_srcdir)/data/mono.d mini.lo ${monodir)/mono/metadata/libmonoruntime-static.la
+###    DTRACE="${DTRACE)" DTRACEFLAGS="${DTRACEFLAGS)" AR="${AR)" ${SHELL} ${top_srcdir)/data/dtrace-prelink.sh \
+###    $@ ${top_srcdir)/data/mono.d ${monodir)/mono/metadata/libmonoruntime-static.la mini.lo
+
+###.libs/mono-dtrace.${OBJEXT): ${top_srcdir)/data/mono.d mini.lo ${monodir)/mono/metadata/libmonoruntime.la
+###    DTRACE="${DTRACE)" DTRACEFLAGS="${DTRACEFLAGS)" AR="${AR)" ${SHELL} ${top_srcdir)/data/dtrace-prelink.sh \
+###    --pic $@ ${top_srcdir)/data/mono.d ${monodir)/mono/metadata/libmonoruntime.la mini.lo
+
+###endif
+
+#### Create monow.exe, linked for the 'windows' subsystem
+###if PLATFORM_WIN32
+###monow_LDADD = ${mono_LDADD)
+###monow_LDFLAGS = ${mono_LDFLAGS} -mwindows
+###monow_SOURCES = ${mono_SOURCES)
+###endif
+
+#### Don't link this against libmonoruntime to speed up rebuilds
+###genmdesc_LDADD = \
+###    ${monodir)/mono/utils/libmonoutils.la ${monodir)/mono/metadata/opcodes.lo -lm   \
+###    ${GLIB_LIBS)
+
+###if ENABLE_LLVM
+#### Disabled for now to fix the windows build
+####llvm_sources = \
+####   mini-llvm.c             \
+####   mini-llvm-cpp.cpp
+###endif
+
+###libmono_static_la_LIBADD = ${static_libs} ${MONO_DTRACE_OBJECT)
+
+###libmonoincludedir = ${includedir)/mono-${API_VER)/mono/jit
+
+###libmonoinclude_HEADERS = jit.h
+
+###libmono_la_LIBADD = \
+###    ${libs} ${LIBMONO_DTRACE_OBJECT)
+
+###clean-local:
+###    rm -f mono a.out gmon.out *.o buildver.h test.exe
+
+###pkgconfigdir = ${libdir)/pkgconfig
+
+###if JIT_SUPPORTED
+###BUILT_SOURCES = version.h ${arch_built)
+###else
+###BUILT_SOURCES = version.h
+###endif
+
+###CLEANFILES= ${BUILT_SOURCES} *.exe *.dll
+###EXTRA_DIST = TestDriver.cs ldscript ldscript.mono \
+###    genmdesc.pl     \
+###    ${test_sources} \
+###    ${x86_sources} cpu-x86.md \
+###    ${amd64_sources} cpu-amd64.md \
+###    ${ppc_sources} cpu-ppc.md cpu-ppc64.md \
+###    ${arm_sources} cpu-arm.md \
+###    ${mips_sources} cpu-mips.md \
+###    ${sparc_sources} cpu-sparc.md \
+###    ${s390_sources} cpu-s390.md \
+###    ${s390x_sources} cpu-s390x.md \
+###    ${ia64_sources} cpu-ia64.md \
+###    ${alpha_sources} cpu-alpha.md \
+###    ${hppa_sources} cpu-hppa.md     \
+###    ${windows_sources)              \
+###    ${darwin_sources)               \
+###    ${posix_sources)
diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt
new file mode 100644 (file)
index 0000000..b332310
--- /dev/null
@@ -0,0 +1,162 @@
+
+# Source code which helps implement the ANSI C standards, and thus *should* be
+# portable to any platform having a C compiler.
+set(MPH_C_SOURCE
+       errno.c
+       map.c
+       map.h
+       mph.h
+       signal.c
+       stdio.c
+       string.c
+       stdlib.c)
+
+# Source code which helps implement POSIX and other related Unix standards,
+# and *may* be portable between Unix platforms.
+set(MPH_UNIX_SOURCE
+       dirent.c
+       fcntl.c
+       fstab.c
+       grp.c
+       macros.c
+       old-map.c
+       old-map.h
+       pwd.c
+       serial.c
+       sys-mman.c
+       sys-sendfile.c
+       sys-stat.c
+       sys-statvfs.c
+       sys-time.c
+       sys-utsname.c
+       sys-wait.c
+       sys-xattr.c
+       syslog.c
+       time.c
+       unistd.c
+       utime.c
+       x-struct-str.c)
+
+if(PLATFORM_WIN32)
+set(MPH_SOURCE ${MPH_C_SOURCE})
+set(MPH_LIBS)
+else()
+set(MPH_SOURCE ${MPH_C_SOURCE} ${MPH_UNIX_SOURCE})
+set(MPH_LIBS ${GLIB_LIBS})
+endif()
+
+set(MINIZIP_SOURCE 
+       minizip/crypt.h
+       minizip/ioapi.c
+       minizip/ioapi.h
+       minizip/unzip.c
+       minizip/unzip.h
+       minizip/zip.c
+       minizip/zip.h)
+
+set(ZLIB_SOURCES 
+       adler32.c
+       compress.c
+       crc32.c 
+       gzio.c  
+       uncompr.c
+       deflate.c
+       trees.c 
+       zutil.c 
+       inflate.c
+       infback.c
+       inftrees.c
+       inffast.c
+       crc32.h 
+       deflate.h  
+       inffast.h  
+       inffixed.h  
+       inflate.h  
+       inftrees.h  
+       trees.h  
+       zconf.h  
+       zlib.h  
+       zutil.h)
+
+if(HAVE_ZLIB)
+set(Z_SOURCE  zlib_macros.c)
+set(Z_LIBS  -lz)
+else()
+set(Z_SOURCE  zlib_macros.c ${ZLIB_SOURCES})
+set(Z_LIBS)
+endif()
+
+set(libMonoPosixHelper_la_SOURCES
+       ${MPH_SOURCE}
+       ${Z_SOURCE}
+       ${MINIZIP_SOURCE})
+
+set(libMonoPosixHelper_la_LIBADD
+       ${MPH_LIBS}
+       ${Z_LIBS}
+       ${XATTR_LIB})
+
+# set(libMonoPosixHelper_la_LDFLAGS  -no-undefined -version-info 1:0:1
+###set(libMonoPosixHelper_la_LDFLAGS  -no-undefined -avoid-version)
+###set(libMonoSupportW_la_LDFLAGS  -no-undefined -avoid-version)
+
+set(libMonoSupportW_la_SOURCES
+               supportw.c
+               support-heap.c
+               supportw.h)
+
+set(libMonoSupportW_la_LIBADD
+               ${GLIB_LIBS})
+
+include_directories(${top_srcdir})
+include_directories(${GLIB2_INCLUDE_DIRS})
+set(CMAKE_C_FLAGS "${CFLAGS} ${CPPFLAGS}")
+link_directories(../mini)
+
+add_library(MonoPosixHelper SHARED ${libMonoPosixHelper_la_SOURCES})
+target_link_libraries(MonoPosixHelper ${libMonoPosixHelper_la_LIBADD})
+
+if(PLATFORM_WIN32)
+else()
+###set(lib_LTLIBRARIES
+###    libMonoPosixHelper.la
+###    ${SUPPORT})
+endif()
+
+# 
+# Use this target to refresh the values in map.[ch]
+#
+add_custom_target(refresh
+  COMMAND cp `pkg-config --variable=Programs create-native-map` .
+  COMMAND ${top_builddir}/runtime/mono-wrapper create-native-map.exe 
+       --autoconf-member=d_off                               
+       --autoconf-member=d_reclen                            
+       --autoconf-member=d_type                              
+       --exclude-native-symbol=Mono_Posix_Stdlib_snprintf    
+       --impl-macro=_GNU_SOURCE --impl-macro=_XOPEN_SOURCE   
+       --impl-header="<sys/types.h>"                         
+       --impl-header="<sys/stat.h>"                          
+       --autoconf-header="<sys/time.h>"                      
+       --autoconf-header="<sys/poll.h>"                      
+       --autoconf-header="<sys/wait.h>"                      
+       --autoconf-header="<sys/statvfs.h>"                   
+       --autoconf-header="<sys/xattr.h>"                     
+       --autoconf-header="<sys/mman.h>"                      
+       --autoconf-header="<unistd.h>"                        
+       --impl-header="<fcntl.h>"                             
+       --impl-header="<signal.h>"                            
+       --autoconf-header="<poll.h>"                          
+       --autoconf-header="<grp.h>"                           
+       --impl-header="<errno.h>"                             
+       --autoconf-header="<syslog.h>"                        
+       --autoconf-header="<dirent.h>"                        
+       --autoconf-header="<utime.h>"                         
+       --impl-header="<time.h>"                              
+       --impl-header=""mph.h""                             
+       --rename-member=st_atime=st_atime_                    
+       --rename-member=st_ctime=st_ctime_                    
+       --rename-member=st_mtime=st_mtime_                    
+       --rename-namespace=Mono.Unix.Native=Mono.Posix        
+       --library=MonoPosixHelper                             
+       ${mcs_topdir}/class/lib/net_2_0/Mono.Posix.dll map
+)
\ No newline at end of file