From: Jérémie Laval Date: Fri, 30 May 2014 18:50:35 +0000 (-0400) Subject: Merge pull request #1068 from esdrubal/bug18421 X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=610d1e7aaff5bb0d98875ecaba32581e360b805c;hp=7c52a7bf5fe10f70b547b37f757a9ad022d29d1f;p=mono.git Merge pull request #1068 from esdrubal/bug18421 Changed ConcurrentQueue to remove last ref/value. Fixes 18421 --- diff --git a/.gitattributes b/.gitattributes index c7e0c474a2d..5c4cb01ff15 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,5 @@ # ensure LF endings on all checkouts -configure.in crlf=input +configure.ac crlf=input # ensure native line endings on checkout *.c crlf diff --git a/Makefile.am b/Makefile.am index 30f8cdef0f4..aa4bd78da9f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -160,9 +160,9 @@ package-inputs: done echo "" >> msvc/scripts/order.xml -# Update llvm version in configure.in to the output of $LLVM_DIR/bin/llvm-config --version +# Update llvm version in configure.ac to the output of $LLVM_DIR/bin/llvm-config --version update-llvm-version: if test "x$$LLVM_DIR" = "x"; then echo "Set the make variable LLVM_DIR to the directory containing the LLVM installation."; exit 1; fi - REV=`$(LLVM_DIR)/bin/llvm-config --version` && sed -e "s,expected_llvm_version=.*,expected_llvm_version=\"$$REV\"," < configure.in > tmp && mv tmp configure.in && echo "Version set to $$REV." + REV=`$(LLVM_DIR)/bin/llvm-config --version` && sed -e "s,expected_llvm_version=.*,expected_llvm_version=\"$$REV\"," < configure.ac > tmp && mv tmp configure.ac && echo "Version set to $$REV." diff --git a/autogen.sh b/autogen.sh index a576ed6672a..5213ecffd3c 100755 --- a/autogen.sh +++ b/autogen.sh @@ -37,7 +37,7 @@ if [ -z "$LIBTOOL" ]; then fi fi -(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { +(grep "^AM_PROG_LIBTOOL" $srcdir/configure.ac >/dev/null) && { ($LIBTOOL --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`libtool' installed to compile Mono." @@ -47,8 +47,8 @@ fi } } -grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && { - grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ +grep "^AM_GNU_GETTEXT" $srcdir/configure.ac >/dev/null && { + grep "sed.*POTFILES" $srcdir/configure.ac >/dev/null || \ (gettext --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`gettext' installed to compile Mono." @@ -95,7 +95,7 @@ xlc ) esac -if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then +if grep "^AM_PROG_LIBTOOL" configure.ac >/dev/null; then if test -z "$NO_LIBTOOLIZE" ; then echo "Running libtoolize..." ${LIBTOOL}ize --force --copy @@ -138,7 +138,7 @@ aclocal -Wnone -I m4 -I . $ACLOCAL_FLAGS || { exit 1 } -if grep "^AC_CONFIG_HEADERS" configure.in >/dev/null; then +if grep "^AC_CONFIG_HEADERS" configure.ac >/dev/null; then echo "Running autoheader..." autoheader || { echo "**Error**: autoheader failed."; exit 1; } fi diff --git a/build-mingw32.sh b/build-mingw32.sh index 8bcb5ff973c..4c8ed8c1dc4 100755 --- a/build-mingw32.sh +++ b/build-mingw32.sh @@ -57,7 +57,7 @@ function setup () CROSS_DLL_DIR="$CROSS_DIR/bin" PATH=$CROSS_BIN_DIR:$PATH - MONO_VERSION=`grep AC_INIT configure.in | cut -d ',' -f 2|tr -d '\[ \]'` + MONO_VERSION=`grep AC_INIT configure.ac | cut -d ',' -f 2|tr -d '\[ \]'` if [ -d ./.git ]; then MONO_GIT_COMMIT="`git log -1 --format=format:%t`" diff --git a/configure.ac b/configure.ac new file mode 100644 index 00000000000..1dbacb744f3 --- /dev/null +++ b/configure.ac @@ -0,0 +1,3791 @@ +# Process this file with autoconf to produce a configure script. +#AC_PREREQ([2.62]) + +AC_INIT(mono, [3.6.1], + [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono]) + +AC_CONFIG_SRCDIR([README.md]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CANONICAL_SYSTEM +AC_CANONICAL_HOST + +# Gross hack to enable 'make dist' on automake 1.9+tar 1.14. +# The extra brackets are to foil regex-based scans. +m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])]) + +AM_INIT_AUTOMAKE([1.9 dist-bzip2 tar-ustar no-dist-gzip foreign subdir-objects]) +AC_CONFIG_HEADERS([config.h]) +AM_MAINTAINER_MODE + +API_VER=2.0 +AC_SUBST(API_VER) + +AC_PROG_LN_S + +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + +case $host_os in +*cygwin* ) + echo "Run configure using ./configure --host=i686-pc-mingw32" + exit 1 +esac + +# 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* ) LN_S='cp -p';; +esac + +dnl +dnl libgc checks +dnl + +gc_headers=no +gc=included +gc_msg="included Boehm" +use_included_gc=no +libgc_configure_args= + +if test -d $srcdir/libgc ; then + gc_default=included +else + gc_default=boehm +fi + +# These variables are the CPPFLAGS/CFLAGS passed to libgc's configure +# libgc should inherit the original CFLAGS/CPPFLAGS passed to configure, i.e. -O0 +CPPFLAGS_FOR_LIBGC=$CPPFLAGS +CFLAGS_FOR_LIBGC=$CFLAGS +CPPFLAGS_FOR_EGLIB=$CPPFLAGS +CFLAGS_FOR_EGLIB=$CFLAGS + +# +# These are the flags that need to be stored in the mono.pc file for +# compiling code that will embed Mono +# +libmono_cflags="" +libmono_ldflags="" +AC_SUBST(libmono_cflags) +AC_SUBST(libmono_ldflags) + +# Variable to have relocatable .pc files (lib, or lib64) +reloc_libdir=`basename ${libdir}` +AC_SUBST(reloc_libdir) + +dnl if linker handles the version script +no_version_script=no + +# Set to yes if Unix sockets cannot be created in an anonymous namespace +need_link_unlink=no + +#Set to extra linker flags to be passed to the runtime binaries (mono /mono-sgen) +extra_runtime_ldflags="" + +# Thread configuration inspired by sleepycat's db +AC_MSG_CHECKING([host platform characteristics]) +libgc_threads=no +has_dtrace=no +parallel_mark=yes +ikvm_native=yes + +case "$host" in + powerpc*-*-linux*) + # https://bugzilla.novell.com/show_bug.cgi?id=504411 + disable_munmap=yes + ;; +esac + +host_win32=no +target_win32=no +platform_android=no +platform_darwin=no +case "$host" in + *-mingw*|*-*-cygwin*) + AC_DEFINE(HOST_WIN32,1,[Host Platform is Win32]) + AC_DEFINE(DISABLE_PORTABILITY,1,[Disable the io-portability layer]) + AC_DEFINE(PLATFORM_NO_SYMLINKS,1,[This platform does not support symlinks]) + host_win32=yes + mono_cv_clang=no + if test "x$cross_compiling" = "xno"; then + target_win32=yes + if test "x$host" == "x$build" -a "x$host" == "x$target"; then + AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32]) + fi + else + target_win32=yes + AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32/MinGW]) + AC_DEFINE(MINGW_CROSS_COMPILE,1,[Cross-compiling using MinGW]) + fi + HOST_CC="gcc" + # Windows 2000 is required that includes Internet Explorer 5.01 + CPPFLAGS="$CPPFLAGS -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0501 -D_UNICODE -DUNICODE -DWIN32_THREADS -DFD_SETSIZE=1024" + LDFLAGS="$LDFLAGS -lmswsock -lws2_32 -lole32 -loleaut32 -lpsapi -lversion -ladvapi32 -lwinmm -lkernel32" + libmono_cflags="-mms-bitfields -mwindows" + libmono_ldflags="-mms-bitfields -mwindows" + libdl= + libgc_threads=win32 + gc_default=included + with_sigaltstack=no + LN_S=cp + # This forces libgc to use the DllMain based thread registration code on win32 + libgc_configure_args="$libgc_configure_args --enable-win32-dllmain=yes" + ;; + *-*-*netbsd*) + host_win32=no + CPPFLAGS="$CPPFLAGS -D_REENTRANT -DGC_NETBSD_THREADS -D_GNU_SOURCE" + libmono_cflags="-D_REENTRANT" + LDFLAGS="$LDFLAGS -pthread" + CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD" + libmono_ldflags="-pthread" + need_link_unlink=yes + libdl="-ldl" + libgc_threads=pthreads + with_sigaltstack=no + use_sigposix=yes + ;; + *-*-*freebsd*) + host_win32=no + if test "x$PTHREAD_CFLAGS" = "x"; then + CPPFLAGS="$CPPFLAGS -DGC_FREEBSD_THREADS" + libmono_cflags= + else + CPPFLAGS="$CPPFLAGS $PTHREAD_CFLAGS -DGC_FREEBSD_THREADS" + libmono_cflags="$PTHREAD_CFLAGS" + fi + if test "x$PTHREAD_LIBS" = "x"; then + LDFLAGS="$LDFLAGS -pthread -L/usr/local/lib" + libmono_ldflags="-pthread" + else + LDFLAGS="$LDFLAGS $PTHREAD_LIBS -L/usr/local/lib" + libmono_ldflags="$PTHREAD_LIBS" + fi + CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD" + need_link_unlink=yes + AC_DEFINE(PTHREAD_POINTER_ID, 1, [pthread is a pointer]) + libdl= + libgc_threads=pthreads + use_sigposix=yes + has_dtrace=yes + ;; + *-*-*openbsd*) + host_win32=no + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_OPENBSD_THREADS -DPLATFORM_BSD -D_REENTRANT -DUSE_MMAP" + if test "x$disable_munmap" != "xyes"; then + CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP" + fi + libmono_cflags="-D_THREAD_SAFE -D_REENTRANT" + LDFLAGS="$LDFLAGS -pthread" + need_link_unlink=yes + AC_DEFINE(PTHREAD_POINTER_ID) + libdl= + gc_default=boehm + libgc_threads=pthreads + with_sigaltstack=no + use_sigposix=yes + ;; + *-*-linux-android*) + host_win32=no + platform_android=yes + AC_DEFINE(PLATFORM_ANDROID,1,[Targeting the Android platform]) + AC_DEFINE(TARGET_ANDROID,1,[Targeting the Android platform]) + + CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP" + if test "x$disable_munmap" != "xyes"; then + CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP" + fi + libmono_cflags="-D_REENTRANT" + libdl="-ldl" + libgc_threads=pthreads + use_sigposix=yes + + with_tls=pthread + with_sigaltstack=no + with_static_mono=no + + # Android doesn't support boehm, as it's missing + support_boehm=no + with_gc=sgen + + # isinf(3) requires -lm; see isinf check below + LDFLAGS="$LDFLAGS -lm" + + # Bionic's sets PTHREAD_STACK_MIN=2*PAGE_SIZE; doesn't define + # PAGE_SIZE; breaks mono/io-layer/collection.c + # Bionic doesn't provide S_IWRITE; breaks io-layer/io.c + CFLAGS="$CFLAGS -DPAGE_SIZE=4096 -DS_IWRITE=S_IWUSR" + CXXFLAGS="$CXXFLAGS -DPAGE_SIZE=4096 -DS_IWRITE=S_IWUSR" + + # The configure check can't detect this + AC_DEFINE(HAVE_LARGE_FILE_SUPPORT, 1, [Have large file support]) + + # to bypass the underscore linker check, can't work when cross-compiling + mono_cv_uscore=yes + mono_cv_clang=no + ;; + *-*-linux*) + host_win32=no + CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP" + if test "x$disable_munmap" != "xyes"; then + CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP" + fi + libmono_cflags="-D_REENTRANT" + libdl="-ldl" + libgc_threads=pthreads + use_sigposix=yes + if test "x$cross_compiling" != "xno"; then + # to bypass the underscore linker check, not + # available during cross-compilation + mono_cv_uscore=no + fi + case "$host" in + aarch64-*) + support_boehm=no + with_gc=sgen + ;; + esac + ;; + *-*-nacl*) + host_win32=no + CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP" + if test "x$disable_munmap" != "xyes"; then + CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP" + fi + libmono_cflags="-D_REENTRANT" + libdl= + libgc_threads=pthreads + gc_default=boehm + use_sigposix=yes + ikvm_native=no + AC_DEFINE(DISABLE_SOCKETS,1,[Disable sockets support]) + AC_DEFINE(DISABLE_ATTACH, 1, [Disable agent attach support]) + ;; + *-*-hpux*) + host_win32=no + CPPFLAGS="$CPPFLAGS -DGC_HPUX_THREADS -D_HPUX_SOURCE -D_XOPEN_SOURCE_EXTENDED -D_REENTRANT" + # +ESdbgasm only valid on bundled cc on RISC + # silently ignored for ia64 + if test $GCC != "yes"; then + CFLAGS="$CFLAGS +ESdbgasm" + # Arrange for run-time dereferencing of null + # pointers to produce a SIGSEGV signal. + LDFLAGS="$LDFLAGS -z" + fi + CFLAGS="$CFLAGS +ESdbgasm" + LDFLAGS="$LDFLAGS -z" + libmono_cflags="-D_REENTRANT" + libmono_ldflags="-lpthread" + libgc_threads=pthreads + need_link_unlink=yes + use_sigposix=yes + ;; + *-*-solaris*) + host_win32=no + CPPFLAGS="$CPPFLAGS -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_MMAP -DUSE_MUNMAP -DPLATFORM_SOLARIS" + need_link_unlink=yes + libmono_cflags="-D_REENTRANT" + libgc_threads=pthreads + # This doesn't seem to work on solaris/x86, but the configure test runs + with_tls=pthread + has_dtrace=yes + use_sigposix=yes + enable_solaris_tar_check=yes + ;; + *-*-darwin*) + parallel_mark="Disabled_Currently_Hangs_On_MacOSX" + host_win32=no + platform_darwin=yes + target_mach=yes + CPPFLAGS="$CPPFLAGS -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP" + CPPFLAGS="$CPPFLAGS -DGetCurrentProcess=MonoGetCurrentProcess -DGetCurrentThread=MonoGetCurrentThread -DCreateEvent=MonoCreateEvent" + libmono_cflags="-D_THREAD_SAFE" + need_link_unlink=yes + AC_DEFINE(PTHREAD_POINTER_ID) + AC_DEFINE(USE_MACH_SEMA, 1, [...]) + no_version_script=yes + libdl= + libgc_threads=pthreads + has_dtrace=yes + if test "x$cross_compiling" = "xyes"; then + has_broken_apple_cpp=yes + fi + dnl Snow Leopard is horribly broken -- it reports itself as i386-apple-darwin*, but + dnl its gcc defaults to 64-bit mode. They have also deprecated the usage of ucontext + dnl we need to set some flags to build our 32-bit binaries on 10.6 properly + case "$host" in + dnl Snow Leopard and newer config.guess reports as this + i*86-*-darwin*) + BROKEN_DARWIN_FLAGS="-arch i386 -D_XOPEN_SOURCE" + BROKEN_DARWIN_CPPFLAGS="-D_XOPEN_SOURCE" + CPPFLAGS="$CPPFLAGS $BROKEN_DARWIN_CPPFLAGS" + CFLAGS="$CFLAGS $BROKEN_DARWIN_FLAGS" + CXXFLAGS="$CXXFLAGS $BROKEN_DARWIN_FLAGS" + CCASFLAGS="$CCASFLAGS $BROKEN_DARWIN_FLAGS" + CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC $BROKEN_DARWIN_CPPFLAGS" + CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC $BROKEN_DARWIN_FLAGS" + CPPFLAGS_FOR_EGLIB="$CPPFLAGS_FOR_EGLIB $BROKEN_DARWIN_CPPFLAGS" + CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB $BROKEN_DARWIN_FLAGS" + ;; + x*64-*-darwin*) + ;; + arm*-darwin*) + has_dtrace=no + ;; + esac + ;; + *-*-haiku*) + host_win32=no + CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_THREAD_SAFE" + libmono_cflags="-D_REENTRANT -D_THREAD_SAFE" + libdl= + LIBS="$LIBS -lnetwork" + need_link_unlink=yes + AC_DEFINE(PTHREAD_POINTER_ID) + libgc_threads=pthreads + use_sigposix=yes + ;; + *) + AC_MSG_WARN([*** Please add $host to configure.ac checks!]) + host_win32=no + 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 + +AC_SUBST(extra_runtime_ldflags) +AM_CONDITIONAL(HOST_WIN32, test x$host_win32 = xyes) +AM_CONDITIONAL(TARGET_WIN32, test x$target_win32 = xyes) +AM_CONDITIONAL(PLATFORM_LINUX, echo x$target_os | grep -q linux) +AM_CONDITIONAL(PLATFORM_DARWIN, test x$platform_darwin = xyes) +AM_CONDITIONAL(PLATFORM_SIGPOSIX, test x$use_sigposix = xyes) +AM_CONDITIONAL(PLATFORM_ANDROID, test x$platform_android = xyes) + +AC_CHECK_TOOL(CC, gcc, gcc) +AC_PROG_CC +AC_CHECK_TOOL(CXX, g++, g++) +AC_PROG_CXX +AM_PROG_AS +AC_PROG_INSTALL +AC_PROG_AWK +AM_PROG_CC_C_O +dnl We should use AM_PROG_AS, but it's not available on automake/aclocal 1.4 +: ${CCAS='$(CC)'} +# Set ASFLAGS if not already set. +: ${CCASFLAGS='$(CFLAGS)'} +AC_SUBST(CCAS) +AC_SUBST(CCASFLAGS) + +# AC_PROG_CXX helpfully sets CXX to g++ even if no c++ compiler is found so check +# GXX instead. See http://lists.gnu.org/archive/html/bug-autoconf/2002-04/msg00056.html +if test "x$CXX" = "xg++"; then + if test "x$GXX" != "xyes"; then + # automake/libtool is so broken, it requires g++ even if the c++ sources + # are inside automake conditionals + AC_MSG_ERROR([You need to install g++]) + fi +fi + +dnl may require a specific autoconf version +dnl AC_PROG_CC_FOR_BUILD +dnl CC_FOR_BUILD not automatically detected +CC_FOR_BUILD=$CC +CFLAGS_FOR_BUILD=$CFLAGS +BUILD_EXEEXT= +if test "x$cross_compiling" = "xyes"; then + CC_FOR_BUILD=cc + CFLAGS_FOR_BUILD= + 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$host_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 +AM_PROG_LIBTOOL +# Use dolt (http://dolt.freedesktop.org/) instead of libtool for building. +DOLT + +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 + no_version_script=yes +fi + +AM_ICONV() + +AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes) + +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 sys/uio.h sys/param.h libproc.h) +AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h sys/inotify.h) +AC_CHECK_HEADERS([linux/netlink.h linux/rtnetlink.h], + [], [], [#include + #include + #include ]) + +AC_CHECK_HEADERS(sys/user.h, [], [], +[ +#ifdef HAVE_SYS_PARAM_H +# include +#endif +]) + +AC_CHECK_HEADER(zlib.h, [have_zlib=yes], [have_zlib=no]) +if test x$have_zlib = xyes; then + AC_TRY_COMPILE([#include ], [ + #if defined(ZLIB_VERNUM) && (ZLIB_VERNUM >= 0x1230) + return 0; + #else + #error No good zlib found + #endif + ],[ + AC_MSG_RESULT(Using system zlib) + zlib_msg="system zlib" + AC_DEFINE(HAVE_SYS_ZLIB,1,[Have system zlib]) + ],[ + AC_MSG_RESULT(Using embedded zlib) + have_zlib=no + zlib_msg="bundled zlib" + ]) +fi + +AM_CONDITIONAL(HAVE_ZLIB, test x$have_zlib = xyes) +AC_DEFINE(HAVE_ZLIB,1,[Have system zlib]) + +# for mono/metadata/debug-symfile.c +AC_CHECK_HEADERS(elf.h) + +# 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) +AC_MSG_CHECKING(for isinf) +AC_TRY_LINK([#include ], [ + int f = isinf (1); +], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_ISINF, 1, [isinf available]) +], [ + # We'll have to use signals + AC_MSG_RESULT(no) +]) +# mingw +AC_CHECK_FUNCS(_finite, , AC_MSG_CHECKING(for _finite in math.h) + AC_TRY_LINK([#include ], + [ _finite(0.0); ], + AC_DEFINE(HAVE__FINITE, 1, [Have _finite in -lm]) AC_MSG_RESULT(yes), + AC_MSG_RESULT(no))) + +# for Linux statfs support +AC_CHECK_HEADERS(linux/magic.h) + +# not 64 bit clean in cross-compile +AC_CHECK_SIZEOF(void *, 4) + +AC_CACHE_CHECK([for clang], + mono_cv_clang,[ + AC_TRY_COMPILE([], [ + #ifdef __clang__ + #else + #error "FAILED" + #endif + return 0; + ], + [mono_cv_clang=yes], + [mono_cv_clang=no], + []) +]) + +WARN='' +if test x"$GCC" = xyes; then + WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value' + # The runtime code does not respect ANSI C strict aliasing rules + CFLAGS="$CFLAGS -fno-strict-aliasing" + + # We rely on signed overflow to behave + CFLAGS="$CFLAGS -fwrapv" + + ORIG_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -Wdeclaration-after-statement" + AC_MSG_CHECKING(for -Wdeclaration-after-statement option to gcc) + AC_TRY_COMPILE([],[ + return 0; + ], [ + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + CFLAGS=$ORIG_CFLAGS + ]) + + ORIG_CFLAGS=$CFLAGS + # Check for the normal version, since gcc ignores unknown -Wno options + CFLAGS="$CFLAGS -Wunused-but-set-variable -Werror" + AC_MSG_CHECKING(for -Wno-unused-but-set-variable option to gcc) + AC_TRY_COMPILE([],[ + return 0; + ], [ + AC_MSG_RESULT(yes) + CFLAGS="$ORIG_CFLAGS -Wno-unused-but-set-variable" + ], [ + AC_MSG_RESULT(no) + CFLAGS=$ORIG_CFLAGS + ]) + + if test "x$mono_cv_clang" = "xyes"; then + # https://bugzilla.samba.org/show_bug.cgi?id=8118 + WARN="$WARN -Qunused-arguments" + WARN="$WARN -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign" + fi +else + # The Sun Forte compiler complains about inline functions that access static variables + # so disable all inlining. + case "$host" in + *-*-solaris*) + CFLAGS="$CFLAGS -Dinline=" + ;; + esac +fi +CFLAGS="$CFLAGS -g $WARN" +CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -g" + +# Where's the 'mcs' source tree? +if test -d $srcdir/mcs; then + mcsdir=mcs +else + mcsdir=../mcs +fi + +AC_ARG_WITH(mcs-path, [ --with-mcs-path=/path/to/mcs Specify an alternate mcs source tree], + if test x$with_mcs_path != "x" -a -d $with_mcs_path ; then + mcsdir=$with_mcs_path + fi +) + +AC_ARG_WITH(jumptables, [ --with-jumptables=yes,no enable/disable support for jumptables (ARM-only for now) (defaults to no)],[],[with_jumptables=no]) + +# +# A sanity check to catch cases where the package was unpacked +# with an ancient tar program (Solaris) +# +AC_ARG_ENABLE(solaris-tar-check, +[ --disable-solaris-tar-check disable solaris tar check], + do_solaris_tar_check=no, do_solaris_tar_check=yes) + +if test x"$do_solaris_tar_check" = xyes -a x"$enable_solaris_tar_check" = xyes; then + AC_MSG_CHECKING(integrity of package) + if test -f $mcsdir/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapTypeMapper.cs + then + AC_MSG_RESULT(ok) + else + 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]) + fi +fi + +if test "x$with_mcs_path" != "x"; then +mcs_topdir=$(cd "$mcsdir" && pwd) +mcs_topdir_from_srcdir=$mcs_topdir +else +mcs_topdir=$(cd "$srcdir/$mcsdir" && pwd) +mcs_topdir_from_srcdir='$(top_builddir)'/$mcsdir +fi + +# Convert mcs_topdir* paths to Windows syntax. +if test x$cross_compiling$host_win32 = xnoyes; then + mcs_topdir=$(cygpath -m $mcs_topdir) + case $mcs_topdir_from_srcdir in + /cygdrive/*) + mcs_topdir_from_srcdir=$(cygpath -m $mcs_topdir_from_srcdir) + ;; + esac +fi + +AC_SUBST([mcs_topdir]) +AC_SUBST([mcs_topdir_from_srcdir]) + +# Where's the 'olive' source tree? +if test -d $srcdir/olive; then + olivedir=olive +else + olivedir=../olive +fi + +if test -d $srcdir/$olivedir; then +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-nls=no to configure.]) + fi +fi + +AC_ARG_WITH([libgdiplus], + [ --with-libgdiplus=installed|sibling| Override the libgdiplus used for System.Drawing tests (defaults to installed)], + [], [with_libgdiplus=installed]) + +case $with_libgdiplus in +no|installed) libgdiplus_loc= ;; +yes|sibling) libgdiplus_loc=`cd ../libgdiplus && pwd`/src/libgdiplus.la ;; +/*) libgdiplus_loc=$with_libgdiplus ;; +*) libgdiplus_loc=`pwd`/$with_libgdiplus ;; +esac +AC_SUBST([libgdiplus_loc]) + +AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + +pkg_config_path= +AC_ARG_WITH(crosspkgdir, [ --with-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 + pkg_config_path=$PKG_CONFIG_PATH + fi + else + pkg_config_path=$with_crosspkgdir + PKG_CONFIG_PATH=$pkg_config_path + export PKG_CONFIG_PATH + fi +) + +ac_configure_args="$ac_configure_args \"CPPFLAGS_FOR_EGLIB=$EGLIB_CPPFLAGS\" \"CFLAGS_FOR_EGLIB=$CFLAGS_FOR_EGLIB\"" +AC_CONFIG_SUBDIRS(eglib) + +GLIB_CFLAGS='-I$(top_srcdir)/eglib/src -I$(top_builddir)/eglib/src' +GLIB_LIBS='-L$(top_builddir)/eglib/src -leglib -lm' +BUILD_GLIB_CFLAGS="$GLIB_CFLAGS" +BUILD_GLIB_LIBS="$GLIB_LIBS" +GMODULE_CFLAGS="$GLIB_CFLAGS" +GMODULE_LIBS="$GLIB_LIBS" + +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_ARG_WITH(gc, [ --with-gc=boehm,included,none Controls the Boehm GC config, default=included],[gc=$with_gc],[gc=$gc_default]) + +# Enable support for fast thread-local storage +# Some systems have broken support, so we allow to disable it. +AC_ARG_WITH(tls, [ --with-tls=__thread,pthread select Thread Local Storage implementation (defaults to __thread)],[],[with_tls=__thread]) + +# Enable support for using sigaltstack for SIGSEGV and stack overflow handling +# This does not work on some platforms (bug #55253) +AC_ARG_WITH(sigaltstack, [ --with-sigaltstack=yes,no enable/disable support for sigaltstack (defaults to yes)],[],[with_sigaltstack=yes]) + +AC_ARG_WITH(static_mono, [ --with-static_mono=yes,no link mono statically to libmono (faster) (defaults to yes)],[],[with_static_mono=yes]) +AC_ARG_WITH(shared_mono, [ --with-shared_mono=yes,no build a shared libmono library (defaults to yes)],[],[with_shared_mono=yes]) +# Same as --with-shared_mono=no +AC_ARG_ENABLE(libraries, [ --disable-libraries disable the build of libmono], enable_libraries=$enableval, enable_libraries=yes) + +if test "x$enable_static" = "xno"; then + with_static_mono=no +fi + +if test "x$enable_shared" = "xno"; then + with_shared_mono=no +fi + +if test "x$enable_libraries" = "xno"; then + with_shared_mono=no +fi + +AM_CONDITIONAL(DISABLE_LIBRARIES, test x$enable_libraries = xno) + +case $host in +*nacl* ) with_shared_mono=yes;; +esac + +if test "x$host_win32" = "xyes"; then + # Boehm GC requires the runtime to be in its own dll + with_static_mono=no +fi + +AM_CONDITIONAL(STATIC_MONO, test x$with_static_mono != xno) +AM_CONDITIONAL(SHARED_MONO, test x$with_shared_mono != xno) +AC_ARG_ENABLE(mcs-build, [ --disable-mcs-build disable the build of the mcs directory], try_mcs_build=$enableval, enable_mcs_build=yes) + +AC_ARG_WITH(xen_opt, [ --with-xen_opt=yes,no Enable Xen-specific behaviour (defaults to yes)],[],[with_xen_opt=yes]) +if test "x$with_xen_opt" = "xyes" -a "x$mono_cv_clang" = "xno"; then + AC_DEFINE(MONO_XEN_OPT, 1, [Xen-specific behaviour]) + ORIG_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -mno-tls-direct-seg-refs" + AC_MSG_CHECKING(for -mno-tls-direct-seg-refs option to gcc) + AC_TRY_COMPILE([], [ + return 0; + ], [ + AC_MSG_RESULT(yes) + # Pass it to libgc as well + CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -mno-tls-direct-seg-refs" + ], [ + AC_MSG_RESULT(no) + CFLAGS=$ORIG_CFLAGS + ]) +fi + +AC_ARG_ENABLE(small-config, [ --enable-small-config Enable tweaks to reduce requirements (and capabilities)], enable_small_config=$enableval, enable_small_config=no) + +if test x$enable_small_config = xyes; then + AC_DEFINE(MONO_SMALL_CONFIG,1,[Reduce runtime requirements (and capabilities)]) + CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DSMALL_CONFIG" +fi + +AC_ARG_ENABLE(system-aot, [ --enable-system-aot Enable the Ahead-Of-Time compilation of system assemblies during the build (on by default on some platforms)], enable_system_aot=$enableval, enable_system_aot=default) + +DISABLED_FEATURES=none + +AC_ARG_ENABLE(minimal, [ --enable-minimal=LIST drop support for LIST subsystems. + LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug, appdomains, verifier, + reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, perfcounters, normalization, assembly_remapping, shared_perfcounters, remoting, + security, sgen_remset, sgen_marksweep_par, sgen_marksweep_fixed, sgen_marksweep_fixed_par, sgen_copying.], +[ + for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do + eval "mono_feature_disable_$feature='yes'" + done + DISABLED_FEATURES=$enable_minimal + 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_COMPILER, 1, [Disable AOT Compiler]) + AC_MSG_NOTICE([Disabled AOT compiler]) +fi + +if test "x$mono_feature_disable_profiler" = "xyes"; then + AC_DEFINE(DISABLE_PROFILER, 1, [Disable default profiler support]) + AC_MSG_NOTICE([Disabled support for the profiler]) +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]) + AC_MSG_NOTICE([Disabled support for decimal]) +fi + +if test "x$mono_feature_disable_pinvoke" = "xyes"; then + AC_DEFINE(DISABLE_PINVOKE, 1, [Disable P/Invoke support]) + AC_MSG_NOTICE([Disabled support for P/Invoke]) +fi + +if test "x$mono_feature_disable_debug" = "xyes"; then + AC_DEFINE(DISABLE_DEBUG, 1, [Disable runtime debugging support]) + AC_MSG_NOTICE([Disabled support for runtime debugging]) +fi + +if test "x$mono_feature_disable_reflection_emit" = "xyes"; then + AC_DEFINE(DISABLE_REFLECTION_EMIT, 1, [Disable reflection emit support]) + mono_feature_disable_reflection_emit_save=yes + AC_MSG_NOTICE([Disabled support for Reflection.Emit]) +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]) + AC_MSG_NOTICE([Disabled support for Reflection.Emit.Save]) +fi + +if test "x$mono_feature_disable_large_code" = "xyes"; then + AC_DEFINE(DISABLE_LARGE_CODE, 1, [Disable support for huge assemblies]) + AC_MSG_NOTICE([Disabled support for large assemblies]) +fi + +if test "x$mono_feature_disable_logging" = "xyes"; then + AC_DEFINE(DISABLE_LOGGING, 1, [Disable support debug logging]) + AC_MSG_NOTICE([Disabled support for logging]) +fi + +if test "x$mono_feature_disable_com" = "xyes"; then + AC_DEFINE(DISABLE_COM, 1, [Disable COM support]) + AC_MSG_NOTICE([Disabled COM support]) +fi + +if test "x$mono_feature_disable_ssa" = "xyes"; then + AC_DEFINE(DISABLE_SSA, 1, [Disable advanced SSA JIT optimizations]) + AC_MSG_NOTICE([Disabled SSA JIT optimizations]) +fi + +if test "x$mono_feature_disable_generics" = "xyes"; then + AC_DEFINE(DISABLE_GENERICS, 1, [Disable generics support]) + AC_MSG_NOTICE([Disabled Generics Support]) +fi + +if test "x$mono_feature_disable_shadowcopy" = "xyes"; then + AC_DEFINE(DISABLE_SHADOW_COPY, 1, [Disable Shadow Copy for AppDomains]) + AC_MSG_NOTICE([Disabled Shadow copy for AppDomains]) +fi + +if test "x$mono_feature_disable_portability" = "xyes"; then + AC_DEFINE(DISABLE_PORTABILITY, 1, [Disables the IO portability layer]) + AC_MSG_NOTICE([Disabled IO Portability layer]) +fi + +if test "x$mono_feature_disable_attach" = "xyes"; then + AC_DEFINE(DISABLE_ATTACH, 1, [Disable agent attach support]) + AC_MSG_NOTICE([Disabled agent attach]) +fi + +if test "x$mono_feature_disable_full_messages" = "xyes"; then + AC_DEFINE(DISABLE_FULL_MESSAGES, 1, [Disables building in the full table of WAPI messages]) + AC_MSG_NOTICE([Disabled full messages for Win32 errors, only core message strings shipped]) +fi + +if test "x$mono_feature_disable_verifier" = "xyes"; then + AC_DEFINE(DISABLE_VERIFIER, 1, [Disables the verifier]) + AC_MSG_NOTICE([Disabled the metadata and IL verifiers]) +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.]) + AC_MSG_NOTICE([Disabled the JIT engine, only full AOT will be supported]) +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.]) + AC_MSG_NOTICE([Disabled SIMD support]) +fi + +if test "x$mono_feature_disable_soft_debug" = "xyes"; then + AC_DEFINE(DISABLE_SOFT_DEBUG, 1, [Disable Soft Debugger Agent.]) + AC_MSG_NOTICE([Disabled Soft Debugger.]) +fi + +if test "x$mono_feature_disable_perfcounters" = "xyes"; then + AC_DEFINE(DISABLE_PERFCOUNTERS, 1, [Disable Performance Counters.]) + AC_MSG_NOTICE([Disabled Performance Counters.]) +fi +if test "x$mono_feature_disable_normalization" = "xyes"; then + AC_DEFINE(DISABLE_NORMALIZATION, 1, [Disable String normalization support.]) + AC_MSG_NOTICE([Disabled String normalization support.]) +fi + +if test "x$mono_feature_disable_assembly_remapping" = "xyes"; then + AC_DEFINE(DISABLE_ASSEMBLY_REMAPPING, 1, [Disable assembly remapping.]) + AC_MSG_NOTICE([Disabled Assembly remapping.]) +fi + +if test "x$mono_feature_disable_shared_perfcounters" = "xyes"; then + AC_DEFINE(DISABLE_SHARED_PERFCOUNTERS, 1, [Disable shared perfcounters.]) + AC_MSG_NOTICE([Disabled Shared perfcounters.]) +fi + +if test "x$mono_feature_disable_appdomains" = "xyes"; then + AC_DEFINE(DISABLE_APPDOMAINS, 1, [Disable support for multiple appdomains.]) + AC_MSG_NOTICE([Disabled support for multiple appdomains.]) +fi + +if test "x$mono_feature_disable_remoting" = "xyes"; then + AC_DEFINE(DISABLE_REMOTING, 1, [Disable remoting support (This disables type proxies and make com non-functional)]) + AC_MSG_NOTICE([Disabled remoting]) +fi + +if test "x$mono_feature_disable_security" = "xyes"; then + AC_DEFINE(DISABLE_SECURITY, 1, [Disable CAS/CoreCLR security]) + AC_MSG_NOTICE([Disabled CAS/CoreCLR security manager (used e.g. for Moonlight)]) +fi + +if test "x$mono_feature_disable_sgen_remset" = "xyes"; then + AC_DEFINE(DISABLE_SGEN_REMSET, 1, [Disable wbarrier=remset support in SGEN.]) + AC_MSG_NOTICE([Disabled wbarrier=remset support in SGEN.]) +fi + +if test "x$mono_feature_disable_sgen_marksweep_par" = "xyes"; then + AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_PAR, 1, [Disable major=marksweep-par support in SGEN.]) + AC_MSG_NOTICE([Disabled major=marksweep-par support in SGEN.]) +fi + +if test "x$mono_feature_disable_sgen_marksweep_fixed" = "xyes"; then + AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_FIXED, 1, [Disable major=marksweep-fixed support in SGEN.]) + AC_MSG_NOTICE([Disabled major=marksweep-fixed support in SGEN.]) +fi + +if test "x$mono_feature_disable_sgen_marksweep_fixed_par" = "xyes"; then + AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_FIXED_PAR, 1, [Disable major=marksweep-fixed-par support in SGEN.]) + AC_MSG_NOTICE([Disabled major=marksweep-fixed-par support in SGEN.]) +fi + +if test "x$mono_feature_disable_sgen_copying" = "xyes"; then + AC_DEFINE(DISABLE_SGEN_MAJOR_COPYING, 1, [Disable major=copying support in SGEN.]) + AC_MSG_NOTICE([Disabled major=copying support in SGEN.]) +fi + +AC_ARG_ENABLE(executables, [ --disable-executables disable the build of the runtime executables], enable_executables=$enableval, enable_executables=yes) +AM_CONDITIONAL(DISABLE_EXECUTABLES, test x$enable_executables = xno) + +has_extension_module=no +AC_ARG_ENABLE(extension-module, [ --enable-extension-module=LIST enable the core-extensions from LIST], +[ + for extension in `echo "$enable_extension_module" | sed -e "s/,/ /g"`; do + if test x$extension = xdefault ; then + has_extension_module=yes; + fi + done + if test x$enable_extension_module = xyes; then + has_extension_module=yes; + fi +], []) + +AM_CONDITIONAL([HAS_EXTENSION_MODULE], [test x$has_extension_module != xno]) + +if test x$has_extension_module != xno ; then + AC_DEFINE([ENABLE_EXTENSION_MODULE], 1, [Extension module enabled]) + AC_MSG_NOTICE([Enabling mono extension module.]) +fi + +AC_ARG_ENABLE(gsharing, [ --enable-gsharing Enable gsharing], enable_gsharing=$enableval, enable_gsharing=no) +if test x$enable_gsharing = xyes; then + AC_DEFINE(ENABLE_GSHAREDVT,1,[Gsharing]) +fi + +AC_ARG_ENABLE(native-types, [ --enable-native-types Enable native types], enable_native_types=$enableval, enable_native_types=no) +if test x$enable_native_types = xyes; then + AC_DEFINE(MONO_NATIVE_TYPES,1,[native types]) +fi + +AC_MSG_CHECKING(for visibility __attribute__) +AC_COMPILE_IFELSE([ + AC_LANG_SOURCE([[ + void __attribute__ ((visibility ("hidden"))) doit (void) {} + int main () { doit (); return 0; } + ]]) +], [ + have_visibility_hidden=yes + AC_MSG_RESULT(yes) +], [ + have_visibility_hidden=no + AC_MSG_RESULT(no) +]) + +AC_MSG_CHECKING(for deprecated __attribute__) +AC_TRY_COMPILE([ + int doit (void) __attribute__ ((deprecated)); + int doit (void) { return 0; } +], [ + return 0; +], [ + have_deprecated=yes + AC_MSG_RESULT(yes) +], [ + have_deprecated=no + AC_MSG_RESULT(no) +]) + +AC_ARG_ENABLE(parallel-mark, [ --enable-parallel-mark Enables GC Parallel Marking], enable_parallel_mark=$enableval, enable_parallel_mark=$parallel_mark) +if test x$enable_parallel_mark = xyes; then + libgc_configure_args="$libgc_configure_args --enable-parallel-mark" +fi + +AC_ARG_ENABLE(boehm, [ --disable-boehm Disable the Boehm GC.], support_boehm=$enableval,support_boehm=${support_boehm:-yes}) +AM_CONDITIONAL(SUPPORT_BOEHM, test x$support_boehm = xyes) + +dnl +dnl Boehm GC configuration +dnl +LIBGC_CPPFLAGS= +LIBGC_LIBS= +LIBGC_STATIC_LIBS= +libgc_dir= +case "x$gc" in + xboehm|xbohem|xyes) + AC_CHECK_HEADERS(gc.h gc/gc.h, gc_headers=yes) + AC_CHECK_LIB(gc, GC_malloc, 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-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 + + LIBGC_LIBS="-lgc $libdl" + LIBGC_STATIC_LIBS="$LIBGC_LIBS" + libmono_ldflags="$libmono_ldflags -lgc" + BOEHM_DEFINES="-DHAVE_BOEHM_GC" + + # AC_CHECK_FUNCS does not work for some reason... + AC_CHECK_LIB(gc, GC_gcj_malloc, found_gcj_malloc="yes",,$libdl) + if test "x$found_gcj_malloc" = "xyes"; then + BOEHM_DEFINES="-DHAVE_GC_GCJ_MALLOC $BOEHM_DEFINES" + AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "System Boehm (with typed GC)", [GC description]) + gc_msg="System Boehm with typed GC" + else + AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "System Boehm (no typed GC)", [GC description]) + gc_msg="System Boehm (without typed GC)" + fi + AC_CHECK_LIB(gc, GC_enable, found_gc_enable="yes",,$libdl) + if test "x$found_gc_enable" = "xyes"; then + BOEHM_DEFINES="-DHAVE_GC_ENABLE $BOEHM_DEFINES" + fi + + # check whether we need to explicitly allow + # thread registering + AC_CHECK_LIB(gc, GC_allow_register_threads, found_allow_register_threads="yes",,$libdl) + if test "x$found_allow_register_threads" = "xyes"; then + AC_DEFINE(HAVE_GC_ALLOW_REGISTER_THREADS, 1, [GC requires thread registration]) + fi + + ;; + + xincluded) + use_included_gc=yes + libgc_dir=libgc + + LIBGC_CPPFLAGS='-I$(top_srcdir)/libgc/include' + LIBGC_LIBS='$(top_builddir)/libgc/libmonogc.la' + LIBGC_STATIC_LIBS='$(top_builddir)/libgc/libmonogc-static.la' + + BOEHM_DEFINES="-DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE" + + if test x$target_win32 = xyes; then + BOEHM_DEFINES="$BOEHM_DEFINES -DGC_NOT_DLL" + CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DGC_BUILD -DGC_NOT_DLL" + fi + + gc_msg="bundled Boehm GC with typed GC" + if test x$enable_parallel_mark = xyes; then + AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC and Parallel Mark)", [GC description]) + gc_msg="$gc_msg and parallel mark" + else + AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC)", [GC description]) + fi + ;; + + xsgen) + AC_MSG_WARN("Use --with-sgen instead, --with-gc= controls Boehm configuration") + ;; + + xnone) + AC_MSG_WARN("Compiling mono without GC.") + AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "none", [GC description]) + AC_DEFINE(HAVE_NULL_GC,1,[No GC support.]) + ;; + *) + AC_MSG_ERROR([Invalid argument to --with-gc.]) + ;; +esac + +AC_ARG_WITH(large-heap, [ --with-large-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 + CPPFLAGS="$CPPFLAGS -DLARGE_CONFIG" +fi + +AM_CONDITIONAL(INCLUDED_LIBGC, test x$use_included_gc = xyes) +AC_SUBST(LIBGC_CPPFLAGS) +AC_SUBST(LIBGC_LIBS) +AC_SUBST(LIBGC_STATIC_LIBS) +AC_SUBST(libgc_dir) +AC_SUBST(BOEHM_DEFINES) + +dnl +dnl End of libgc checks +dnl + +dnl ************************************* +dnl *** Checks for zero length arrays *** +dnl ************************************* +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_LEN_ARRAY, 0, [Length of zero length arrays]) +], [ + AC_MSG_RESULT(no) + AC_DEFINE_UNQUOTED(MONO_ZERO_LEN_ARRAY, 1, [Length of zero length arrays]) +]) + +AC_CHECK_HEADERS(nacl/nacl_dyncode.h) + +if test x$target_win32 = xno; then + + dnl hires monotonic clock support + AC_SEARCH_LIBS(clock_gettime, rt) + + dnl dynamic loader support + AC_CHECK_FUNC(dlopen, DL_LIB="", + AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", dl_support=no) + ) + if test x$dl_support = xno; then + AC_MSG_WARN([No dynamic loading support available]) + else + LIBS="$LIBS $DL_LIB" + AC_DEFINE(HAVE_DL_LOADER,1,[dlopen-based dynamic loader available]) + dnl from glib's configure.ac + AC_CACHE_CHECK([for preceeding underscore in symbols], + mono_cv_uscore,[ + AC_TRY_RUN([#include + int mono_underscore_test (void) { return 42; } + int main() { + void *f1 = (void*)0, *f2 = (void*)0, *handle; + handle = dlopen ((void*)0, 0); + if (handle) { + f1 = dlsym (handle, "mono_underscore_test"); + f2 = dlsym (handle, "_mono_underscore_test"); + } return (!f2 || f1); + }], + [mono_cv_uscore=yes], + [mono_cv_uscore=no], + []) + ]) + if test "x$mono_cv_uscore" = "xyes"; then + MONO_DL_NEED_USCORE=1 + else + MONO_DL_NEED_USCORE=0 + fi + AC_SUBST(MONO_DL_NEED_USCORE) + AC_CHECK_FUNC(dlerror) + fi + + dnl ****************************************************************** + dnl *** Checks for the IKVM JNI interface library *** + dnl ****************************************************************** + AC_ARG_WITH(ikvm-native, [ --with-ikvm-native=yes,no build the IKVM JNI interface library (defaults to yes)],[with_ikvm_native=$withval],[with_ikvm_native=$ikvm_native]) + + ikvm_native_dir= + if test x$with_ikvm_native = xyes; then + ikvm_native_dir=ikvm-native + jdk_headers_found="IKVM Native" + fi + + AC_SUBST(ikvm_native_dir) + + AC_CHECK_HEADERS(execinfo.h) + + AC_CHECK_HEADERS(sys/auxv.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(dl_iterate_phdr) + AC_CHECK_FUNCS(dladdr) + AC_CHECK_FUNCS(sysconf) + + AC_CHECK_FUNCS(sched_setaffinity) + AC_CHECK_FUNCS(sched_getcpu) + + dnl **************************************************************** + dnl *** Check for sched_setaffinity from glibc versions before *** + dnl *** 2.3.4. The older versions of the function only take 2 *** + dnl *** parameters, not 3. *** + dnl *** *** + dnl *** Because the interface change was not made in a minor *** + dnl *** version rev, the __GLIBC__ and __GLIBC_MINOR__ macros *** + dnl *** won't always indicate the interface sched_affinity has. *** + dnl **************************************************************** + AC_MSG_CHECKING(for sched_setaffinity from glibc < 2.3.4) + AC_TRY_COMPILE([#include ], [ + int mask = 1; + sched_setaffinity(0, &mask); + return 0; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY, 1, [Have GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY]) + ], [ + # We have the new, three-parameter version + AC_MSG_RESULT(no) + ]) + + + dnl ****************************************************************** + dnl *** Check for large file support *** + dnl *** (If we were using autoconf 2.50 we'd use AC_SYS_LARGEFILE) *** + dnl ****************************************************************** + + # 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 + large_offt=no + AC_DEFUN([LARGE_FILES], [ + large_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $1" + AC_TRY_COMPILE([ + #include + #include + ], [ + /* Lifted this compile time assert method from: http://www.jaggersoft.com/pubs/CVu11_3.html */ + #define COMPILE_TIME_ASSERT(pred) \ + switch(0){case 0:case pred:;} + COMPILE_TIME_ASSERT(sizeof(off_t) * CHAR_BIT == 64); + ], [ + AC_MSG_RESULT(ok) + AC_DEFINE(HAVE_LARGE_FILE_SUPPORT, 1, [Have large file support]) + large_CPPFLAGS="$large_CPPFLAGS $1" + large_offt=yes + ], [ + AC_MSG_RESULT(no) + ]) + 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 _FILE_OFFSET_BITS=64 gives 64 bit off_t) + LARGE_FILES("-D_FILE_OFFSET_BITS=64") + fi + if test $large_offt = no; then + AC_MSG_WARN([No 64 bit file size support available]) + fi + + dnl ***************************** + dnl *** Checks for libsocket *** + dnl ***************************** + AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket") + + case "$host" in + *-*-*freebsd*) + dnl ***************************** + dnl *** Checks for libinotify *** + dnl ***************************** + AC_CHECK_LIB(inotify, inotify_init, LIBS="$LIBS -linotify") + esac + + dnl ******************************* + dnl *** Checks for MSG_NOSIGNAL *** + dnl ******************************* + AC_MSG_CHECKING(for MSG_NOSIGNAL) + AC_TRY_COMPILE([#include ], [ + 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) + ]) + + dnl ***************************** + dnl *** Checks for IPPROTO_IP *** + dnl ***************************** + AC_MSG_CHECKING(for IPPROTO_IP) + AC_TRY_COMPILE([#include ], [ + int level = IPPROTO_IP; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IPPROTO_IP, 1, [Have IPPROTO_IP]) + ], [ + # We'll have to use getprotobyname + AC_MSG_RESULT(no) + ]) + + dnl ******************************* + dnl *** Checks for IPPROTO_IPV6 *** + dnl ******************************* + AC_MSG_CHECKING(for IPPROTO_IPV6) + AC_TRY_COMPILE([#include ], [ + int level = IPPROTO_IPV6; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IPPROTO_IPV6, 1, [Have IPPROTO_IPV6]) + ], [ + # We'll have to use getprotobyname + AC_MSG_RESULT(no) + ]) + + dnl ****************************** + dnl *** Checks for IPPROTO_TCP *** + dnl ****************************** + AC_MSG_CHECKING(for IPPROTO_TCP) + AC_TRY_COMPILE([#include ], [ + int level = IPPROTO_TCP; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IPPROTO_TCP, 1, [Have IPPROTO_TCP]) + ], [ + # We'll have to use getprotobyname + AC_MSG_RESULT(no) + ]) + + dnl ***************************** + dnl *** Checks for SOL_IP *** + dnl ***************************** + AC_MSG_CHECKING(for SOL_IP) + AC_TRY_COMPILE([#include ], [ + 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) + ]) + + dnl ***************************** + dnl *** Checks for SOL_IPV6 *** + dnl ***************************** + AC_MSG_CHECKING(for SOL_IPV6) + AC_TRY_COMPILE([#include ], [ + 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) + ]) + + dnl ***************************** + dnl *** Checks for SOL_TCP *** + dnl ***************************** + AC_MSG_CHECKING(for SOL_TCP) + AC_TRY_COMPILE([#include ], [ + 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) + ]) + + dnl ***************************** + dnl *** Checks for IP_PKTINFO *** + dnl ***************************** + AC_MSG_CHECKING(for IP_PKTINFO) + AC_TRY_COMPILE([#include ], [ + 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) + ]) + + dnl ***************************** + dnl *** Checks for IPV6_PKTINFO *** + dnl ***************************** + AC_MSG_CHECKING(for IPV6_PKTINFO) + AC_TRY_COMPILE([#include ], [ + 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) + ]) + + dnl ********************************** + dnl *** Checks for IP_DONTFRAG *** + dnl ********************************** + AC_MSG_CHECKING(for IP_DONTFRAG) + AC_TRY_COMPILE([#include ], [ + int level = IP_DONTFRAG; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IP_DONTFRAG, 1, [Have IP_DONTFRAG]) + ], [ + AC_MSG_RESULT(no) + ]) + + dnl ********************************** + dnl *** Checks for IP_DONTFRAGMENT *** + dnl ********************************** + AC_MSG_CHECKING(for IP_DONTFRAGMENT) + AC_TRY_COMPILE([#include ], [ + 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) + ]) + + dnl ********************************** + dnl *** Checks for IP_MTU_DISCOVER *** + dnl ********************************** + AC_MSG_CHECKING(for IP_MTU_DISCOVER) + AC_TRY_COMPILE([#include ], [ + 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) + ]) + + dnl ********************************** + dnl *** Checks for IP_PMTUDISC_DO *** + dnl ********************************** + AC_MSG_CHECKING(for IP_PMTUDISC_DO) + AC_TRY_COMPILE([#include ], [ + int level = IP_PMTUDISC_DO; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IP_PMTUDISC_DO, 1, [Have IP_PMTUDISC_DO]) + ], [ + AC_MSG_RESULT(no) + ]) + + dnl ********************************* + dnl *** Check for struct ip_mreqn *** + dnl ********************************* + AC_MSG_CHECKING(for struct ip_mreqn) + AC_TRY_COMPILE([#include ], [ + 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 ], [ + 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) + ]) + ]) + + dnl ********************************** + dnl *** Check for gethostbyname2_r *** + dnl ********************************** + AC_MSG_CHECKING(for gethostbyname2_r) + AC_TRY_LINK([#include ], [ + 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) + ]) + + dnl ***************************** + dnl *** Checks for libnsl *** + dnl ***************************** + AC_CHECK_FUNC(gethostbyaddr, , AC_CHECK_LIB(nsl, gethostbyaddr, LIBS="$LIBS -lnsl")) + + AC_CHECK_FUNCS(inet_pton inet_aton) + + dnl *********************************************** + dnl *** Checks for size of sockaddr_un.sun_path *** + dnl *********************************************** + # AC_CHECK_SIZEOF can't cope with struct members :-( + AC_MSG_CHECKING(size of sockaddr_un.sun_path) + AC_CACHE_VAL(mono_cv_sizeof_sunpath, + [AC_TRY_RUN([ + #include + #include + #include + + int main(void) { + struct sockaddr_un sock_un; + FILE *f=fopen("conftestval", "w"); + if(!f) exit(1); + fprintf(f, "%d\n", sizeof(sock_un.sun_path)); + exit(0); + } + ], mono_cv_sizeof_sunpath=`cat conftestval`, + mono_cv_sizeof_sunpath=0, + mono_cv_sizeof_sunpath=0)])dnl + AC_MSG_RESULT($mono_cv_sizeof_sunpath) + AC_DEFINE_UNQUOTED(MONO_SIZEOF_SUNPATH, $mono_cv_sizeof_sunpath, [Sizeof sock_un.sun_path]) + + dnl ***************************** + dnl *** Checks for libxnet *** + dnl ***************************** + case "${host}" in + *solaris* ) + AC_MSG_CHECKING(for Solaris XPG4 support) + if test -f /usr/lib/libxnet.so; then + CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500" + CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" + CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED=1" + LIBS="$LIBS -lxnet" + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + fi + + if test "$GCC" = "yes"; then + CFLAGS="$CFLAGS -Wno-char-subscripts" + fi + ;; + esac + + dnl ***************************** + dnl *** Checks for libpthread *** + dnl ***************************** +# 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, LIBS="$LIBS -pthread") + ;; + *-*-*openbsd*) + AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread") + ;; + *) + AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread") + ;; + esac + AC_CHECK_HEADERS(pthread.h) + AC_CHECK_HEADERS(pthread_np.h) + AC_CHECK_FUNCS(pthread_mutex_timedlock) + AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np pthread_setname_np) + AC_CHECK_FUNCS(pthread_kill) + AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE) + AC_TRY_COMPILE([ #include ], [ + pthread_mutexattr_t attr; + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + ], [ + AC_MSG_RESULT(ok) + ], [ + AC_MSG_RESULT(no) + AC_ERROR(Posix system lacks support for recursive mutexes) + ]) + AC_CHECK_FUNCS(pthread_attr_setstacksize) + AC_CHECK_FUNCS(pthread_attr_getstack pthread_attr_getstacksize) + AC_CHECK_FUNCS(pthread_get_stacksize_np pthread_get_stackaddr_np) + + dnl *********************************** + dnl *** Checks for signals + dnl *********************************** + AC_CHECK_HEADERS(signal.h) + AC_CHECK_FUNCS(sigaction) + + dnl *********************************** + dnl *** Checks for working __thread *** + dnl *********************************** + AC_MSG_CHECKING(for working __thread) + if test "x$with_tls" != "x__thread"; then + AC_MSG_RESULT(disabled) + elif test "x$cross_compiling" = "xyes"; then + AC_MSG_RESULT(cross compiling, assuming yes) + else + AC_TRY_RUN([ + #if defined(__APPLE__) && defined(__clang__) + #error "__thread does not currently work with clang on Mac OS X" + #endif + + #include + __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) + with_tls=pthread + ]) + fi + + dnl ************************************** + dnl *** Checks for working sigaltstack *** + dnl ************************************** + AC_MSG_CHECKING(for working sigaltstack) + if test "x$with_sigaltstack" != "xyes"; then + AC_MSG_RESULT(disabled) + elif test "x$cross_compiling" = "xyes"; then + AC_MSG_RESULT(cross compiling, assuming yes) + else + AC_TRY_RUN([ + #include + #include + #include + #include + #include + #include + #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); + } + + volatile char*__ptr = NULL; + static void * + loop (void *ignored) + { + *__ptr = 0; + return NULL; + } + + static void + child () + { + struct sigaction sa; + #ifdef __APPLE__ + stack_t sas; + #else + struct sigaltstack sas; + #endif + 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; + } + + /* x86 darwin deliver segfaults using SIGBUS */ + if (sigaction (SIGBUS, &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 < 300; ++i) { + waitpid (son, &status, WNOHANG); + if (WIFEXITED (status) && WEXITSTATUS (status) == 0) + return 0; + usleep (10000); + } + + kill (son, SIGKILL); + return 1; + } + + ], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_WORKING_SIGALTSTACK, 1, [Have a working sigaltstack]) + ], [ + with_sigaltstack=no + AC_MSG_RESULT(no) + ]) + fi + + dnl ******************************** + dnl *** Checks for semaphore lib *** + dnl ******************************** + # 'Real Time' functions on Solaris + # posix4 on Solaris 2.6 + # pthread (first!) on Linux + AC_SEARCH_LIBS(sem_init, pthread rt posix4) + + AC_SEARCH_LIBS(shm_open, pthread rt posix4) + AC_CHECK_FUNCS(shm_open) + + dnl ******************************** + dnl *** Checks for timezone stuff ** + dnl ******************************** + AC_CACHE_CHECK(for tm_gmtoff in struct tm, ac_cv_struct_tm_gmtoff, + AC_TRY_COMPILE([ + #include + ], [ + struct tm tm; + tm.tm_gmtoff = 1; + ], 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 + ], [ + timezone = 1; + ], 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 + + dnl ********************************* + dnl *** Checks for math functions *** + dnl ********************************* + AC_SEARCH_LIBS(sqrtf, m) + 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 ], + [ finite(0.0); ], + AC_DEFINE(HAVE_FINITE, 1, [Have finite in -lm]) 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 ], + [ isfinite(0.0); ], + AC_DEFINE(HAVE_ISFINITE, 1, [Have isfinite]) AC_MSG_RESULT(yes), + AC_MSG_RESULT(no))) + + dnl **************************************************************** + dnl *** Checks for working poll() (macosx defines it but doesn't *** + dnl *** have it in the library (duh)) *** + dnl **************************************************************** + AC_CHECK_FUNCS(poll) + + dnl ************************* + dnl *** Check for signbit *** + dnl ************************* + AC_MSG_CHECKING(for signbit) + AC_TRY_LINK([#include ], [ + int s = signbit(1.0); + ], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SIGNBIT, 1, [Have signbit]) + ], [ + AC_MSG_RESULT(no) + ]) + + dnl ********************************** + dnl *** epoll *** + dnl ********************************** + if test "x$ac_cv_header_nacl_nacl_dyncode_h" = "xno"; then + AC_CHECK_HEADERS(sys/epoll.h) + haveepoll=no + AC_CHECK_FUNCS(epoll_ctl, [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 + fi + + havekqueue=no + + AC_CHECK_HEADERS(sys/event.h) + AC_CHECK_FUNCS(kqueue, [havekqueue=yes], ) + + dnl ************************************** + dnl * Darwin has a race that prevents us from using reliably: + dnl * http://lists.apple.com/archives/darwin-dev/2011/Jun/msg00016.html + dnl * Since kqueue is mostly used for scaling large web servers, + dnl * and very few folks run Mono on large web servers on OSX, falling + dnl * back + dnl ************************************** + if test "x$havekqueue" = "xyes" -a "x$ac_cv_header_sys_event_h" = "xyes"; then + if test "x$platform_darwin" = "xno"; then + AC_DEFINE(USE_KQUEUE_FOR_THREADPOOL, 1, [Use kqueue for the threadpool]) + fi + fi + + dnl ****************************** + dnl *** Checks for SIOCGIFCONF *** + dnl ****************************** + AC_CHECK_HEADERS(sys/ioctl.h) + AC_CHECK_HEADERS(net/if.h, [], [], + [ + #ifdef HAVE_SYS_TYPES_H + # include + #endif + #ifdef HAVE_SYS_SOCKET_H + # include + #endif + ]) + AC_MSG_CHECKING(for ifreq) + AC_TRY_COMPILE([ + #include + #include + #include + ], [ + 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) + ]) + dnl ********************************** + dnl *** Checks for sin_len *** + dnl ********************************** + AC_MSG_CHECKING(for sockaddr_in.sin_len) + AC_TRY_COMPILE([ + #include + ], [ + 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) + ]) + dnl ********************************** + dnl *** Checks for sin6_len *** + dnl ********************************** + AC_MSG_CHECKING(for sockaddr_in6.sin6_len) + AC_TRY_COMPILE([ + #include + ], [ + 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) + ]) + dnl ********************************** + dnl *** Check for getifaddrs *** + dnl ********************************** + AC_MSG_CHECKING(for getifaddrs) + AC_TRY_LINK([ + #include + #include + #include + #include + ], [ + getifaddrs(NULL); + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_GETIFADDRS, 1, [Have getifaddrs]) + ], [ + AC_MSG_RESULT(no) + ]) + dnl ********************************** + dnl *** Check for if_nametoindex *** + dnl ********************************** + AC_MSG_CHECKING(for if_nametoindex) + AC_TRY_LINK([ + #include + #include + #include + #include + ], [ + if_nametoindex(NULL); + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IF_NAMETOINDEX, 1, [Have if_nametoindex]) + ], [ + AC_MSG_RESULT(no) + ]) + + dnl ********************************** + dnl *** Checks for MonoPosixHelper *** + dnl ********************************** + AC_CHECK_HEADERS(checklist.h) + AC_CHECK_HEADERS(pathconf.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, [], [], + [ + #ifdef HAVE_SYS_PARAM_H + # include + #endif + ]) + AC_CHECK_HEADERS(sys/mount.h) + AC_CHECK_FUNCS(confstr) + AC_CHECK_FUNCS(seekdir telldir) + AC_CHECK_FUNCS(getdomainname) + AC_CHECK_FUNCS(setdomainname) + AC_CHECK_FUNCS(endgrent getgrent fgetgrent setgrent) + AC_CHECK_FUNCS(setgroups) + AC_CHECK_FUNCS(endpwent getpwent fgetpwent setpwent) + AC_CHECK_FUNCS(getfsstat) + AC_CHECK_FUNCS(lutimes futimes) + 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(gethostid sethostid) + AC_CHECK_FUNCS(sethostname) + 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_FUNCS(psignal) + AC_CHECK_FUNCS(getlogin_r) + AC_CHECK_FUNCS(lockf) + AC_CHECK_FUNCS(swab) + AC_CHECK_FUNCS(setusershell endusershell) + AC_CHECK_FUNCS(futimens utimensat) + AC_CHECK_FUNCS(fstatat mknodat readlinkat) + AC_CHECK_FUNCS(readv writev preadv pwritev) + AC_CHECK_FUNCS(setpgid) + AC_CHECK_SIZEOF(size_t) + AC_CHECK_TYPES([blksize_t], [AC_DEFINE(HAVE_BLKSIZE_T)], , + [#include + #include + #include ]) + AC_CHECK_TYPES([blkcnt_t], [AC_DEFINE(HAVE_BLKCNT_T)], , + [#include + #include + #include ]) + AC_CHECK_TYPES([suseconds_t], [AC_DEFINE(HAVE_SUSECONDS_T)], , + [#include ]) + AC_CHECK_TYPES([struct flock], [AC_DEFINE(HAVE_STRUCT_FLOCK)], , + [#include + #include ]) + AC_CHECK_TYPES([struct iovec], [AC_DEFINE(HAVE_STRUCT_IOVEC)], , + [#include ]) + AC_CHECK_TYPES([struct pollfd], [AC_DEFINE(HAVE_STRUCT_POLLFD)], , + [#include ]) + AC_CHECK_TYPES([struct stat], [AC_DEFINE(HAVE_STRUCT_STAT)], , + [#include + #include + #include ]) + AC_CHECK_TYPES([struct timespec], [AC_DEFINE(HAVE_STRUCT_TIMESPEC)], , + [#include ]) + AC_CHECK_TYPES([struct timeval], [AC_DEFINE(HAVE_STRUCT_TIMEVAL)], , + [#include + #include + #include ]) + AC_CHECK_TYPES([struct timezone], [AC_DEFINE(HAVE_STRUCT_TIMEZONE)], , + [#include ]) + AC_CHECK_TYPES([struct utimbuf], [AC_DEFINE(HAVE_STRUCT_UTIMBUF)], , + [#include + #include ]) + AC_CHECK_MEMBERS( + [struct dirent.d_off, struct dirent.d_reclen, struct dirent.d_type],,, + [#include + #include ]) + AC_CHECK_MEMBERS( + [struct passwd.pw_gecos],,, + [#include + #include ]) + AC_CHECK_MEMBERS( + [struct statfs.f_flags],,, + [#include + #include ]) + AC_CHECK_MEMBERS( + [struct stat.st_atim, struct stat.st_mtim, struct stat.st_ctim],,, + [#include + #include + #include ]) + + dnl Favour xattr through glibc, but use libattr if we have to + AC_CHECK_FUNC(lsetxattr, , + AC_CHECK_LIB(attr, lsetxattr, XATTR_LIB="-lattr",) + ) + AC_SUBST(XATTR_LIB) + + dnl kinfo_proc.kp_proc works on darwin but fails on other simil-bsds + AC_CHECK_MEMBERS( + [struct kinfo_proc.kp_proc],,, + [#include + #include + #include + #include + ]) + + dnl ********************************* + dnl *** Checks for Windows compilation *** + dnl ********************************* + AC_CHECK_HEADERS(sys/time.h) + AC_CHECK_HEADERS(sys/param.h) + AC_CHECK_HEADERS(dirent.h) + + dnl ****************************************** + dnl *** Checks for OSX and iOS compilation *** + dnl ****************************************** + AC_CHECK_HEADERS(CommonCrypto/CommonDigest.h) + + dnl ********************************* + dnl *** Check for Console 2.0 I/O *** + dnl ********************************* + AC_CHECK_HEADERS([curses.h]) + AC_CHECK_HEADERS([term.h], [], [], + [#if HAVE_CURSES_H + #include + #endif + ]) + AC_CHECK_HEADERS([termios.h]) + + dnl * This is provided in io-layer, but on windows it's only available + dnl * on xp+ + AC_DEFINE(HAVE_GETPROCESSID, 1, [Define if GetProcessId is available]) +else + dnl ********************************* + dnl *** Checks for Windows compilation *** + dnl ********************************* + AC_CHECK_HEADERS(winternl.h) + + jdk_headers_found=no + AC_CHECK_LIB(ws2_32, main, LIBS="$LIBS -lws2_32", AC_ERROR(bad mingw install?)) + AC_CHECK_LIB(psapi, main, LIBS="$LIBS -lpsapi", AC_ERROR(bad mingw install?)) + AC_CHECK_LIB(ole32, main, LIBS="$LIBS -lole32", AC_ERROR(bad mingw install?)) + AC_CHECK_LIB(winmm, main, LIBS="$LIBS -lwinmm", AC_ERROR(bad mingw install?)) + AC_CHECK_LIB(oleaut32, main, LIBS="$LIBS -loleaut32", AC_ERROR(bad mingw install?)) + AC_CHECK_LIB(advapi32, main, LIBS="$LIBS -ladvapi32", AC_ERROR(bad mingw install?)) + AC_CHECK_LIB(version, main, LIBS="$LIBS -lversion", AC_ERROR(bad mingw install?)) + + dnl ********************************* + dnl *** Check for struct ip_mreqn *** + dnl ********************************* + AC_MSG_CHECKING(for struct ip_mreqn) + AC_TRY_COMPILE([#include ], [ + 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 ], [ + 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) + AC_CHECK_DECLS(InterlockedExchange64, [], [], [[#include ]]) + AC_CHECK_DECLS(InterlockedCompareExchange64, [], [], [[#include ]]) + AC_CHECK_DECLS(InterlockedDecrement64, [], [], [[#include ]]) + AC_CHECK_DECLS(InterlockedIncrement64, [], [], [[#include ]]) + AC_CHECK_DECLS(InterlockedAdd, [], [], [[#include ]]) + AC_CHECK_DECLS(InterlockedAdd64, [], [], [[#include ]]) + AC_CHECK_DECLS(__readfsdword, [], [], [[#include ]]) +fi + +dnl socklen_t check +AC_MSG_CHECKING(for socklen_t) +AC_TRY_COMPILE([ +#include +#include +],[ + socklen_t foo; +],[ +ac_cv_c_socklen_t=yes + AC_DEFINE(HAVE_SOCKLEN_T, 1, [Have socklen_t]) + AC_MSG_RESULT(yes) +],[ + AC_MSG_RESULT(no) +]) + +AC_MSG_CHECKING(for array element initializer support) +AC_TRY_COMPILE([#include ], [ + 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, , AC_MSG_CHECKING(for trunc in math.h) + # Simply calling trunc (0.0) is no good since gcc will optimize the call away + AC_TRY_LINK([#include ], + [ static void *p = &trunc; ], + [ + AC_DEFINE(HAVE_TRUNC) + AC_MSG_RESULT(yes) + ac_cv_trunc=yes + ], + AC_MSG_RESULT(no))) + +if test "x$ac_cv_truncl" != "xyes"; then + AC_CHECK_LIB(sunmath, aintl, [ AC_DEFINE(HAVE_AINTL, 1, [Has the 'aintl' function]) LIBS="$LIBS -lsunmath"]) +fi + +AC_CHECK_FUNCS(round) +AC_CHECK_FUNCS(rint) +AC_CHECK_FUNCS(execvp) + +dnl **************************** +dnl *** Look for /dev/random *** +dnl **************************** + +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)], +try_dev_random=$enableval, try_dev_random=yes) + +AC_MSG_RESULT($try_dev_random) + +case "{$build}" in + *-openbsd*) + NAME_DEV_RANDOM="/dev/srandom" + ;; + +dnl Win32 does not have /dev/random, they have their own method... + + *-mingw*|*-*-cygwin*) + ac_cv_have_dev_random=no + ;; + +dnl Everywhere else, it's /dev/random + + *) + NAME_DEV_RANDOM="/dev/random" + ;; +esac + +AC_DEFINE_UNQUOTED(NAME_DEV_RANDOM, "$NAME_DEV_RANDOM", [Name of /dev/random]) + +dnl 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 + 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) + ac_cv_have_dev_random=no + AC_MSG_RESULT(has been disabled) +fi + +if test "x$host_win32" = "xyes"; then + AC_DEFINE(HAVE_CRYPT_RNG) +fi + +if test "x$ac_cv_have_dev_random" = "xno" \ + && test "x$host_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 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], 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 + +AC_ARG_ENABLE(bcl-opt, [ --disable-bcl-opt BCL is compiled with no optimizations (allows accurate BCL debugging)], test_bcl_opt=$enableval, test_bcl_opt=yes) + +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]) +AC_ARG_ENABLE(big-arrays, [ --enable-big-arrays Enable the allocation and indexing of arrays greater than Int32.MaxValue], enable_big_arrays=$enableval, enable_big_arrays=no) +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) + +dnl ************** +dnl *** DTRACE *** +dnl ************** + +AC_ARG_ENABLE(dtrace,[ --enable-dtrace Enable DTrace probes], enable_dtrace=$enableval, enable_dtrace=$has_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.]) + enable_dtrace=no + elif ! $DTRACE -h -s $srcdir/data/mono.d > /dev/null 2>&1; then + AC_MSG_RESULT([dtrace doesn't support -h option, dtrace support disabled.]) + enable_dtrace=no + fi +fi + +dtrace_g=no +if test "x$enable_dtrace" = "xyes"; then + AC_DEFINE(ENABLE_DTRACE, 1, [Enable DTrace probes]) + DTRACEFLAGS= + if test "x$ac_cv_sizeof_void_p" = "x8"; then + case "$host" in + powerpc-*-darwin*) + DTRACEFLAGS="-arch ppc64" + ;; + i*86-*-darwin*) + DTRACEFLAGS="-arch x86_64" + ;; + *) + DTRACEFLAGS=-64 + ;; + esac + else + case "$host" in + powerpc-*-darwin*) + DTRACEFLAGS="-arch ppc" + ;; + i*86-*-darwin*) + DTRACEFLAGS="-arch i386" + ;; + *) + DTRACEFLAGS=-32 + ;; + esac + fi + AC_SUBST(DTRACEFLAGS) + case "$host" in + *-*-solaris*) + 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]) + +dnl ************** +dnl *** NaCl *** +dnl ************** + +AC_ARG_ENABLE(nacl_codegen, [ --enable-nacl-codegen Enable Native Client code generation], enable_nacl_codegen=$enableval, enable_nacl_codegen=no) +AC_ARG_ENABLE(nacl_gc, [ --enable-nacl-gc Enable Native Client garbage collection], enable_nacl_gc=$enableval, enable_nacl_gc=no) + +AM_CONDITIONAL(NACL_CODEGEN, test x$enable_nacl_codegen != xno) + +dnl +dnl Hack to use system mono for operations in build/install not allowed in NaCl. +dnl +nacl_self_host="" +if test "x$ac_cv_header_nacl_nacl_dyncode_h" = "xyes"; then + nacl_self_host="nacl_self_host" +fi +AC_SUBST(nacl_self_host) + +if test "x$enable_nacl_codegen" = "xyes"; then + MONO_NACL_ALIGN_MASK_OFF=1 + AC_DEFINE(TARGET_NACL, 1, [...]) + AC_DEFINE(__native_client_codegen__, 1, [...]) +else + MONO_NACL_ALIGN_MASK_OFF=0 + AC_DEFINE(__default_codegen__, 1, [...]) +fi +if test "x$enable_nacl_gc" = "xyes"; then + if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then + INSTRUMENT_CFLAG="-finstrument-for-thread-suspension" + else + # Not yet implemented + INSTRUMENT_CFLAG="" + fi + CPPFLAGS="$CPPFLAGS $INSTRUMENT_CFLAG -D__native_client_gc__" +fi +AC_SUBST(MONO_NACL_ALIGN_MASK_OFF) + +dnl ************** +dnl *** LLVM *** +dnl ************** + +AC_ARG_ENABLE(llvm,[ --enable-llvm Enable the LLVM back-end], enable_llvm=$enableval, enable_llvm=no) +AC_ARG_ENABLE(loadedllvm,[ --enable-loadedllvm Load the LLVM back-end dynamically], enable_llvm=$enableval && enable_loadedllvm=$enableval, enable_loadedllvm=no) +AC_ARG_ENABLE(llvm-version-check,[ --enable-llvm-version-check Check that the LLVM matches the version expected by mono], enable_llvm_version_check=$enableval, enable_llvm_version_check=no) + +AC_ARG_WITH(llvm, [ --with-llvm= Enable the LLVM back-end], enable_llvm=yes,) + +if test "x$enable_llvm" = "xyes"; then + if test "x$with_llvm" != "x"; then + LLVM_CONFIG=$with_llvm/bin/llvm-config + if test ! -x $LLVM_CONFIG; then + AC_MSG_ERROR([LLVM executable $LLVM_CONFIG not found.]) + fi + else + AC_PATH_PROG(LLVM_CONFIG, llvm-config, no) + if test "x$LLVM_CONFIG" = "xno"; then + AC_MSG_ERROR([llvm-config not found.]) + fi + fi + + llvm_codegen="x86codegen" + case "$target" in + arm*) + llvm_codegen="armcodegen" + ;; + esac + + # The output of --cflags seems to include optimizations flags too + LLVM_CFLAGS=`$LLVM_CONFIG --cflags | sed -e 's/-O2//g' | sed -e 's/-O0//g' | sed -e 's/-fomit-frame-pointer//g' | sed -e 's/-fPIC//g'` + # LLVM is compiled with -fno-rtti, so we need this too, since our classes inherit + # from LLVM classes. + LLVM_CXXFLAGS="`$LLVM_CONFIG --cxxflags` -fno-rtti" + LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags` + # This might include empty lines + LLVM_SYSTEM_LIBS=`$LLVM_CONFIG --system-libs 2>/dev/null | grep -- -` + if test "x$host" != "x$target"; then + # No need for jit libs + LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter` + else + LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit $llvm_codegen` + fi + LLVM_LIBS="$LLVM_LIBS $LLVM_LDFLAGS $LLVM_SYSTEM_LIBS -lstdc++" + + expected_llvm_version="3.4svn-mono-mono/e656cac" + + # Should be something like '2.6' or '2.7svn' + llvm_version=`$LLVM_CONFIG --version` + major_version=`echo $llvm_version | cut -c 1` + minor_version=`echo $llvm_version | cut -c 3` + llvm_api_version=`$LLVM_CONFIG --mono-api-version 2>/dev/null` + AC_MSG_CHECKING(LLVM version) + AC_MSG_RESULT($llvm_version) + if echo $llvm_version | grep -q 'mono'; then + if test "x$enable_llvm_version_check" == "xyes"; then + if test "$llvm_version" != "$expected_llvm_version"; then + AC_MSG_ERROR([Expected llvm version $expected_llvm_version, but llvm-config --version returned $llvm_version"]) + fi + fi + if test "x$llvm_api_version" = "x"; then + LLVM_CFLAGS="$LLVM_CFLAGS -DLLVM_API_VERSION=0" + LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_API_VERSION=0" + else + LLVM_CFLAGS="$LLVM_CFLAGS -DLLVM_API_VERSION=$llvm_api_version" + LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_API_VERSION=$llvm_api_version" + fi + else + AC_MSG_ERROR([Compiling with stock LLVM is not supported, please use the Mono LLVM repo at https://github.com/mono/llvm, with the GIT branch which matches this version of mono, i.e. 'mono-2-10' for Mono 2.10.]) + fi + + AC_DEFINE_UNQUOTED(LLVM_MAJOR_VERSION, $major_version, [Major version of LLVM libraries]) + AC_DEFINE_UNQUOTED(LLVM_MINOR_VERSION, $minor_version, [Minor version of LLVM libraries]) + AC_DEFINE_UNQUOTED(LLVM_VERSION, "$llvm_version", [Full version of LLVM libraties]) + + # Have to pass these on the command line since mini-llvm-cpp.h already includes + # llvm's config.h + LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_MAJOR_VERSION=$major_version -DLLVM_MINOR_VERSION=$minor_version" + + AC_SUBST(LLVM_CFLAGS) + AC_SUBST(LLVM_CXXFLAGS) + AC_SUBST(LLVM_LIBS) + AC_SUBST(LLVM_LDFLAGS) + AC_DEFINE(ENABLE_LLVM, 1, [Enable the LLVM back end]) +fi + +AM_CONDITIONAL(ENABLE_LLVM, [test x$enable_llvm = xyes]) +if test "x$enable_loadedllvm" = "xyes"; then + AC_DEFINE(MONO_LLVM_LOADED, 1, [The LLVM back end is dynamically loaded]) +fi +AM_CONDITIONAL(LOADED_LLVM, [test x$enable_loadedllvm = xyes]) + +TARGET="unknown" +ACCESS_UNALIGNED="yes" + +JIT_SUPPORTED=no +INTERP_SUPPORTED=no +LIBC="libc.so.6" +INTL="libc.so.6" +SQLITE="libsqlite.so.0" +SQLITE3="libsqlite3.so.0" +X11="libX11.so" +XINERAMA="libXinerama.so" + +sizeof_register="SIZEOF_VOID_P" + +jit_wanted=true +interp_wanted=false +sgen_supported=false +boehm_supported=true +case "$host" in + mips*) + TARGET=MIPS; + arch_target=mips; + sgen_supported=true + ACCESS_UNALIGNED="no" + JIT_SUPPORTED=yes + + AC_MSG_CHECKING(for mips n32) + AC_TRY_COMPILE([],[ + #if _MIPS_SIM != _ABIN32 + #error Not mips n32 + #endif + return 0; + ],[ + AC_MSG_RESULT(yes) + sizeof_register=8 + ],[ + AC_MSG_RESULT(no) + ]) + ;; + i*86-*-*) + TARGET=X86; + arch_target=x86; + JIT_SUPPORTED=yes + case $host_os in + solaris*) + LIBC="libc.so" + INTL="libintl.so" + if test "x$ac_cv_sizeof_void_p" = "x8"; then + TARGET=AMD64 + arch_target=amd64 + fi + + # On solaris 10 x86, gcc prints a warning saying 'visibility attribute not supported on this configuration; ignored', but linking fails. A test case: + # int astruct __attribute__ ((visibility ("hidden"))); + # 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 + have_visibility_hidden=no + sgen_supported=true + ;; + mingw*|cygwin*) + sgen_supported=true + have_visibility_hidden=no + ;; + haiku*) + LIBC=libroot.so + ;; + linux*) + sgen_supported=true + AOT_SUPPORTED="yes" + ;; + darwin*) + sgen_supported=true + AOT_SUPPORTED="yes" + ;; + darwin*|openbsd*|freebsd*) + sgen_supported=true + ;; + esac + ;; + x86_64-*-* | amd64-*-*) + TARGET=AMD64; + arch_target=amd64; + JIT_SUPPORTED=yes + if test "x$ac_cv_sizeof_void_p" = "x4"; then + AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers]) + sizeof_register=8 + fi + case $host_os in + linux*) + sgen_supported=true + AOT_SUPPORTED="yes" + ;; + darwin*|openbsd*|freebsd*) + sgen_supported=true + ;; + esac + case "$host" in + x86_64-*-nacl*) + AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers]) + sizeof_register=8 + ;; + esac + ;; + ia64-*-*) + TARGET=IA64 + arch_target=ia64 + ACCESS_UNALIGNED="no" + JIT_SUPPORTED=yes + LIBC="libc.so.6.1" + INTL="libc.so.6.1" + AC_CHECK_LIB(unwind, _U_dyn_register, [], [AC_MSG_ERROR(library libunwind not found)]) + libmono_ldflags="-lunwind" + ;; + sparc*-*-*) + if test "x$ac_cv_sizeof_void_p" = "x8"; then + TARGET=SPARC64 + else + TARGET=SPARC + fi + arch_target=sparc; + JIT_SUPPORTED=yes + ACCESS_UNALIGNED="no" + case $host_os in + linux*) ;; + *) + LIBC="libc.so" + INTL="libintl.so" + esac + if test x"$GCC" = xyes; then + # We don't support v8 cpus + 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 + sgen_supported=true + ;; + *-mingw*|*-*-cygwin*) + # When this is enabled, it leads to very strange crashes at runtime (gcc-3.4.4) + have_visibility_hidden=no + INTL="intl" + ;; + macppc-*-openbsd* | powerpc*-*-linux* | powerpc-*-openbsd* | \ + powerpc-*-sysv* | powerpc-*-darwin* | powerpc-*-netbsd* | powerpc-*-freebsd* ) + if test "x$ac_cv_sizeof_void_p" = "x8"; then + TARGET=POWERPC64; + CPPFLAGS="$CPPFLAGS -D__mono_ppc__ -D__mono_ppc64__" + CFLAGS="$CFLAGS -mminimal-toc" + else + TARGET=POWERPC; + CPPFLAGS="$CPPFLAGS -D__mono_ppc__" + fi + arch_target=ppc; + JIT_SUPPORTED=yes + case $host_os in + linux*|darwin*) + sgen_supported=true + ;; + esac + ;; + arm*-darwin*) + TARGET=ARM; + arch_target=arm; + ACCESS_UNALIGNED="no" + JIT_SUPPORTED=yes + CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" + # libgc's gc_locks.h depends on this + CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC" + sgen_supported=true + ;; + arm*-linux*) + TARGET=ARM; + arch_target=arm; + ACCESS_UNALIGNED="no" + JIT_SUPPORTED=yes + sgen_supported=true + AOT_SUPPORTED="yes" + CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" + ;; +# TODO: make proper support for NaCl host. +# arm*-*nacl) +# TARGET=ARM; +# arch_target=arm; +# ACCESS_UNALIGNED="no" +# JIT_SUPPORTED=yes +# sgen_supported=true +# AOT_SUPPORTED="no" +# ;; + aarch64-*) + # https://lkml.org/lkml/2012/7/15/133 + TARGET=ARM64 + arch_target=arm64 + JIT_SUPPORTED=yes + sgen_supported=true + boehm_supported=false + ;; + s390x-*-linux*) + TARGET=S390X; + arch_target=s390x; + ACCESS_UNALIGNED="yes" + JIT_SUPPORTED=yes + sgen_supported=true + CFLAGS="$CFLAGS -mbackchain -D__USE_STRING_INLINES" + ;; +esac + +HOST=$TARGET + +if test "x$host" != "x$target"; then + AC_DEFINE(MONO_CROSS_COMPILE,1,[The runtime is compiled for cross-compiling mode]) + enable_mcs_build=no + case "$target" in + arm*-darwin*) + TARGET=ARM; + arch_target=arm; + ACCESS_UNALIGNED="no" + JIT_SUPPORTED=yes + CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" + jit_wanted=true + # Can't use tls, since it depends on the runtime detection of tls offsets + # in mono-compiler.h + with_tls=pthread + ;; + powerpc64-ps3-linux-gnu) + TARGET=POWERPC64 + arch_target=powerpc64 + AC_DEFINE(TARGET_PS3, 1, [...]) + # It would be better to just use TARGET_POWERPC64, but lots of code already + # uses this define + AC_DEFINE(__mono_ppc64__, 1, [...]) + AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers]) + sizeof_register=8 + target_byte_order=G_BIG_ENDIAN + ;; + + powerpc64-xbox360-linux-gnu) + TARGET=POWERPC64 + arch_target=powerpc64 + AC_DEFINE(TARGET_XBOX360, 1, [...]) + # It would be better to just use TARGET_POWERPC64, but lots of code already + # uses this define + sizeof_register=8 + target_byte_order=G_BIG_ENDIAN + ;; + x86_64-*-nacl) + TARGET=AMD64 + arch_target=amd64 + AC_DEFINE(TARGET_AMD64, 1, [...]) + AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers]) + sizeof_register=8 + ;; +# TODO: make proper support for NaCl target. +# arm*-*nacl) +# TARGET=ARM +# arch_target=arm +# AC_DEFINE(TARGET_ARM, 1, [...]) +# ACCESS_UNALIGNED="no" +# JIT_SUPPORTED=yes +# sizeof_register=4 +# CPPFLAGS="$CPPFLAGS \ +# -D__ARM_EABI__ \ +# -D__arm__ \ +# -D__portable_native_client__ \ +# -Dtimezone=_timezone \ +# -DDISABLE_SOCKETS \ +# -DDISABLE_ATTACH \ +# -DUSE_NEWLIB" +# jit_wanted=true + # Can't use tls, since it depends on the runtime detection of tls offsets + # in mono-compiler.h +# with_tls=pthread +# ;; + i686-*-nacl) + TARGET=X86 + arch_target=x86 + AC_DEFINE(TARGET_X86, 1, [...]) + sizeof_register=4 + ;; + arm*-linux-*) + TARGET=ARM; + arch_target=arm; + AC_DEFINE(TARGET_ARM, 1, [...]) + AC_DEFINE(TARGET_ANDROID, 1, [...]) + ACCESS_UNALIGNED="no" + JIT_SUPPORTED=yes + CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" + jit_wanted=true + # Can't use tls, since it depends on the runtime detection of tls offsets + # in mono-compiler.h + with_tls=pthread + target_mach=no + case "$target" in + armv7l-unknown-linux-gnueabi*) + # TEGRA + CPPFLAGS="$CPPFLAGS" + ;; + armv5-*-linux-androideabi*) + CPPFLAGS="$CPPFLAGS" + ;; + esac + ;; + aarch64-*) + TARGET=ARM64 + JIT_SUPPORTED=yes + jit_wanted=true + ;; + *) + AC_MSG_ERROR([Cross compiling is not supported for target $target]) + esac +fi + +case "$TARGET" in +X86) + AC_DEFINE(TARGET_X86, 1, [...]) + ;; +AMD64) + AC_DEFINE(TARGET_AMD64, 1, [...]) + ;; +ARM) + AC_DEFINE(TARGET_ARM, 1, [...]) + ;; +ARM64) + AC_DEFINE(TARGET_ARM64, 1, [...]) + ;; +POWERPC) + AC_DEFINE(TARGET_POWERPC, 1, [...]) + ;; +POWERPC64) + AC_DEFINE(TARGET_POWERPC, 1, [...]) + AC_DEFINE(TARGET_POWERPC64, 1, [...]) + ;; +S390X) + AC_DEFINE(TARGET_S390X, 1, [...]) + ;; +MIPS) + AC_DEFINE(TARGET_MIPS, 1, [...]) + ;; +IA64) + AC_DEFINE(TARGET_IA64, 1, [...]) + ;; +SPARC) + AC_DEFINE(TARGET_SPARC, 1, [...]) + ;; +SPARC64) + AC_DEFINE(TARGET_SPARC64, 1, [...]) + ;; +esac + +dnl Use GCC atomic ops if they work on the target. +if test x$GCC = "xyes"; then + case $TARGET in + X86 | AMD64 | ARM | ARM64 | POWERPC | POWERPC64 | MIPS | S390X | SPARC | SPARC64) + AC_DEFINE(USE_GCC_ATOMIC_OPS, 1, [...]) + ;; + esac +fi + +if test "x$target_mach" = "xyes"; then + if test "x$TARGET" = "xARM" -o "x$TARGET" = "xARM64"; then + AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS]) + CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_IOS" + CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_IOS" + else + AC_TRY_COMPILE([#include "TargetConditionals.h"],[ + #if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1 + #error fail this for ios + #endif + return 0; + ], [ + AC_DEFINE(TARGET_OSX,1,[The JIT/AOT targets OSX]) + CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_OSX" + CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_OSX" + ], [ + AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS]) + CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_IOS" + CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_IOS" + ]) + fi + AC_DEFINE(TARGET_MACH,1,[The JIT/AOT targets Apple platforms]) +fi + +if test "x$sizeof_register" = "x4"; then + AC_DEFINE(SIZEOF_REGISTER,4,[size of machine integer registers]) +elif test "x$sizeof_register" = "x8"; then + AC_DEFINE(SIZEOF_REGISTER,8,[size of machine integer registers]) +else + AC_DEFINE(SIZEOF_REGISTER,SIZEOF_VOID_P,[size of machine integer registers]) +fi + +if test "x$target_byte_order" = "xG_BIG_ENDIAN"; then + AC_DEFINE(TARGET_BYTE_ORDER,G_BIG_ENDIAN,[byte order of target]) +elif test "x$target_byte_order" = "xG_LITTLE_ENDIAN"; then + AC_DEFINE(TARGET_BYTE_ORDER,G_LITTLE_ENDIAN,[byte order of target]) +else + AC_DEFINE(TARGET_BYTE_ORDER,G_BYTE_ORDER,[byte order of target]) +fi + +if test "x$have_visibility_hidden" = "xyes"; then + AC_DEFINE(HAVE_VISIBILITY_HIDDEN, 1, [Support for the visibility ("hidden") attribute]) +fi + +if test "x$have_deprecated" = "xyes"; then + AC_DEFINE(HAVE_DEPRECATED, 1, [Support for the deprecated attribute]) +fi + +dnl +dnl Simple Generational checks (sgen) +dnl +if $sgen_supported; then + build_sgen_default=yes +else + build_sgen_default=no +fi +SGEN_DEFINES= +AC_ARG_WITH(sgen, [ --with-sgen=yes,no Extra Generational GC, default=yes],[buildsgen=$with_sgen],[buildsgen=$build_sgen_default]) +if test x$buildsgen = xyes; then + if $sgen_supported; then + SGEN_DEFINES="-DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR" + gc_msg="sgen and $gc_msg" + else + buildsgen=no + AC_MSG_WARN("Sgen is not supported on this platform") + fi +fi +AC_SUBST(SGEN_DEFINES) +AM_CONDITIONAL(SUPPORT_SGEN, test x$buildsgen = xyes) + +USEJIT=false +if test x$JIT_SUPPORTED = xyes; then + if $jit_wanted; then + USEJIT=true + jit_status="Building and using the JIT" + else + if $interp_wanted; then + jit_status="Building the JIT, defaulting to the interpreter" + else + AC_ERROR(No JIT or interpreter support available or selected.) + fi + fi +else + if test x$interp_wanted = xtrue; then + jit_status="interpreter" + else + AC_ERROR(No JIT or interpreter support available or selected.) + fi +fi + +AM_CONDITIONAL(USE_JIT, test x$USEJIT = xtrue) + +libsuffix=".so" + +case "$host" in + *-*-darwin*) + libsuffix=".dylib" + LIBC="libc.dylib" + INTL="libintl.dylib" + SQLITE="libsqlite.0.dylib" + SQLITE3="libsqlite3.0.dylib" + X11="libX11.dylib" + ;; + *-*-*netbsd*) + LIBC="libc.so.12" + INTL="libintl.so.0" + ;; + *-*-*freebsd*) + LIBC="libc.so" + INTL="libintl.so" + SQLITE="libsqlite.so" + SQLITE3="libsqlite3.so" + ;; + *-*-*openbsd*) + LIBC="libc.so" + INTL="libintl.so" + SQLITE="libsqlite.so" + SQLITE3="libsqlite3.so" + ;; + *-*-*linux*) + AC_PATH_X + dlsearch_path=`(libtool --config ; echo eval echo \\$sys_lib_dlsearch_path_spec) | sh` + AC_MSG_CHECKING(for the soname of libX11.so) + for i in $x_libraries $dlsearch_path; do + for r in 4 5 6; do + if test -f $i/libX11.so.$r; then + X11=libX11.so.$r + AC_MSG_RESULT($X11) + fi + done + done + + if test "x$X11" = "xlibX11.so"; then + AC_MSG_WARN([Could not find X development libs. Do you have the -devel package installed? Assuming libX11.so.6...]); + X11=libX11.so.6 + fi + AC_MSG_CHECKING(for the soname of libXinerama.so) + for i in $x_libraries $dlsearch_path; do + for r in 1 2 3; do + if test -f $i/libXinerama.so.$r; then + XINERAMA=libXinerama.so.$r + AC_MSG_RESULT($XINERAMA) + fi + done + done + if test "x$XINERAMA" = "xlibXinerama.so"; then + AC_MSG_WARN([Could not find Xinerama development libs. Support for multiple monitors might not work...]); + fi + ;; +esac + + +AC_SUBST(libsuffix) + +if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then + if test "x$with_tls" = "x__thread"; then + # + # 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; int main () { foo = 5; return 0; }" > 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.]); + with_tls=pthread + fi + rm -f conftest.c conftest.so conftest + fi +fi + +AC_ARG_ENABLE(icall-symbol-map,[ --enable-icall-symbol-map Generate tables which map icall functions to their C symbols], icall_symbol_map=$enableval, icall_symbol_map=no) +if test "x$icall_symbol_map" = "xyes"; then + AC_DEFINE(ENABLE_ICALL_SYMBOL_MAP, 1, [Icall symbol map enabled]) +fi + +AC_ARG_ENABLE(icall-export,[ --enable-icall-export Export icall functions], icall_export=$enableval, icall_export=no) +if test "x$icall_export" = "xyes"; then + AC_DEFINE(ENABLE_ICALL_EXPORT, 1, [Icall export enabled]) +fi + +AC_ARG_ENABLE(icall-tables,[ --disable-icall-tables Disable the runtime lookup of icalls], icall_tables=$enableval, icall_tables=yes) +if test "x$icall_tables" = "xno"; then + AC_DEFINE(DISABLE_ICALL_TABLES, 1, [Icall tables disabled]) +fi + +if test "x$with_tls" = "x__thread"; then + AC_DEFINE(HAVE_KW_THREAD, 1, [Have __thread keyword]) + # Pass the information to libgc + 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, [tls_model available]) + ], [ + AC_MSG_RESULT(no) + ]) +fi + +if test ${TARGET} = ARM; then + dnl ****************************************** + dnl *** Check to see what FPU is available *** + dnl ****************************************** + AC_MSG_CHECKING(which FPU to use) + + # + # This is a bit tricky: + # + # if (__ARM_PCS_VFP) { + # /* mfloat-abi=hard == VFP with hard ABI */ + # } elif (!__SOFTFP__) { + # /* mfloat-abi=softfp == VFP with soft ABI */ + # } else { + # /* mfloat-abi=soft == no VFP */ + # } + # + # The exception is iOS (w/ GCC) where none of the above + # are defined (but iOS always uses the 'softfp' ABI). + # + # No support for FPA. + # + + fpu=NONE + + # iOS GCC always uses the 'softfp' ABI. + if test x"$GCC" = xyes && test x$platform_darwin = xyes; then + fpu=VFP + fi + + # Are we using the 'hard' ABI? + if test x$fpu = xNONE; then + AC_TRY_COMPILE([], [ + #ifndef __ARM_PCS_VFP + #error "Float ABI is not 'hard'" + #endif + return 0; + ], [ + fpu=VFP_HARD + ], [ + fpu=NONE + ]) + fi + + # No 'hard' ABI. 'soft' or 'softfp'? + if test x$fpu = xNONE; then + AC_TRY_COMPILE([], [ + #ifdef __SOFTFP__ + #error "Float ABI is not 'softfp'" + #endif + return 0; + ], [ + fpu=VFP + ], [ + fpu=NONE + ]) + fi + + AC_MSG_RESULT($fpu) + CPPFLAGS="$CPPFLAGS -DARM_FPU_$fpu=1" + unset fpu + + dnl ********************************************* + dnl *** Check which ARM version(s) we can use *** + dnl ********************************************* + AC_MSG_CHECKING(which ARM version to use) + + AC_TRY_COMPILE([], [ + #if !defined(__ARM_ARCH_5T__) && !defined(__ARM_ARCH_5TE__) && !defined(__ARM_ARCH_5TEJ__) + #error Not on ARM v5. + #endif + return 0; + ], [ + arm_v5=yes + + arm_ver=ARMv5 + ], []) + + AC_TRY_COMPILE([], [ + #if !defined(__ARM_ARCH_6J__) && !defined(__ARM_ARCH_6ZK__) && !defined(__ARM_ARCH_6K__) && !defined(__ARM_ARCH_6T2__) && !defined(__ARM_ARCH_6M__) + #error Not on ARM v6. + #endif + return 0; + ], [ + arm_v5=yes + arm_v6=yes + + arm_ver=ARMv6 + ], []) + + AC_TRY_COMPILE([], [ + #if !defined(__ARM_ARCH_7A__) && !defined(__ARM_ARCH_7R__) && !defined(__ARM_ARCH_7EM__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7S__) + #error Not on ARM v7. + #endif + return 0; + ], [ + arm_v5=yes + arm_v6=yes + arm_v7=yes + + arm_ver=ARMv7 + ], []) + + AC_MSG_RESULT($arm_ver) + + if test x$arm_v5 = xyes; then + AC_DEFINE(HAVE_ARMV5, 1, [ARM v5]) + CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV5=1" + fi + + if test x$arm_v6 = xyes; then + AC_DEFINE(HAVE_ARMV6, 1, [ARM v6]) + CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV6=1" + fi + + if test x$arm_v7 = xyes; then + AC_DEFINE(HAVE_ARMV7, 1, [ARM v7]) + CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV7=1" + fi +fi + +if test ${TARGET} = ARM; then + if test "x${with_jumptables}" = "xyes"; then + AC_DEFINE(USE_JUMP_TABLES, 1, Use jump tables in JIT) + fi +fi + +if test ${TARGET} = unknown; then + CPPFLAGS="$CPPFLAGS -DNO_PORT" + AC_MSG_WARN("mono has not been ported to $host: some things may not work.") +fi + +if test ${ACCESS_UNALIGNED} = no; then + CPPFLAGS="$CPPFLAGS -DNO_UNALIGNED_ACCESS" +fi + +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 -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. + TMP_CPPFLAGS="$CPPFLAGS $CPPFLAGS_FOR_LIBGC" + if test x$TARGET = xSPARC -o x$TARGET = xSPARC64; then + TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-D_FILE_OFFSET_BITS=64//g'` + fi + # Don't pass -finstrument-for-thread-suspension in, + # if these are instrumented it will be very bad news + # (infinite recursion, undefined parking behavior, etc) + TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-finstrument-for-thread-suspension//g'` + ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args \"CPPFLAGS_FOR_LIBGC=$TMP_CPPFLAGS\" \"CFLAGS_FOR_LIBGC=$CFLAGS_FOR_LIBGC\"" + AC_CONFIG_SUBDIRS(libgc) + ;; +esac + +AC_ARG_WITH(profile2, [ --with-profile2=yes,no If you want to install the 2.0/3.5 FX (defaults to yes)], [], [with_profile2=yes]) +AC_ARG_WITH(profile4, [ --with-profile4=yes,no If you want to install the 4.0 FX (defaults to yes)], [], [with_profile4=yes]) +AC_ARG_WITH(profile4_5,[ --with-profile4_5=yes,no If you want to install the 4.5 FX (defaults to yes)], [], [with_profile4_5=yes]) +AC_ARG_WITH(monodroid, [ --with-monodroid=yes,no If you want to build the MonoDroid assemblies (defaults to no)], [], [with_monodroid=no]) +AC_ARG_WITH(monotouch, [ --with-monotouch=yes,no,only If you want to build the MonoTouch assemblies (defaults to no)], [], [with_monotouch=no]) +AC_ARG_WITH(xammac, [ --with-xammac=yes,no,only If you want to build the Xamarin.Mac assemblies (defaults to no)], [], [with_xammac=no]) + +OPROFILE=no +AC_ARG_WITH(oprofile,[ --with-oprofile=no, Enable oprofile support (defaults to no)],[ + if test x$with_oprofile != xno; then + 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 + OPROFILE=yes + OPROFILE_CFLAGS="-I$oprofile_include" + OPROFILE_LIBS="-L$with_oprofile/lib/oprofile -lopagent" + AC_DEFINE(HAVE_OPROFILE,1,[Have oprofile support]) + fi +]) + +MALLOC_MEMPOOLS=no +AC_ARG_WITH(malloc_mempools,[ --with-malloc-mempools=yes,no Use malloc for each single mempool allocation (only for runtime debugging, defaults to no)],[ + if test x$with_malloc_mempools = xyes; then + MALLOC_MEMPOOLS=yes + AC_DEFINE(USE_MALLOC_FOR_MEMPOOLS,1,[Use malloc for each single mempool allocation]) + fi +]) + + +DISABLE_MCS_DOCS=no +AC_ARG_WITH(mcs_docs,[ --with-mcs-docs=yes,no If you want to build the documentation under mcs (defaults to yes)],[ + if test x$with_mcs_docs != xyes; then + DISABLE_MCS_DOCS=yes + fi +]) +if test x$with_profile4 != xyes; then + DISABLE_MCS_DOCS=yes +fi + +AC_ARG_WITH(lazy_gc_thread_creation, [ --with-lazy-gc-thread-creation=yes|no Enable lazy runtime thread creation, embedding host must do it explicitly (defaults to no)],[ + if test x$with_lazy_gc_thread_creation != xno ; then + AC_DEFINE(LAZY_GC_THREAD_CREATION,1,[Enable lazy gc thread creation by the embedding host.]) + fi +], [with_lazy_gc_thread_creation=no]) + +AC_CHECK_HEADER([malloc.h], + [AC_DEFINE([HAVE_USR_INCLUDE_MALLOC_H], [1], + [Define to 1 if you have /usr/include/malloc.h.])],,) + +if test x"$GCC" = xyes; then + # Implicit function declarations are not 64 bit safe + # Do this late, since this causes lots of configure tests to fail + CFLAGS="$CFLAGS -Werror-implicit-function-declaration" + # jay has a lot of implicit declarations + JAY_CFLAGS="-Wno-implicit-function-declaration" +fi + +# When --disable-shared is used, libtool transforms libmono-2.0.la into libmono-2.0.so +# instead of libmono-static.a +if test "x$enable_shared" = "xno" -a "x$enable_executables" = "xyes"; then + LIBMONO_LA=libmini-static.la +else + if test x$buildsgen = xyes; then + LIBMONO_LA=libmonosgen-$API_VER.la + else + LIBMONO_LA=libmonoboehm-$API_VER.la + fi +fi +AC_SUBST(LIBMONO_LA) + +dnl +dnl Consistency settings +dnl +if test x$cross_compiling = xyes -o x$enable_mcs_build = xno; then + DISABLE_MCS_DOCS=yes + with_profile2=no + with_profile4=no + with_profile4_5=no + with_monodroid=no + with_monotouch=no + with_xammac=no +fi + +if test x$DISABLE_MCS_DOCS = xyes; then + docs_dir="" +else + docs_dir=docs +fi +AC_SUBST(docs_dir) + +## 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]) + +AM_CONDITIONAL(HAVE_OPROFILE, test x$OPROFILE = xyes) +AC_SUBST(OPROFILE_CFLAGS) +AC_SUBST(OPROFILE_LIBS) + +libmono_ldflags="$libmono_ldflags $LIBS" + +AM_CONDITIONAL(INSTALL_2_0, [test "x$with_profile2" = xyes]) +AM_CONDITIONAL(INSTALL_4_0, [test "x$with_profile4" = xyes]) +AM_CONDITIONAL(INSTALL_4_5, [test "x$with_profile4_5" = xyes]) +AM_CONDITIONAL(INSTALL_MONODROID, [test "x$with_monodroid" != "xno"]) +AM_CONDITIONAL(INSTALL_MONOTOUCH, [test "x$with_monotouch" != "xno"]) +AM_CONDITIONAL(INSTALL_XAMMAC, [test "x$with_xammac" != "xno"]) +AM_CONDITIONAL(ONLY_MONOTOUCH, [test "x$with_monotouch" = "xonly"]) +AM_CONDITIONAL(ONLY_XAMMAC, [test "x$with_xammac" = "xonly"]) + +AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes) +AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno) +AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC) +AM_CONDITIONAL(SPARC64, test x$TARGET = xSPARC64) +AM_CONDITIONAL(X86, test x$TARGET = xX86) +AM_CONDITIONAL(AMD64, test x$TARGET = xAMD64) +AM_CONDITIONAL(IA64, test x$TARGET = xIA64) +AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS) +AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC) +AM_CONDITIONAL(POWERPC64, test x$TARGET = xPOWERPC64) +AM_CONDITIONAL(ARM, test x$TARGET = xARM) +AM_CONDITIONAL(ARM64, test x$TARGET = xARM64) +AM_CONDITIONAL(S390X, test x$TARGET = xS390X) +AM_CONDITIONAL(HOST_X86, test x$HOST = xX86) +AM_CONDITIONAL(HOST_AMD64, test x$HOST = xAMD64) +AM_CONDITIONAL(HOST_ARM, test x$HOST = xARM) +AM_CONDITIONAL(HOST_ARM64, test x$HOST = xARM64) +AM_CONDITIONAL(CROSS_COMPILE, test "x$host" != "x$target") + +AM_CONDITIONAL(JIT_SUPPORTED, test x$JIT_SUPPORTED = xyes) +AM_CONDITIONAL(INTERP_SUPPORTED, test x$interp_wanted = xtrue) +AM_CONDITIONAL(INCLUDED_LIBGC, test x$gc = xincluded) + +AC_SUBST(LIBC) +AC_SUBST(INTL) +AC_SUBST(SQLITE) +AC_SUBST(SQLITE3) +AC_SUBST(X11) +AC_SUBST(XINERAMA) +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) + +mono_build_root=`pwd` +AC_SUBST(mono_build_root) + +if test x$USEJIT = xtrue; then + mono_runtime=mono/mini/mono +else + mono_runtime=mono/interpreter/mint +fi +AC_SUBST(mono_runtime) + +mono_cfg_root=$mono_build_root/runtime +if test x$host_win32 = xyes; then + if test "x$cross_compiling" = "xno"; then + mono_cfg_dir=`cygpath -w -a $mono_cfg_root`\\etc + else + mono_cfg_dir=`echo $mono_cfg_root | tr '/' '\\'`\\etc + fi +else + mono_cfg_dir=$mono_cfg_root/etc +fi +AC_SUBST(mono_cfg_dir) + +AC_CONFIG_FILES([po/mcs/Makefile.in]) + +AC_CONFIG_FILES([runtime/mono-wrapper],[chmod +x runtime/mono-wrapper]) +AC_CONFIG_FILES([runtime/monodis-wrapper],[chmod +x runtime/monodis-wrapper]) + +AC_CONFIG_COMMANDS([runtime/etc/mono/1.0/machine.config], +[ depth=../../../.. + case $srcdir in + [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; + .) reldir=$depth ;; + *) 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 +],[LN_S='$LN_S']) + +AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/machine.config], +[ depth=../../../.. + case $srcdir in + [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; + .) reldir=$depth ;; + *) 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 +],[LN_S='$LN_S']) + +AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/web.config], +[ depth=../../../.. + case $srcdir in + [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; + .) reldir=$depth ;; + *) 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 +],[LN_S='$LN_S']) + +AC_CONFIG_COMMANDS([runtime/etc/mono/browscap.ini], +[ depth=../../.. + case $srcdir in + [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; + .) reldir=$depth ;; + *) reldir=$depth/$srcdir ;; + esac + $ac_aux_dir/install-sh -d runtime/etc/mono/ + cd runtime/etc/mono/ + rm -f browscap.ini + $LN_S $reldir/data/browscap.ini browscap.ini + cd $depth +],[LN_S='$LN_S']) + +AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/Browsers/Compat.browser], +[ depth=../../../../.. + case $srcdir in + [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; + .) reldir=$depth ;; + *) 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/Browsers/Compat.browser Compat.browser + cd $depth +],[LN_S='$LN_S']) + +AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/Browsers/Compat.browser], +[ depth=../../../../.. + case $srcdir in + [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; + .) reldir=$depth ;; + *) reldir=$depth/$srcdir ;; + esac + $ac_aux_dir/install-sh -d runtime/etc/mono/4.0/Browsers/ + cd runtime/etc/mono/4.0/Browsers + rm -f Compat.browser + $LN_S $reldir/data/Browsers/Compat.browser Compat.browser + cd $depth +],[LN_S='$LN_S']) + +AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/Browsers/Compat.browser], +[ depth=../../../../.. + case $srcdir in + [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; + .) reldir=$depth ;; + *) reldir=$depth/$srcdir ;; + esac + $ac_aux_dir/install-sh -d runtime/etc/mono/4.5/Browsers/ + cd runtime/etc/mono/4.5/Browsers + rm -f Compat.browser + $LN_S $reldir/data/Browsers/Compat.browser Compat.browser + cd $depth +],[LN_S='$LN_S']) + +AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/machine.config], +[ depth=../../../.. + case $srcdir in + [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; + .) reldir=$depth ;; + *) reldir=$depth/$srcdir ;; + esac + $ac_aux_dir/install-sh -d runtime/etc/mono/4.0 + cd runtime/etc/mono/4.0 + rm -f machine.config + $LN_S $reldir/data/net_4_0/machine.config machine.config + cd $depth +],[LN_S='$LN_S']) + +AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/web.config], +[ depth=../../../.. + case $srcdir in + [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; + .) reldir=$depth ;; + *) reldir=$depth/$srcdir ;; + esac + $ac_aux_dir/install-sh -d runtime/etc/mono/4.0 + cd runtime/etc/mono/4.0 + rm -f web.config + $LN_S $reldir/data/net_4_0/web.config web.config + cd $depth +],[LN_S='$LN_S']) + +AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/machine.config], +[ depth=../../../.. + case $srcdir in + [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; + .) reldir=$depth ;; + *) reldir=$depth/$srcdir ;; + esac + $ac_aux_dir/install-sh -d runtime/etc/mono/4.5 + cd runtime/etc/mono/4.5 + rm -f machine.config + $LN_S $reldir/data/net_4_5/machine.config machine.config + cd $depth +],[LN_S='$LN_S']) + +AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/web.config], +[ depth=../../../.. + case $srcdir in + [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; + .) reldir=$depth ;; + *) reldir=$depth/$srcdir ;; + esac + $ac_aux_dir/install-sh -d runtime/etc/mono/4.5 + cd runtime/etc/mono/4.5 + rm -f web.config + $LN_S $reldir/data/net_4_5/web.config web.config + cd $depth +],[LN_S='$LN_S']) + +AC_CONFIG_COMMANDS([quiet-libtool], [sed -e 's/echo "copying selected/# "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]) + +AC_OUTPUT([ +Makefile +mono-core.spec +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/ppc/Makefile +mono/arch/sparc/Makefile +mono/arch/s390x/Makefile +mono/arch/arm/Makefile +mono/arch/arm64/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/tests/gc-descriptors/Makefile +mono/unit-tests/Makefile +mono/benchmark/Makefile +mono/monograph/Makefile +mono/io-layer/Makefile +mono/mini/Makefile +mono/profiler/Makefile +m4/Makefile +ikvm-native/Makefile +scripts/Makefile +man/Makefile +docs/Makefile +data/Makefile +data/net_2_0/Makefile +data/net_4_0/Makefile +data/net_4_5/Makefile +data/net_2_0/Browsers/Makefile +data/net_4_0/Browsers/Makefile +data/net_4_5/Browsers/Makefile +data/mint.pc +data/mono-2.pc +data/monosgen-2.pc +data/mono.pc +data/mono-cairo.pc +data/mono-nunit.pc +data/mono-options.pc +data/mono-lineeditor.pc +data/monodoc.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 +data/system.web.mvc2.pc +data/system.web.mvc3.pc +data/aspnetwebstack.pc +data/reactive.pc +samples/Makefile +support/Makefile +data/config +tools/Makefile +tools/locale-builder/Makefile +tools/sgen/Makefile +runtime/Makefile +msvc/Makefile +po/Makefile +]) + +# Update all submodules recursively to ensure everything is checked out +$srcdir/scripts/update_submodules + +if test x$host_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 + +if test x$platform_darwin = xyes; then + # This doesn't seem to be required and it slows down parallel builds + sed -e 's,lock_old_archive_extraction=yes,lock_old_archive_extraction=no,g' < libtool > libtool.new && mv libtool.new libtool && chmod +x libtool +fi + +( + case $prefix in + NONE) prefix=$ac_default_prefix ;; + esac + case $exec_prefix in + NONE) exec_prefix='${prefix}' ;; + esac + + # + # 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 + + test -w $mcs_topdir/build || chmod +w $mcs_topdir/build + + echo "prefix=$prefix" > $mcs_topdir/build/config.make + echo "exec_prefix=$exec_prefix" >> $mcs_topdir/build/config.make + echo "sysconfdir=$sysconfdir" >> $mcs_topdir/build/config.make + echo 'mono_libdir=${exec_prefix}/lib' >> $mcs_topdir/build/config.make + echo 'IL_FLAGS = /debug' >> $mcs_topdir/build/config.make + echo "RUNTIME = $mono_build_root/runtime/mono-wrapper" >> $mcs_topdir/build/config.make + echo "ILDISASM = $mono_build_root/runtime/monodis-wrapper" >> $mcs_topdir/build/config.make + echo "JAY_CFLAGS = $JAY_CFLAGS" >> $mcs_topdir/build/config.make + + case $INSTALL in + [[\\/$]]* | ?:[[\\/]]* ) mcs_INSTALL=$INSTALL ;; + *) mcs_INSTALL=$mono_build_root/$INSTALL ;; + esac + + echo "INSTALL = $mcs_INSTALL" >> $mcs_topdir/build/config.make + + export VERSION + [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" >> $mcs_topdir/build/config.make + + if test x$platform_darwin = xyes; then + echo "PLATFORM = darwin" >> $mcs_topdir/build/config.make + fi + + if test x$AOT_SUPPORTED = xyes -a x$enable_system_aot = xdefault; then + enable_system_aot=yes + fi + + if test "x$enable_loadedllvm" = "xyes"; then + # This seems to fail on the x86 buildbots + enable_system_aot=no + fi + + if test x$host_win32 = xno -a x$enable_system_aot = xyes; then + echo "ENABLE_AOT = 1" >> $mcs_topdir/build/config.make + fi + + if test x$DISABLE_MCS_DOCS = xyes; then + echo "DISABLE_MCS_DOCS = yes" >> $mcs_topdir/build/config.make + fi + + if test x$has_extension_module != xno; then + echo "EXTENSION_MODULE = 1" >> $srcdir/$mcsdir/build/config.make + fi + + default_profile=net_2_0 + if test -z "$INSTALL_4_0_TRUE"; then : + default_profile=net_4_0 + fi + if test -z "$INSTALL_MONODROID_TRUE"; then : + default_profile=monodroid + fi + if test -z "$INSTALL_MONOTOUCH_TRUE"; then : + default_profile=monotouch + fi + if test -z "$INSTALL_XAMMAC_TRUE"; then : + default_profile=xammac + fi + if test -z "$INSTALL_4_5_TRUE"; then : + default_profile=net_4_5 + fi + + echo "DEFAULT_PROFILE = $default_profile" >> $srcdir/$mcsdir/build/config.make + + if test "x$test_bcl_opt" = "xyes"; then + echo "BCL_OPTIMIZE = 1" >> $srcdir/$mcsdir/build/config.make + fi + + fi + + # if we have an olive folder, override the default settings + if test -d $olivedir; then + + if test x$cross_compiling = xno && test x$enable_olive_build != xno; then + + test -w $srcdir/$olivedir/build || chmod +w $srcdir/$olivedir/build + + echo "prefix=$prefix" > $srcdir/$olivedir/build/config.make + echo "exec_prefix=$exec_prefix" >> $srcdir/$olivedir/build/config.make + echo 'mono_libdir=${exec_prefix}/lib' >> $srcdir/$olivedir/build/config.make + 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 + fi + fi + +) + +libgdiplus_msg=${libgdiplus_loc:-assumed to be installed} + +echo " + mcs source: $mcsdir + + Engine: + GC: $gc_msg + TLS: $with_tls + SIGALTSTACK: $with_sigaltstack + Engine: $jit_status + oprofile: $OPROFILE + BigArrays: $enable_big_arrays + DTrace: $enable_dtrace + LLVM Back End: $enable_llvm (dynamically loaded: $enable_loadedllvm) + + Libraries: + .NET 2.0/3.5: $with_profile2 + .NET 4.0: $with_profile4 + .NET 4.5: $with_profile4_5 + MonoDroid: $with_monodroid + MonoTouch: $with_monotouch + Xamarin.Mac: $with_xammac + JNI support: $jdk_headers_found + libgdiplus: $libgdiplus_msg + zlib: $zlib_msg + $disabled +" +if test x$with_static_mono = xno -a "x$host_win32" != "xyes"; then + AC_MSG_WARN(Turning off static Mono is a risk, you might run into unexpected bugs) +fi diff --git a/configure.in b/configure.in deleted file mode 100644 index 32c3efee89e..00000000000 --- a/configure.in +++ /dev/null @@ -1,3791 +0,0 @@ -# Process this file with autoconf to produce a configure script. -#AC_PREREQ([2.62]) - -AC_INIT(mono, [3.4.1], - [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono]) - -AC_CONFIG_SRCDIR([README.md]) -AC_CONFIG_MACRO_DIR([m4]) -AC_CANONICAL_SYSTEM -AC_CANONICAL_HOST - -# Gross hack to enable 'make dist' on automake 1.9+tar 1.14. -# The extra brackets are to foil regex-based scans. -m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])]) - -AM_INIT_AUTOMAKE([1.9 dist-bzip2 tar-ustar no-dist-gzip foreign subdir-objects]) -AC_CONFIG_HEADERS([config.h]) -AM_MAINTAINER_MODE - -API_VER=2.0 -AC_SUBST(API_VER) - -AC_PROG_LN_S - -m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) - -case $host_os in -*cygwin* ) - echo "Run configure using ./configure --host=i686-pc-mingw32" - exit 1 -esac - -# 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* ) LN_S='cp -p';; -esac - -dnl -dnl libgc checks -dnl - -gc_headers=no -gc=included -gc_msg="included Boehm" -use_included_gc=no -libgc_configure_args= - -if test -d $srcdir/libgc ; then - gc_default=included -else - gc_default=boehm -fi - -# These variables are the CPPFLAGS/CFLAGS passed to libgc's configure -# libgc should inherit the original CFLAGS/CPPFLAGS passed to configure, i.e. -O0 -CPPFLAGS_FOR_LIBGC=$CPPFLAGS -CFLAGS_FOR_LIBGC=$CFLAGS -CPPFLAGS_FOR_EGLIB=$CPPFLAGS -CFLAGS_FOR_EGLIB=$CFLAGS - -# -# These are the flags that need to be stored in the mono.pc file for -# compiling code that will embed Mono -# -libmono_cflags="" -libmono_ldflags="" -AC_SUBST(libmono_cflags) -AC_SUBST(libmono_ldflags) - -# Variable to have relocatable .pc files (lib, or lib64) -reloc_libdir=`basename ${libdir}` -AC_SUBST(reloc_libdir) - -dnl if linker handles the version script -no_version_script=no - -# Set to yes if Unix sockets cannot be created in an anonymous namespace -need_link_unlink=no - -#Set to extra linker flags to be passed to the runtime binaries (mono /mono-sgen) -extra_runtime_ldflags="" - -# Thread configuration inspired by sleepycat's db -AC_MSG_CHECKING([host platform characteristics]) -libgc_threads=no -has_dtrace=no -parallel_mark=yes -ikvm_native=yes - -case "$host" in - powerpc*-*-linux*) - # https://bugzilla.novell.com/show_bug.cgi?id=504411 - disable_munmap=yes - ;; -esac - -host_win32=no -target_win32=no -platform_android=no -platform_darwin=no -case "$host" in - *-mingw*|*-*-cygwin*) - AC_DEFINE(HOST_WIN32,1,[Host Platform is Win32]) - AC_DEFINE(DISABLE_PORTABILITY,1,[Disable the io-portability layer]) - AC_DEFINE(PLATFORM_NO_SYMLINKS,1,[This platform does not support symlinks]) - host_win32=yes - mono_cv_clang=no - if test "x$cross_compiling" = "xno"; then - target_win32=yes - if test "x$host" == "x$build" -a "x$host" == "x$target"; then - AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32]) - fi - else - target_win32=yes - AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32/MinGW]) - AC_DEFINE(MINGW_CROSS_COMPILE,1,[Cross-compiling using MinGW]) - fi - HOST_CC="gcc" - # Windows 2000 is required that includes Internet Explorer 5.01 - CPPFLAGS="$CPPFLAGS -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0501 -D_UNICODE -DUNICODE -DWIN32_THREADS -DFD_SETSIZE=1024" - LDFLAGS="$LDFLAGS -lmswsock -lws2_32 -lole32 -loleaut32 -lpsapi -lversion -ladvapi32 -lwinmm -lkernel32" - libmono_cflags="-mms-bitfields -mwindows" - libmono_ldflags="-mms-bitfields -mwindows" - libdl= - libgc_threads=win32 - gc_default=included - with_sigaltstack=no - LN_S=cp - # This forces libgc to use the DllMain based thread registration code on win32 - libgc_configure_args="$libgc_configure_args --enable-win32-dllmain=yes" - ;; - *-*-*netbsd*) - host_win32=no - CPPFLAGS="$CPPFLAGS -D_REENTRANT -DGC_NETBSD_THREADS -D_GNU_SOURCE" - libmono_cflags="-D_REENTRANT" - LDFLAGS="$LDFLAGS -pthread" - CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD" - libmono_ldflags="-pthread" - need_link_unlink=yes - libdl="-ldl" - libgc_threads=pthreads - with_sigaltstack=no - use_sigposix=yes - ;; - *-*-*freebsd*) - host_win32=no - if test "x$PTHREAD_CFLAGS" = "x"; then - CPPFLAGS="$CPPFLAGS -DGC_FREEBSD_THREADS" - libmono_cflags= - else - CPPFLAGS="$CPPFLAGS $PTHREAD_CFLAGS -DGC_FREEBSD_THREADS" - libmono_cflags="$PTHREAD_CFLAGS" - fi - if test "x$PTHREAD_LIBS" = "x"; then - LDFLAGS="$LDFLAGS -pthread -L/usr/local/lib" - libmono_ldflags="-pthread" - else - LDFLAGS="$LDFLAGS $PTHREAD_LIBS -L/usr/local/lib" - libmono_ldflags="$PTHREAD_LIBS" - fi - CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD" - need_link_unlink=yes - AC_DEFINE(PTHREAD_POINTER_ID, 1, [pthread is a pointer]) - libdl= - libgc_threads=pthreads - use_sigposix=yes - has_dtrace=yes - ;; - *-*-*openbsd*) - host_win32=no - CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_OPENBSD_THREADS -DPLATFORM_BSD -D_REENTRANT -DUSE_MMAP" - if test "x$disable_munmap" != "xyes"; then - CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP" - fi - libmono_cflags="-D_THREAD_SAFE -D_REENTRANT" - LDFLAGS="$LDFLAGS -pthread" - need_link_unlink=yes - AC_DEFINE(PTHREAD_POINTER_ID) - libdl= - gc_default=boehm - libgc_threads=pthreads - with_sigaltstack=no - use_sigposix=yes - ;; - *-*-linux-android*) - host_win32=no - platform_android=yes - AC_DEFINE(PLATFORM_ANDROID,1,[Targeting the Android platform]) - AC_DEFINE(TARGET_ANDROID,1,[Targeting the Android platform]) - - CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP" - if test "x$disable_munmap" != "xyes"; then - CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP" - fi - libmono_cflags="-D_REENTRANT" - libdl="-ldl" - libgc_threads=pthreads - use_sigposix=yes - - with_tls=pthread - with_sigaltstack=no - with_static_mono=no - - # Android doesn't support boehm, as it's missing - support_boehm=no - with_gc=sgen - - # isinf(3) requires -lm; see isinf check below - LDFLAGS="$LDFLAGS -lm" - - # Bionic's sets PTHREAD_STACK_MIN=2*PAGE_SIZE; doesn't define - # PAGE_SIZE; breaks mono/io-layer/collection.c - # Bionic doesn't provide S_IWRITE; breaks io-layer/io.c - CFLAGS="$CFLAGS -DPAGE_SIZE=4096 -DS_IWRITE=S_IWUSR" - CXXFLAGS="$CXXFLAGS -DPAGE_SIZE=4096 -DS_IWRITE=S_IWUSR" - - # The configure check can't detect this - AC_DEFINE(HAVE_LARGE_FILE_SUPPORT, 1, [Have large file support]) - - # to bypass the underscore linker check, can't work when cross-compiling - mono_cv_uscore=yes - mono_cv_clang=no - ;; - *-*-linux*) - host_win32=no - CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP" - if test "x$disable_munmap" != "xyes"; then - CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP" - fi - libmono_cflags="-D_REENTRANT" - libdl="-ldl" - libgc_threads=pthreads - use_sigposix=yes - if test "x$cross_compiling" != "xno"; then - # to bypass the underscore linker check, not - # available during cross-compilation - mono_cv_uscore=no - fi - case "$host" in - aarch64-*) - support_boehm=no - with_gc=sgen - ;; - esac - ;; - *-*-nacl*) - host_win32=no - CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP" - if test "x$disable_munmap" != "xyes"; then - CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP" - fi - libmono_cflags="-D_REENTRANT" - libdl= - libgc_threads=pthreads - gc_default=boehm - use_sigposix=yes - ikvm_native=no - AC_DEFINE(DISABLE_SOCKETS,1,[Disable sockets support]) - AC_DEFINE(DISABLE_ATTACH, 1, [Disable agent attach support]) - ;; - *-*-hpux*) - host_win32=no - CPPFLAGS="$CPPFLAGS -DGC_HPUX_THREADS -D_HPUX_SOURCE -D_XOPEN_SOURCE_EXTENDED -D_REENTRANT" - # +ESdbgasm only valid on bundled cc on RISC - # silently ignored for ia64 - if test $GCC != "yes"; then - CFLAGS="$CFLAGS +ESdbgasm" - # Arrange for run-time dereferencing of null - # pointers to produce a SIGSEGV signal. - LDFLAGS="$LDFLAGS -z" - fi - CFLAGS="$CFLAGS +ESdbgasm" - LDFLAGS="$LDFLAGS -z" - libmono_cflags="-D_REENTRANT" - libmono_ldflags="-lpthread" - libgc_threads=pthreads - need_link_unlink=yes - use_sigposix=yes - ;; - *-*-solaris*) - host_win32=no - CPPFLAGS="$CPPFLAGS -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_MMAP -DUSE_MUNMAP -DPLATFORM_SOLARIS" - need_link_unlink=yes - libmono_cflags="-D_REENTRANT" - libgc_threads=pthreads - # This doesn't seem to work on solaris/x86, but the configure test runs - with_tls=pthread - has_dtrace=yes - use_sigposix=yes - enable_solaris_tar_check=yes - ;; - *-*-darwin*) - parallel_mark="Disabled_Currently_Hangs_On_MacOSX" - host_win32=no - platform_darwin=yes - target_mach=yes - CPPFLAGS="$CPPFLAGS -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP" - CPPFLAGS="$CPPFLAGS -DGetCurrentProcess=MonoGetCurrentProcess -DGetCurrentThread=MonoGetCurrentThread -DCreateEvent=MonoCreateEvent" - libmono_cflags="-D_THREAD_SAFE" - need_link_unlink=yes - AC_DEFINE(PTHREAD_POINTER_ID) - AC_DEFINE(USE_MACH_SEMA, 1, [...]) - no_version_script=yes - libdl= - libgc_threads=pthreads - has_dtrace=yes - if test "x$cross_compiling" = "xyes"; then - has_broken_apple_cpp=yes - fi - dnl Snow Leopard is horribly broken -- it reports itself as i386-apple-darwin*, but - dnl its gcc defaults to 64-bit mode. They have also deprecated the usage of ucontext - dnl we need to set some flags to build our 32-bit binaries on 10.6 properly - case "$host" in - dnl Snow Leopard and newer config.guess reports as this - i*86-*-darwin*) - BROKEN_DARWIN_FLAGS="-arch i386 -D_XOPEN_SOURCE" - BROKEN_DARWIN_CPPFLAGS="-D_XOPEN_SOURCE" - CPPFLAGS="$CPPFLAGS $BROKEN_DARWIN_CPPFLAGS" - CFLAGS="$CFLAGS $BROKEN_DARWIN_FLAGS" - CXXFLAGS="$CXXFLAGS $BROKEN_DARWIN_FLAGS" - CCASFLAGS="$CCASFLAGS $BROKEN_DARWIN_FLAGS" - CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC $BROKEN_DARWIN_CPPFLAGS" - CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC $BROKEN_DARWIN_FLAGS" - CPPFLAGS_FOR_EGLIB="$CPPFLAGS_FOR_EGLIB $BROKEN_DARWIN_CPPFLAGS" - CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB $BROKEN_DARWIN_FLAGS" - ;; - x*64-*-darwin*) - ;; - arm*-darwin*) - has_dtrace=no - ;; - esac - ;; - *-*-haiku*) - host_win32=no - CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_THREAD_SAFE" - libmono_cflags="-D_REENTRANT -D_THREAD_SAFE" - libdl= - LIBS="$LIBS -lnetwork" - need_link_unlink=yes - AC_DEFINE(PTHREAD_POINTER_ID) - libgc_threads=pthreads - use_sigposix=yes - ;; - *) - AC_MSG_WARN([*** Please add $host to configure.in checks!]) - host_win32=no - 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 - -AC_SUBST(extra_runtime_ldflags) -AM_CONDITIONAL(HOST_WIN32, test x$host_win32 = xyes) -AM_CONDITIONAL(TARGET_WIN32, test x$target_win32 = xyes) -AM_CONDITIONAL(PLATFORM_LINUX, echo x$target_os | grep -q linux) -AM_CONDITIONAL(PLATFORM_DARWIN, test x$platform_darwin = xyes) -AM_CONDITIONAL(PLATFORM_SIGPOSIX, test x$use_sigposix = xyes) -AM_CONDITIONAL(PLATFORM_ANDROID, test x$platform_android = xyes) - -AC_CHECK_TOOL(CC, gcc, gcc) -AC_PROG_CC -AC_CHECK_TOOL(CXX, g++, g++) -AC_PROG_CXX -AM_PROG_AS -AC_PROG_INSTALL -AC_PROG_AWK -AM_PROG_CC_C_O -dnl We should use AM_PROG_AS, but it's not available on automake/aclocal 1.4 -: ${CCAS='$(CC)'} -# Set ASFLAGS if not already set. -: ${CCASFLAGS='$(CFLAGS)'} -AC_SUBST(CCAS) -AC_SUBST(CCASFLAGS) - -# AC_PROG_CXX helpfully sets CXX to g++ even if no c++ compiler is found so check -# GXX instead. See http://lists.gnu.org/archive/html/bug-autoconf/2002-04/msg00056.html -if test "x$CXX" = "xg++"; then - if test "x$GXX" != "xyes"; then - # automake/libtool is so broken, it requires g++ even if the c++ sources - # are inside automake conditionals - AC_MSG_ERROR([You need to install g++]) - fi -fi - -dnl may require a specific autoconf version -dnl AC_PROG_CC_FOR_BUILD -dnl CC_FOR_BUILD not automatically detected -CC_FOR_BUILD=$CC -CFLAGS_FOR_BUILD=$CFLAGS -BUILD_EXEEXT= -if test "x$cross_compiling" = "xyes"; then - CC_FOR_BUILD=cc - CFLAGS_FOR_BUILD= - 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$host_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 -AM_PROG_LIBTOOL -# Use dolt (http://dolt.freedesktop.org/) instead of libtool for building. -DOLT - -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 - no_version_script=yes -fi - -AM_ICONV() - -AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes) - -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 sys/uio.h sys/param.h libproc.h) -AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h sys/inotify.h) -AC_CHECK_HEADERS([linux/netlink.h linux/rtnetlink.h], - [], [], [#include - #include - #include ]) - -AC_CHECK_HEADERS(sys/user.h, [], [], -[ -#ifdef HAVE_SYS_PARAM_H -# include -#endif -]) - -AC_CHECK_HEADER(zlib.h, [have_zlib=yes], [have_zlib=no]) -if test x$have_zlib = xyes; then - AC_TRY_COMPILE([#include ], [ - #if defined(ZLIB_VERNUM) && (ZLIB_VERNUM >= 0x1230) - return 0; - #else - #error No good zlib found - #endif - ],[ - AC_MSG_RESULT(Using system zlib) - zlib_msg="system zlib" - AC_DEFINE(HAVE_SYS_ZLIB,1,[Have system zlib]) - ],[ - AC_MSG_RESULT(Using embedded zlib) - have_zlib=no - zlib_msg="bundled zlib" - ]) -fi - -AM_CONDITIONAL(HAVE_ZLIB, test x$have_zlib = xyes) -AC_DEFINE(HAVE_ZLIB,1,[Have system zlib]) - -# for mono/metadata/debug-symfile.c -AC_CHECK_HEADERS(elf.h) - -# 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) -AC_MSG_CHECKING(for isinf) -AC_TRY_LINK([#include ], [ - int f = isinf (1); -], [ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_ISINF, 1, [isinf available]) -], [ - # We'll have to use signals - AC_MSG_RESULT(no) -]) -# mingw -AC_CHECK_FUNCS(_finite, , AC_MSG_CHECKING(for _finite in math.h) - AC_TRY_LINK([#include ], - [ _finite(0.0); ], - AC_DEFINE(HAVE__FINITE, 1, [Have _finite in -lm]) AC_MSG_RESULT(yes), - AC_MSG_RESULT(no))) - -# for Linux statfs support -AC_CHECK_HEADERS(linux/magic.h) - -# not 64 bit clean in cross-compile -AC_CHECK_SIZEOF(void *, 4) - -AC_CACHE_CHECK([for clang], - mono_cv_clang,[ - AC_TRY_COMPILE([], [ - #ifdef __clang__ - #else - #error "FAILED" - #endif - return 0; - ], - [mono_cv_clang=yes], - [mono_cv_clang=no], - []) -]) - -WARN='' -if test x"$GCC" = xyes; then - WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value' - # The runtime code does not respect ANSI C strict aliasing rules - CFLAGS="$CFLAGS -fno-strict-aliasing" - - # We rely on signed overflow to behave - CFLAGS="$CFLAGS -fwrapv" - - ORIG_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -Wdeclaration-after-statement" - AC_MSG_CHECKING(for -Wdeclaration-after-statement option to gcc) - AC_TRY_COMPILE([],[ - return 0; - ], [ - AC_MSG_RESULT(yes) - ], [ - AC_MSG_RESULT(no) - CFLAGS=$ORIG_CFLAGS - ]) - - ORIG_CFLAGS=$CFLAGS - # Check for the normal version, since gcc ignores unknown -Wno options - CFLAGS="$CFLAGS -Wunused-but-set-variable -Werror" - AC_MSG_CHECKING(for -Wno-unused-but-set-variable option to gcc) - AC_TRY_COMPILE([],[ - return 0; - ], [ - AC_MSG_RESULT(yes) - CFLAGS="$ORIG_CFLAGS -Wno-unused-but-set-variable" - ], [ - AC_MSG_RESULT(no) - CFLAGS=$ORIG_CFLAGS - ]) - - if test "x$mono_cv_clang" = "xyes"; then - # https://bugzilla.samba.org/show_bug.cgi?id=8118 - WARN="$WARN -Qunused-arguments" - WARN="$WARN -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign" - fi -else - # The Sun Forte compiler complains about inline functions that access static variables - # so disable all inlining. - case "$host" in - *-*-solaris*) - CFLAGS="$CFLAGS -Dinline=" - ;; - esac -fi -CFLAGS="$CFLAGS -g $WARN" -CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -g" - -# Where's the 'mcs' source tree? -if test -d $srcdir/mcs; then - mcsdir=mcs -else - mcsdir=../mcs -fi - -AC_ARG_WITH(mcs-path, [ --with-mcs-path=/path/to/mcs Specify an alternate mcs source tree], - if test x$with_mcs_path != "x" -a -d $with_mcs_path ; then - mcsdir=$with_mcs_path - fi -) - -AC_ARG_WITH(jumptables, [ --with-jumptables=yes,no enable/disable support for jumptables (ARM-only for now) (defaults to no)],[],[with_jumptables=no]) - -# -# A sanity check to catch cases where the package was unpacked -# with an ancient tar program (Solaris) -# -AC_ARG_ENABLE(solaris-tar-check, -[ --disable-solaris-tar-check disable solaris tar check], - do_solaris_tar_check=no, do_solaris_tar_check=yes) - -if test x"$do_solaris_tar_check" = xyes -a x"$enable_solaris_tar_check" = xyes; then - AC_MSG_CHECKING(integrity of package) - if test -f $mcsdir/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapTypeMapper.cs - then - AC_MSG_RESULT(ok) - else - 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]) - fi -fi - -if test "x$with_mcs_path" != "x"; then -mcs_topdir=$(cd "$mcsdir" && pwd) -mcs_topdir_from_srcdir=$mcs_topdir -else -mcs_topdir=$(cd "$srcdir/$mcsdir" && pwd) -mcs_topdir_from_srcdir='$(top_builddir)'/$mcsdir -fi - -# Convert mcs_topdir* paths to Windows syntax. -if test x$cross_compiling$host_win32 = xnoyes; then - mcs_topdir=$(cygpath -m $mcs_topdir) - case $mcs_topdir_from_srcdir in - /cygdrive/*) - mcs_topdir_from_srcdir=$(cygpath -m $mcs_topdir_from_srcdir) - ;; - esac -fi - -AC_SUBST([mcs_topdir]) -AC_SUBST([mcs_topdir_from_srcdir]) - -# Where's the 'olive' source tree? -if test -d $srcdir/olive; then - olivedir=olive -else - olivedir=../olive -fi - -if test -d $srcdir/$olivedir; then -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-nls=no to configure.]) - fi -fi - -AC_ARG_WITH([libgdiplus], - [ --with-libgdiplus=installed|sibling| Override the libgdiplus used for System.Drawing tests (defaults to installed)], - [], [with_libgdiplus=installed]) - -case $with_libgdiplus in -no|installed) libgdiplus_loc= ;; -yes|sibling) libgdiplus_loc=`cd ../libgdiplus && pwd`/src/libgdiplus.la ;; -/*) libgdiplus_loc=$with_libgdiplus ;; -*) libgdiplus_loc=`pwd`/$with_libgdiplus ;; -esac -AC_SUBST([libgdiplus_loc]) - -AC_PATH_PROG(PKG_CONFIG, pkg-config, no) - -pkg_config_path= -AC_ARG_WITH(crosspkgdir, [ --with-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 - pkg_config_path=$PKG_CONFIG_PATH - fi - else - pkg_config_path=$with_crosspkgdir - PKG_CONFIG_PATH=$pkg_config_path - export PKG_CONFIG_PATH - fi -) - -ac_configure_args="$ac_configure_args \"CPPFLAGS_FOR_EGLIB=$EGLIB_CPPFLAGS\" \"CFLAGS_FOR_EGLIB=$CFLAGS_FOR_EGLIB\"" -AC_CONFIG_SUBDIRS(eglib) - -GLIB_CFLAGS='-I$(top_srcdir)/eglib/src -I$(top_builddir)/eglib/src' -GLIB_LIBS='-L$(top_builddir)/eglib/src -leglib -lm' -BUILD_GLIB_CFLAGS="$GLIB_CFLAGS" -BUILD_GLIB_LIBS="$GLIB_LIBS" -GMODULE_CFLAGS="$GLIB_CFLAGS" -GMODULE_LIBS="$GLIB_LIBS" - -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_ARG_WITH(gc, [ --with-gc=boehm,included,none Controls the Boehm GC config, default=included],[gc=$with_gc],[gc=$gc_default]) - -# Enable support for fast thread-local storage -# Some systems have broken support, so we allow to disable it. -AC_ARG_WITH(tls, [ --with-tls=__thread,pthread select Thread Local Storage implementation (defaults to __thread)],[],[with_tls=__thread]) - -# Enable support for using sigaltstack for SIGSEGV and stack overflow handling -# This does not work on some platforms (bug #55253) -AC_ARG_WITH(sigaltstack, [ --with-sigaltstack=yes,no enable/disable support for sigaltstack (defaults to yes)],[],[with_sigaltstack=yes]) - -AC_ARG_WITH(static_mono, [ --with-static_mono=yes,no link mono statically to libmono (faster) (defaults to yes)],[],[with_static_mono=yes]) -AC_ARG_WITH(shared_mono, [ --with-shared_mono=yes,no build a shared libmono library (defaults to yes)],[],[with_shared_mono=yes]) -# Same as --with-shared_mono=no -AC_ARG_ENABLE(libraries, [ --disable-libraries disable the build of libmono], enable_libraries=$enableval, enable_libraries=yes) - -if test "x$enable_static" = "xno"; then - with_static_mono=no -fi - -if test "x$enable_shared" = "xno"; then - with_shared_mono=no -fi - -if test "x$enable_libraries" = "xno"; then - with_shared_mono=no -fi - -AM_CONDITIONAL(DISABLE_LIBRARIES, test x$enable_libraries = xno) - -case $host in -*nacl* ) with_shared_mono=yes;; -esac - -if test "x$host_win32" = "xyes"; then - # Boehm GC requires the runtime to be in its own dll - with_static_mono=no -fi - -AM_CONDITIONAL(STATIC_MONO, test x$with_static_mono != xno) -AM_CONDITIONAL(SHARED_MONO, test x$with_shared_mono != xno) -AC_ARG_ENABLE(mcs-build, [ --disable-mcs-build disable the build of the mcs directory], try_mcs_build=$enableval, enable_mcs_build=yes) - -AC_ARG_WITH(xen_opt, [ --with-xen_opt=yes,no Enable Xen-specific behaviour (defaults to yes)],[],[with_xen_opt=yes]) -if test "x$with_xen_opt" = "xyes" -a "x$mono_cv_clang" = "xno"; then - AC_DEFINE(MONO_XEN_OPT, 1, [Xen-specific behaviour]) - ORIG_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -mno-tls-direct-seg-refs" - AC_MSG_CHECKING(for -mno-tls-direct-seg-refs option to gcc) - AC_TRY_COMPILE([], [ - return 0; - ], [ - AC_MSG_RESULT(yes) - # Pass it to libgc as well - CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -mno-tls-direct-seg-refs" - ], [ - AC_MSG_RESULT(no) - CFLAGS=$ORIG_CFLAGS - ]) -fi - -AC_ARG_ENABLE(small-config, [ --enable-small-config Enable tweaks to reduce requirements (and capabilities)], enable_small_config=$enableval, enable_small_config=no) - -if test x$enable_small_config = xyes; then - AC_DEFINE(MONO_SMALL_CONFIG,1,[Reduce runtime requirements (and capabilities)]) - CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DSMALL_CONFIG" -fi - -AC_ARG_ENABLE(system-aot, [ --enable-system-aot Enable the Ahead-Of-Time compilation of system assemblies during the build (on by default on some platforms)], enable_system_aot=$enableval, enable_system_aot=default) - -DISABLED_FEATURES=none - -AC_ARG_ENABLE(minimal, [ --enable-minimal=LIST drop support for LIST subsystems. - LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug, appdomains, verifier, - reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, perfcounters, normalization, assembly_remapping, shared_perfcounters, remoting, - security, sgen_remset, sgen_marksweep_par, sgen_marksweep_fixed, sgen_marksweep_fixed_par, sgen_copying.], -[ - for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do - eval "mono_feature_disable_$feature='yes'" - done - DISABLED_FEATURES=$enable_minimal - 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_COMPILER, 1, [Disable AOT Compiler]) - AC_MSG_NOTICE([Disabled AOT compiler]) -fi - -if test "x$mono_feature_disable_profiler" = "xyes"; then - AC_DEFINE(DISABLE_PROFILER, 1, [Disable default profiler support]) - AC_MSG_NOTICE([Disabled support for the profiler]) -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]) - AC_MSG_NOTICE([Disabled support for decimal]) -fi - -if test "x$mono_feature_disable_pinvoke" = "xyes"; then - AC_DEFINE(DISABLE_PINVOKE, 1, [Disable P/Invoke support]) - AC_MSG_NOTICE([Disabled support for P/Invoke]) -fi - -if test "x$mono_feature_disable_debug" = "xyes"; then - AC_DEFINE(DISABLE_DEBUG, 1, [Disable runtime debugging support]) - AC_MSG_NOTICE([Disabled support for runtime debugging]) -fi - -if test "x$mono_feature_disable_reflection_emit" = "xyes"; then - AC_DEFINE(DISABLE_REFLECTION_EMIT, 1, [Disable reflection emit support]) - mono_feature_disable_reflection_emit_save=yes - AC_MSG_NOTICE([Disabled support for Reflection.Emit]) -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]) - AC_MSG_NOTICE([Disabled support for Reflection.Emit.Save]) -fi - -if test "x$mono_feature_disable_large_code" = "xyes"; then - AC_DEFINE(DISABLE_LARGE_CODE, 1, [Disable support for huge assemblies]) - AC_MSG_NOTICE([Disabled support for large assemblies]) -fi - -if test "x$mono_feature_disable_logging" = "xyes"; then - AC_DEFINE(DISABLE_LOGGING, 1, [Disable support debug logging]) - AC_MSG_NOTICE([Disabled support for logging]) -fi - -if test "x$mono_feature_disable_com" = "xyes"; then - AC_DEFINE(DISABLE_COM, 1, [Disable COM support]) - AC_MSG_NOTICE([Disabled COM support]) -fi - -if test "x$mono_feature_disable_ssa" = "xyes"; then - AC_DEFINE(DISABLE_SSA, 1, [Disable advanced SSA JIT optimizations]) - AC_MSG_NOTICE([Disabled SSA JIT optimizations]) -fi - -if test "x$mono_feature_disable_generics" = "xyes"; then - AC_DEFINE(DISABLE_GENERICS, 1, [Disable generics support]) - AC_MSG_NOTICE([Disabled Generics Support]) -fi - -if test "x$mono_feature_disable_shadowcopy" = "xyes"; then - AC_DEFINE(DISABLE_SHADOW_COPY, 1, [Disable Shadow Copy for AppDomains]) - AC_MSG_NOTICE([Disabled Shadow copy for AppDomains]) -fi - -if test "x$mono_feature_disable_portability" = "xyes"; then - AC_DEFINE(DISABLE_PORTABILITY, 1, [Disables the IO portability layer]) - AC_MSG_NOTICE([Disabled IO Portability layer]) -fi - -if test "x$mono_feature_disable_attach" = "xyes"; then - AC_DEFINE(DISABLE_ATTACH, 1, [Disable agent attach support]) - AC_MSG_NOTICE([Disabled agent attach]) -fi - -if test "x$mono_feature_disable_full_messages" = "xyes"; then - AC_DEFINE(DISABLE_FULL_MESSAGES, 1, [Disables building in the full table of WAPI messages]) - AC_MSG_NOTICE([Disabled full messages for Win32 errors, only core message strings shipped]) -fi - -if test "x$mono_feature_disable_verifier" = "xyes"; then - AC_DEFINE(DISABLE_VERIFIER, 1, [Disables the verifier]) - AC_MSG_NOTICE([Disabled the metadata and IL verifiers]) -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.]) - AC_MSG_NOTICE([Disabled the JIT engine, only full AOT will be supported]) -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.]) - AC_MSG_NOTICE([Disabled SIMD support]) -fi - -if test "x$mono_feature_disable_soft_debug" = "xyes"; then - AC_DEFINE(DISABLE_SOFT_DEBUG, 1, [Disable Soft Debugger Agent.]) - AC_MSG_NOTICE([Disabled Soft Debugger.]) -fi - -if test "x$mono_feature_disable_perfcounters" = "xyes"; then - AC_DEFINE(DISABLE_PERFCOUNTERS, 1, [Disable Performance Counters.]) - AC_MSG_NOTICE([Disabled Performance Counters.]) -fi -if test "x$mono_feature_disable_normalization" = "xyes"; then - AC_DEFINE(DISABLE_NORMALIZATION, 1, [Disable String normalization support.]) - AC_MSG_NOTICE([Disabled String normalization support.]) -fi - -if test "x$mono_feature_disable_assembly_remapping" = "xyes"; then - AC_DEFINE(DISABLE_ASSEMBLY_REMAPPING, 1, [Disable assembly remapping.]) - AC_MSG_NOTICE([Disabled Assembly remapping.]) -fi - -if test "x$mono_feature_disable_shared_perfcounters" = "xyes"; then - AC_DEFINE(DISABLE_SHARED_PERFCOUNTERS, 1, [Disable shared perfcounters.]) - AC_MSG_NOTICE([Disabled Shared perfcounters.]) -fi - -if test "x$mono_feature_disable_appdomains" = "xyes"; then - AC_DEFINE(DISABLE_APPDOMAINS, 1, [Disable support for multiple appdomains.]) - AC_MSG_NOTICE([Disabled support for multiple appdomains.]) -fi - -if test "x$mono_feature_disable_remoting" = "xyes"; then - AC_DEFINE(DISABLE_REMOTING, 1, [Disable remoting support (This disables type proxies and make com non-functional)]) - AC_MSG_NOTICE([Disabled remoting]) -fi - -if test "x$mono_feature_disable_security" = "xyes"; then - AC_DEFINE(DISABLE_SECURITY, 1, [Disable CAS/CoreCLR security]) - AC_MSG_NOTICE([Disabled CAS/CoreCLR security manager (used e.g. for Moonlight)]) -fi - -if test "x$mono_feature_disable_sgen_remset" = "xyes"; then - AC_DEFINE(DISABLE_SGEN_REMSET, 1, [Disable wbarrier=remset support in SGEN.]) - AC_MSG_NOTICE([Disabled wbarrier=remset support in SGEN.]) -fi - -if test "x$mono_feature_disable_sgen_marksweep_par" = "xyes"; then - AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_PAR, 1, [Disable major=marksweep-par support in SGEN.]) - AC_MSG_NOTICE([Disabled major=marksweep-par support in SGEN.]) -fi - -if test "x$mono_feature_disable_sgen_marksweep_fixed" = "xyes"; then - AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_FIXED, 1, [Disable major=marksweep-fixed support in SGEN.]) - AC_MSG_NOTICE([Disabled major=marksweep-fixed support in SGEN.]) -fi - -if test "x$mono_feature_disable_sgen_marksweep_fixed_par" = "xyes"; then - AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_FIXED_PAR, 1, [Disable major=marksweep-fixed-par support in SGEN.]) - AC_MSG_NOTICE([Disabled major=marksweep-fixed-par support in SGEN.]) -fi - -if test "x$mono_feature_disable_sgen_copying" = "xyes"; then - AC_DEFINE(DISABLE_SGEN_MAJOR_COPYING, 1, [Disable major=copying support in SGEN.]) - AC_MSG_NOTICE([Disabled major=copying support in SGEN.]) -fi - -AC_ARG_ENABLE(executables, [ --disable-executables disable the build of the runtime executables], enable_executables=$enableval, enable_executables=yes) -AM_CONDITIONAL(DISABLE_EXECUTABLES, test x$enable_executables = xno) - -has_extension_module=no -AC_ARG_ENABLE(extension-module, [ --enable-extension-module=LIST enable the core-extensions from LIST], -[ - for extension in `echo "$enable_extension_module" | sed -e "s/,/ /g"`; do - if test x$extension = xdefault ; then - has_extension_module=yes; - fi - done - if test x$enable_extension_module = xyes; then - has_extension_module=yes; - fi -], []) - -AM_CONDITIONAL([HAS_EXTENSION_MODULE], [test x$has_extension_module != xno]) - -if test x$has_extension_module != xno ; then - AC_DEFINE([ENABLE_EXTENSION_MODULE], 1, [Extension module enabled]) - AC_MSG_NOTICE([Enabling mono extension module.]) -fi - -AC_ARG_ENABLE(gsharing, [ --enable-gsharing Enable gsharing], enable_gsharing=$enableval, enable_gsharing=no) -if test x$enable_gsharing = xyes; then - AC_DEFINE(ENABLE_GSHAREDVT,1,[Gsharing]) -fi - -AC_ARG_ENABLE(native-types, [ --enable-native-types Enable native types], enable_native_types=$enableval, enable_native_types=no) -if test x$enable_native_types = xyes; then - AC_DEFINE(MONO_NATIVE_TYPES,1,[native types]) -fi - -AC_MSG_CHECKING(for visibility __attribute__) -AC_COMPILE_IFELSE([ - AC_LANG_SOURCE([[ - void __attribute__ ((visibility ("hidden"))) doit (void) {} - int main () { doit (); return 0; } - ]]) -], [ - have_visibility_hidden=yes - AC_MSG_RESULT(yes) -], [ - have_visibility_hidden=no - AC_MSG_RESULT(no) -]) - -AC_MSG_CHECKING(for deprecated __attribute__) -AC_TRY_COMPILE([ - int doit (void) __attribute__ ((deprecated)); - int doit (void) { return 0; } -], [ - return 0; -], [ - have_deprecated=yes - AC_MSG_RESULT(yes) -], [ - have_deprecated=no - AC_MSG_RESULT(no) -]) - -AC_ARG_ENABLE(parallel-mark, [ --enable-parallel-mark Enables GC Parallel Marking], enable_parallel_mark=$enableval, enable_parallel_mark=$parallel_mark) -if test x$enable_parallel_mark = xyes; then - libgc_configure_args="$libgc_configure_args --enable-parallel-mark" -fi - -AC_ARG_ENABLE(boehm, [ --disable-boehm Disable the Boehm GC.], support_boehm=$enableval,support_boehm=${support_boehm:-yes}) -AM_CONDITIONAL(SUPPORT_BOEHM, test x$support_boehm = xyes) - -dnl -dnl Boehm GC configuration -dnl -LIBGC_CPPFLAGS= -LIBGC_LIBS= -LIBGC_STATIC_LIBS= -libgc_dir= -case "x$gc" in - xboehm|xbohem|xyes) - AC_CHECK_HEADERS(gc.h gc/gc.h, gc_headers=yes) - AC_CHECK_LIB(gc, GC_malloc, 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-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 - - LIBGC_LIBS="-lgc $libdl" - LIBGC_STATIC_LIBS="$LIBGC_LIBS" - libmono_ldflags="$libmono_ldflags -lgc" - BOEHM_DEFINES="-DHAVE_BOEHM_GC" - - # AC_CHECK_FUNCS does not work for some reason... - AC_CHECK_LIB(gc, GC_gcj_malloc, found_gcj_malloc="yes",,$libdl) - if test "x$found_gcj_malloc" = "xyes"; then - BOEHM_DEFINES="-DHAVE_GC_GCJ_MALLOC $BOEHM_DEFINES" - AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "System Boehm (with typed GC)", [GC description]) - gc_msg="System Boehm with typed GC" - else - AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "System Boehm (no typed GC)", [GC description]) - gc_msg="System Boehm (without typed GC)" - fi - AC_CHECK_LIB(gc, GC_enable, found_gc_enable="yes",,$libdl) - if test "x$found_gc_enable" = "xyes"; then - BOEHM_DEFINES="-DHAVE_GC_ENABLE $BOEHM_DEFINES" - fi - - # check whether we need to explicitly allow - # thread registering - AC_CHECK_LIB(gc, GC_allow_register_threads, found_allow_register_threads="yes",,$libdl) - if test "x$found_allow_register_threads" = "xyes"; then - AC_DEFINE(HAVE_GC_ALLOW_REGISTER_THREADS, 1, [GC requires thread registration]) - fi - - ;; - - xincluded) - use_included_gc=yes - libgc_dir=libgc - - LIBGC_CPPFLAGS='-I$(top_srcdir)/libgc/include' - LIBGC_LIBS='$(top_builddir)/libgc/libmonogc.la' - LIBGC_STATIC_LIBS='$(top_builddir)/libgc/libmonogc-static.la' - - BOEHM_DEFINES="-DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE" - - if test x$target_win32 = xyes; then - BOEHM_DEFINES="$BOEHM_DEFINES -DGC_NOT_DLL" - CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DGC_BUILD -DGC_NOT_DLL" - fi - - gc_msg="bundled Boehm GC with typed GC" - if test x$enable_parallel_mark = xyes; then - AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC and Parallel Mark)", [GC description]) - gc_msg="$gc_msg and parallel mark" - else - AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC)", [GC description]) - fi - ;; - - xsgen) - AC_MSG_WARN("Use --with-sgen instead, --with-gc= controls Boehm configuration") - ;; - - xnone) - AC_MSG_WARN("Compiling mono without GC.") - AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "none", [GC description]) - AC_DEFINE(HAVE_NULL_GC,1,[No GC support.]) - ;; - *) - AC_MSG_ERROR([Invalid argument to --with-gc.]) - ;; -esac - -AC_ARG_WITH(large-heap, [ --with-large-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 - CPPFLAGS="$CPPFLAGS -DLARGE_CONFIG" -fi - -AM_CONDITIONAL(INCLUDED_LIBGC, test x$use_included_gc = xyes) -AC_SUBST(LIBGC_CPPFLAGS) -AC_SUBST(LIBGC_LIBS) -AC_SUBST(LIBGC_STATIC_LIBS) -AC_SUBST(libgc_dir) -AC_SUBST(BOEHM_DEFINES) - -dnl -dnl End of libgc checks -dnl - -dnl ************************************* -dnl *** Checks for zero length arrays *** -dnl ************************************* -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_LEN_ARRAY, 0, [Length of zero length arrays]) -], [ - AC_MSG_RESULT(no) - AC_DEFINE_UNQUOTED(MONO_ZERO_LEN_ARRAY, 1, [Length of zero length arrays]) -]) - -AC_CHECK_HEADERS(nacl/nacl_dyncode.h) - -if test x$target_win32 = xno; then - - dnl hires monotonic clock support - AC_SEARCH_LIBS(clock_gettime, rt) - - dnl dynamic loader support - AC_CHECK_FUNC(dlopen, DL_LIB="", - AC_CHECK_LIB(dl, dlopen, DL_LIB="-ldl", dl_support=no) - ) - if test x$dl_support = xno; then - AC_MSG_WARN([No dynamic loading support available]) - else - LIBS="$LIBS $DL_LIB" - AC_DEFINE(HAVE_DL_LOADER,1,[dlopen-based dynamic loader available]) - dnl from glib's configure.in - AC_CACHE_CHECK([for preceeding underscore in symbols], - mono_cv_uscore,[ - AC_TRY_RUN([#include - int mono_underscore_test (void) { return 42; } - int main() { - void *f1 = (void*)0, *f2 = (void*)0, *handle; - handle = dlopen ((void*)0, 0); - if (handle) { - f1 = dlsym (handle, "mono_underscore_test"); - f2 = dlsym (handle, "_mono_underscore_test"); - } return (!f2 || f1); - }], - [mono_cv_uscore=yes], - [mono_cv_uscore=no], - []) - ]) - if test "x$mono_cv_uscore" = "xyes"; then - MONO_DL_NEED_USCORE=1 - else - MONO_DL_NEED_USCORE=0 - fi - AC_SUBST(MONO_DL_NEED_USCORE) - AC_CHECK_FUNC(dlerror) - fi - - dnl ****************************************************************** - dnl *** Checks for the IKVM JNI interface library *** - dnl ****************************************************************** - AC_ARG_WITH(ikvm-native, [ --with-ikvm-native=yes,no build the IKVM JNI interface library (defaults to yes)],[with_ikvm_native=$withval],[with_ikvm_native=$ikvm_native]) - - ikvm_native_dir= - if test x$with_ikvm_native = xyes; then - ikvm_native_dir=ikvm-native - jdk_headers_found="IKVM Native" - fi - - AC_SUBST(ikvm_native_dir) - - AC_CHECK_HEADERS(execinfo.h) - - AC_CHECK_HEADERS(sys/auxv.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(dl_iterate_phdr) - AC_CHECK_FUNCS(dladdr) - AC_CHECK_FUNCS(sysconf) - - AC_CHECK_FUNCS(sched_setaffinity) - AC_CHECK_FUNCS(sched_getcpu) - - dnl **************************************************************** - dnl *** Check for sched_setaffinity from glibc versions before *** - dnl *** 2.3.4. The older versions of the function only take 2 *** - dnl *** parameters, not 3. *** - dnl *** *** - dnl *** Because the interface change was not made in a minor *** - dnl *** version rev, the __GLIBC__ and __GLIBC_MINOR__ macros *** - dnl *** won't always indicate the interface sched_affinity has. *** - dnl **************************************************************** - AC_MSG_CHECKING(for sched_setaffinity from glibc < 2.3.4) - AC_TRY_COMPILE([#include ], [ - int mask = 1; - sched_setaffinity(0, &mask); - return 0; - ], [ - # Yes, we have it... - AC_MSG_RESULT(yes) - AC_DEFINE(GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY, 1, [Have GLIBC_BEFORE_2_3_4_SCHED_SETAFFINITY]) - ], [ - # We have the new, three-parameter version - AC_MSG_RESULT(no) - ]) - - - dnl ****************************************************************** - dnl *** Check for large file support *** - dnl *** (If we were using autoconf 2.50 we'd use AC_SYS_LARGEFILE) *** - dnl ****************************************************************** - - # 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 - large_offt=no - AC_DEFUN([LARGE_FILES], [ - large_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $1" - AC_TRY_COMPILE([ - #include - #include - ], [ - /* Lifted this compile time assert method from: http://www.jaggersoft.com/pubs/CVu11_3.html */ - #define COMPILE_TIME_ASSERT(pred) \ - switch(0){case 0:case pred:;} - COMPILE_TIME_ASSERT(sizeof(off_t) * CHAR_BIT == 64); - ], [ - AC_MSG_RESULT(ok) - AC_DEFINE(HAVE_LARGE_FILE_SUPPORT, 1, [Have large file support]) - large_CPPFLAGS="$large_CPPFLAGS $1" - large_offt=yes - ], [ - AC_MSG_RESULT(no) - ]) - 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 _FILE_OFFSET_BITS=64 gives 64 bit off_t) - LARGE_FILES("-D_FILE_OFFSET_BITS=64") - fi - if test $large_offt = no; then - AC_MSG_WARN([No 64 bit file size support available]) - fi - - dnl ***************************** - dnl *** Checks for libsocket *** - dnl ***************************** - AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket") - - case "$host" in - *-*-*freebsd*) - dnl ***************************** - dnl *** Checks for libinotify *** - dnl ***************************** - AC_CHECK_LIB(inotify, inotify_init, LIBS="$LIBS -linotify") - esac - - dnl ******************************* - dnl *** Checks for MSG_NOSIGNAL *** - dnl ******************************* - AC_MSG_CHECKING(for MSG_NOSIGNAL) - AC_TRY_COMPILE([#include ], [ - 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) - ]) - - dnl ***************************** - dnl *** Checks for IPPROTO_IP *** - dnl ***************************** - AC_MSG_CHECKING(for IPPROTO_IP) - AC_TRY_COMPILE([#include ], [ - int level = IPPROTO_IP; - ], [ - # Yes, we have it... - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IPPROTO_IP, 1, [Have IPPROTO_IP]) - ], [ - # We'll have to use getprotobyname - AC_MSG_RESULT(no) - ]) - - dnl ******************************* - dnl *** Checks for IPPROTO_IPV6 *** - dnl ******************************* - AC_MSG_CHECKING(for IPPROTO_IPV6) - AC_TRY_COMPILE([#include ], [ - int level = IPPROTO_IPV6; - ], [ - # Yes, we have it... - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IPPROTO_IPV6, 1, [Have IPPROTO_IPV6]) - ], [ - # We'll have to use getprotobyname - AC_MSG_RESULT(no) - ]) - - dnl ****************************** - dnl *** Checks for IPPROTO_TCP *** - dnl ****************************** - AC_MSG_CHECKING(for IPPROTO_TCP) - AC_TRY_COMPILE([#include ], [ - int level = IPPROTO_TCP; - ], [ - # Yes, we have it... - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IPPROTO_TCP, 1, [Have IPPROTO_TCP]) - ], [ - # We'll have to use getprotobyname - AC_MSG_RESULT(no) - ]) - - dnl ***************************** - dnl *** Checks for SOL_IP *** - dnl ***************************** - AC_MSG_CHECKING(for SOL_IP) - AC_TRY_COMPILE([#include ], [ - 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) - ]) - - dnl ***************************** - dnl *** Checks for SOL_IPV6 *** - dnl ***************************** - AC_MSG_CHECKING(for SOL_IPV6) - AC_TRY_COMPILE([#include ], [ - 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) - ]) - - dnl ***************************** - dnl *** Checks for SOL_TCP *** - dnl ***************************** - AC_MSG_CHECKING(for SOL_TCP) - AC_TRY_COMPILE([#include ], [ - 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) - ]) - - dnl ***************************** - dnl *** Checks for IP_PKTINFO *** - dnl ***************************** - AC_MSG_CHECKING(for IP_PKTINFO) - AC_TRY_COMPILE([#include ], [ - 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) - ]) - - dnl ***************************** - dnl *** Checks for IPV6_PKTINFO *** - dnl ***************************** - AC_MSG_CHECKING(for IPV6_PKTINFO) - AC_TRY_COMPILE([#include ], [ - 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) - ]) - - dnl ********************************** - dnl *** Checks for IP_DONTFRAG *** - dnl ********************************** - AC_MSG_CHECKING(for IP_DONTFRAG) - AC_TRY_COMPILE([#include ], [ - int level = IP_DONTFRAG; - ], [ - # Yes, we have it... - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IP_DONTFRAG, 1, [Have IP_DONTFRAG]) - ], [ - AC_MSG_RESULT(no) - ]) - - dnl ********************************** - dnl *** Checks for IP_DONTFRAGMENT *** - dnl ********************************** - AC_MSG_CHECKING(for IP_DONTFRAGMENT) - AC_TRY_COMPILE([#include ], [ - 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) - ]) - - dnl ********************************** - dnl *** Checks for IP_MTU_DISCOVER *** - dnl ********************************** - AC_MSG_CHECKING(for IP_MTU_DISCOVER) - AC_TRY_COMPILE([#include ], [ - 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) - ]) - - dnl ********************************** - dnl *** Checks for IP_PMTUDISC_DO *** - dnl ********************************** - AC_MSG_CHECKING(for IP_PMTUDISC_DO) - AC_TRY_COMPILE([#include ], [ - int level = IP_PMTUDISC_DO; - ], [ - # Yes, we have it... - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IP_PMTUDISC_DO, 1, [Have IP_PMTUDISC_DO]) - ], [ - AC_MSG_RESULT(no) - ]) - - dnl ********************************* - dnl *** Check for struct ip_mreqn *** - dnl ********************************* - AC_MSG_CHECKING(for struct ip_mreqn) - AC_TRY_COMPILE([#include ], [ - 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 ], [ - 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) - ]) - ]) - - dnl ********************************** - dnl *** Check for gethostbyname2_r *** - dnl ********************************** - AC_MSG_CHECKING(for gethostbyname2_r) - AC_TRY_LINK([#include ], [ - 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) - ]) - - dnl ***************************** - dnl *** Checks for libnsl *** - dnl ***************************** - AC_CHECK_FUNC(gethostbyaddr, , AC_CHECK_LIB(nsl, gethostbyaddr, LIBS="$LIBS -lnsl")) - - AC_CHECK_FUNCS(inet_pton inet_aton) - - dnl *********************************************** - dnl *** Checks for size of sockaddr_un.sun_path *** - dnl *********************************************** - # AC_CHECK_SIZEOF can't cope with struct members :-( - AC_MSG_CHECKING(size of sockaddr_un.sun_path) - AC_CACHE_VAL(mono_cv_sizeof_sunpath, - [AC_TRY_RUN([ - #include - #include - #include - - int main(void) { - struct sockaddr_un sock_un; - FILE *f=fopen("conftestval", "w"); - if(!f) exit(1); - fprintf(f, "%d\n", sizeof(sock_un.sun_path)); - exit(0); - } - ], mono_cv_sizeof_sunpath=`cat conftestval`, - mono_cv_sizeof_sunpath=0, - mono_cv_sizeof_sunpath=0)])dnl - AC_MSG_RESULT($mono_cv_sizeof_sunpath) - AC_DEFINE_UNQUOTED(MONO_SIZEOF_SUNPATH, $mono_cv_sizeof_sunpath, [Sizeof sock_un.sun_path]) - - dnl ***************************** - dnl *** Checks for libxnet *** - dnl ***************************** - case "${host}" in - *solaris* ) - AC_MSG_CHECKING(for Solaris XPG4 support) - if test -f /usr/lib/libxnet.so; then - CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500" - CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" - CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED=1" - LIBS="$LIBS -lxnet" - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi - - if test "$GCC" = "yes"; then - CFLAGS="$CFLAGS -Wno-char-subscripts" - fi - ;; - esac - - dnl ***************************** - dnl *** Checks for libpthread *** - dnl ***************************** -# 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, LIBS="$LIBS -pthread") - ;; - *-*-*openbsd*) - AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread") - ;; - *) - AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread") - ;; - esac - AC_CHECK_HEADERS(pthread.h) - AC_CHECK_HEADERS(pthread_np.h) - AC_CHECK_FUNCS(pthread_mutex_timedlock) - AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np pthread_setname_np) - AC_CHECK_FUNCS(pthread_kill) - AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE) - AC_TRY_COMPILE([ #include ], [ - pthread_mutexattr_t attr; - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - ], [ - AC_MSG_RESULT(ok) - ], [ - AC_MSG_RESULT(no) - AC_ERROR(Posix system lacks support for recursive mutexes) - ]) - AC_CHECK_FUNCS(pthread_attr_setstacksize) - AC_CHECK_FUNCS(pthread_attr_getstack pthread_attr_getstacksize) - AC_CHECK_FUNCS(pthread_get_stacksize_np pthread_get_stackaddr_np) - - dnl *********************************** - dnl *** Checks for signals - dnl *********************************** - AC_CHECK_HEADERS(signal.h) - AC_CHECK_FUNCS(sigaction) - - dnl *********************************** - dnl *** Checks for working __thread *** - dnl *********************************** - AC_MSG_CHECKING(for working __thread) - if test "x$with_tls" != "x__thread"; then - AC_MSG_RESULT(disabled) - elif test "x$cross_compiling" = "xyes"; then - AC_MSG_RESULT(cross compiling, assuming yes) - else - AC_TRY_RUN([ - #if defined(__APPLE__) && defined(__clang__) - #error "__thread does not currently work with clang on Mac OS X" - #endif - - #include - __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) - with_tls=pthread - ]) - fi - - dnl ************************************** - dnl *** Checks for working sigaltstack *** - dnl ************************************** - AC_MSG_CHECKING(for working sigaltstack) - if test "x$with_sigaltstack" != "xyes"; then - AC_MSG_RESULT(disabled) - elif test "x$cross_compiling" = "xyes"; then - AC_MSG_RESULT(cross compiling, assuming yes) - else - AC_TRY_RUN([ - #include - #include - #include - #include - #include - #include - #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); - } - - volatile char*__ptr = NULL; - static void * - loop (void *ignored) - { - *__ptr = 0; - return NULL; - } - - static void - child () - { - struct sigaction sa; - #ifdef __APPLE__ - stack_t sas; - #else - struct sigaltstack sas; - #endif - 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; - } - - /* x86 darwin deliver segfaults using SIGBUS */ - if (sigaction (SIGBUS, &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 < 300; ++i) { - waitpid (son, &status, WNOHANG); - if (WIFEXITED (status) && WEXITSTATUS (status) == 0) - return 0; - usleep (10000); - } - - kill (son, SIGKILL); - return 1; - } - - ], [ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_WORKING_SIGALTSTACK, 1, [Have a working sigaltstack]) - ], [ - with_sigaltstack=no - AC_MSG_RESULT(no) - ]) - fi - - dnl ******************************** - dnl *** Checks for semaphore lib *** - dnl ******************************** - # 'Real Time' functions on Solaris - # posix4 on Solaris 2.6 - # pthread (first!) on Linux - AC_SEARCH_LIBS(sem_init, pthread rt posix4) - - AC_SEARCH_LIBS(shm_open, pthread rt posix4) - AC_CHECK_FUNCS(shm_open) - - dnl ******************************** - dnl *** Checks for timezone stuff ** - dnl ******************************** - AC_CACHE_CHECK(for tm_gmtoff in struct tm, ac_cv_struct_tm_gmtoff, - AC_TRY_COMPILE([ - #include - ], [ - struct tm tm; - tm.tm_gmtoff = 1; - ], 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 - ], [ - timezone = 1; - ], 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 - - dnl ********************************* - dnl *** Checks for math functions *** - dnl ********************************* - AC_SEARCH_LIBS(sqrtf, m) - 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 ], - [ finite(0.0); ], - AC_DEFINE(HAVE_FINITE, 1, [Have finite in -lm]) 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 ], - [ isfinite(0.0); ], - AC_DEFINE(HAVE_ISFINITE, 1, [Have isfinite]) AC_MSG_RESULT(yes), - AC_MSG_RESULT(no))) - - dnl **************************************************************** - dnl *** Checks for working poll() (macosx defines it but doesn't *** - dnl *** have it in the library (duh)) *** - dnl **************************************************************** - AC_CHECK_FUNCS(poll) - - dnl ************************* - dnl *** Check for signbit *** - dnl ************************* - AC_MSG_CHECKING(for signbit) - AC_TRY_LINK([#include ], [ - int s = signbit(1.0); - ], [ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SIGNBIT, 1, [Have signbit]) - ], [ - AC_MSG_RESULT(no) - ]) - - dnl ********************************** - dnl *** epoll *** - dnl ********************************** - if test "x$ac_cv_header_nacl_nacl_dyncode_h" = "xno"; then - AC_CHECK_HEADERS(sys/epoll.h) - haveepoll=no - AC_CHECK_FUNCS(epoll_ctl, [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 - fi - - havekqueue=no - - AC_CHECK_HEADERS(sys/event.h) - AC_CHECK_FUNCS(kqueue, [havekqueue=yes], ) - - dnl ************************************** - dnl * Darwin has a race that prevents us from using reliably: - dnl * http://lists.apple.com/archives/darwin-dev/2011/Jun/msg00016.html - dnl * Since kqueue is mostly used for scaling large web servers, - dnl * and very few folks run Mono on large web servers on OSX, falling - dnl * back - dnl ************************************** - if test "x$havekqueue" = "xyes" -a "x$ac_cv_header_sys_event_h" = "xyes"; then - if test "x$platform_darwin" = "xno"; then - AC_DEFINE(USE_KQUEUE_FOR_THREADPOOL, 1, [Use kqueue for the threadpool]) - fi - fi - - dnl ****************************** - dnl *** Checks for SIOCGIFCONF *** - dnl ****************************** - AC_CHECK_HEADERS(sys/ioctl.h) - AC_CHECK_HEADERS(net/if.h, [], [], - [ - #ifdef HAVE_SYS_TYPES_H - # include - #endif - #ifdef HAVE_SYS_SOCKET_H - # include - #endif - ]) - AC_MSG_CHECKING(for ifreq) - AC_TRY_COMPILE([ - #include - #include - #include - ], [ - 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) - ]) - dnl ********************************** - dnl *** Checks for sin_len *** - dnl ********************************** - AC_MSG_CHECKING(for sockaddr_in.sin_len) - AC_TRY_COMPILE([ - #include - ], [ - 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) - ]) - dnl ********************************** - dnl *** Checks for sin6_len *** - dnl ********************************** - AC_MSG_CHECKING(for sockaddr_in6.sin6_len) - AC_TRY_COMPILE([ - #include - ], [ - 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) - ]) - dnl ********************************** - dnl *** Check for getifaddrs *** - dnl ********************************** - AC_MSG_CHECKING(for getifaddrs) - AC_TRY_LINK([ - #include - #include - #include - #include - ], [ - getifaddrs(NULL); - ], [ - # Yes, we have it... - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_GETIFADDRS, 1, [Have getifaddrs]) - ], [ - AC_MSG_RESULT(no) - ]) - dnl ********************************** - dnl *** Check for if_nametoindex *** - dnl ********************************** - AC_MSG_CHECKING(for if_nametoindex) - AC_TRY_LINK([ - #include - #include - #include - #include - ], [ - if_nametoindex(NULL); - ], [ - # Yes, we have it... - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_IF_NAMETOINDEX, 1, [Have if_nametoindex]) - ], [ - AC_MSG_RESULT(no) - ]) - - dnl ********************************** - dnl *** Checks for MonoPosixHelper *** - dnl ********************************** - AC_CHECK_HEADERS(checklist.h) - AC_CHECK_HEADERS(pathconf.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, [], [], - [ - #ifdef HAVE_SYS_PARAM_H - # include - #endif - ]) - AC_CHECK_HEADERS(sys/mount.h) - AC_CHECK_FUNCS(confstr) - AC_CHECK_FUNCS(seekdir telldir) - AC_CHECK_FUNCS(getdomainname) - AC_CHECK_FUNCS(setdomainname) - AC_CHECK_FUNCS(endgrent getgrent fgetgrent setgrent) - AC_CHECK_FUNCS(setgroups) - AC_CHECK_FUNCS(endpwent getpwent fgetpwent setpwent) - AC_CHECK_FUNCS(getfsstat) - AC_CHECK_FUNCS(lutimes futimes) - 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(gethostid sethostid) - AC_CHECK_FUNCS(sethostname) - 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_FUNCS(psignal) - AC_CHECK_FUNCS(getlogin_r) - AC_CHECK_FUNCS(lockf) - AC_CHECK_FUNCS(swab) - AC_CHECK_FUNCS(setusershell endusershell) - AC_CHECK_FUNCS(futimens utimensat) - AC_CHECK_FUNCS(fstatat mknodat readlinkat) - AC_CHECK_FUNCS(readv writev preadv pwritev) - AC_CHECK_FUNCS(setpgid) - AC_CHECK_SIZEOF(size_t) - AC_CHECK_TYPES([blksize_t], [AC_DEFINE(HAVE_BLKSIZE_T)], , - [#include - #include - #include ]) - AC_CHECK_TYPES([blkcnt_t], [AC_DEFINE(HAVE_BLKCNT_T)], , - [#include - #include - #include ]) - AC_CHECK_TYPES([suseconds_t], [AC_DEFINE(HAVE_SUSECONDS_T)], , - [#include ]) - AC_CHECK_TYPES([struct flock], [AC_DEFINE(HAVE_STRUCT_FLOCK)], , - [#include - #include ]) - AC_CHECK_TYPES([struct iovec], [AC_DEFINE(HAVE_STRUCT_IOVEC)], , - [#include ]) - AC_CHECK_TYPES([struct pollfd], [AC_DEFINE(HAVE_STRUCT_POLLFD)], , - [#include ]) - AC_CHECK_TYPES([struct stat], [AC_DEFINE(HAVE_STRUCT_STAT)], , - [#include - #include - #include ]) - AC_CHECK_TYPES([struct timespec], [AC_DEFINE(HAVE_STRUCT_TIMESPEC)], , - [#include ]) - AC_CHECK_TYPES([struct timeval], [AC_DEFINE(HAVE_STRUCT_TIMEVAL)], , - [#include - #include - #include ]) - AC_CHECK_TYPES([struct timezone], [AC_DEFINE(HAVE_STRUCT_TIMEZONE)], , - [#include ]) - AC_CHECK_TYPES([struct utimbuf], [AC_DEFINE(HAVE_STRUCT_UTIMBUF)], , - [#include - #include ]) - AC_CHECK_MEMBERS( - [struct dirent.d_off, struct dirent.d_reclen, struct dirent.d_type],,, - [#include - #include ]) - AC_CHECK_MEMBERS( - [struct passwd.pw_gecos],,, - [#include - #include ]) - AC_CHECK_MEMBERS( - [struct statfs.f_flags],,, - [#include - #include ]) - AC_CHECK_MEMBERS( - [struct stat.st_atim, struct stat.st_mtim, struct stat.st_ctim],,, - [#include - #include - #include ]) - - dnl Favour xattr through glibc, but use libattr if we have to - AC_CHECK_FUNC(lsetxattr, , - AC_CHECK_LIB(attr, lsetxattr, XATTR_LIB="-lattr",) - ) - AC_SUBST(XATTR_LIB) - - dnl kinfo_proc.kp_proc works on darwin but fails on other simil-bsds - AC_CHECK_MEMBERS( - [struct kinfo_proc.kp_proc],,, - [#include - #include - #include - #include - ]) - - dnl ********************************* - dnl *** Checks for Windows compilation *** - dnl ********************************* - AC_CHECK_HEADERS(sys/time.h) - AC_CHECK_HEADERS(sys/param.h) - AC_CHECK_HEADERS(dirent.h) - - dnl ****************************************** - dnl *** Checks for OSX and iOS compilation *** - dnl ****************************************** - AC_CHECK_HEADERS(CommonCrypto/CommonDigest.h) - - dnl ********************************* - dnl *** Check for Console 2.0 I/O *** - dnl ********************************* - AC_CHECK_HEADERS([curses.h]) - AC_CHECK_HEADERS([term.h], [], [], - [#if HAVE_CURSES_H - #include - #endif - ]) - AC_CHECK_HEADERS([termios.h]) - - dnl * This is provided in io-layer, but on windows it's only available - dnl * on xp+ - AC_DEFINE(HAVE_GETPROCESSID, 1, [Define if GetProcessId is available]) -else - dnl ********************************* - dnl *** Checks for Windows compilation *** - dnl ********************************* - AC_CHECK_HEADERS(winternl.h) - - jdk_headers_found=no - AC_CHECK_LIB(ws2_32, main, LIBS="$LIBS -lws2_32", AC_ERROR(bad mingw install?)) - AC_CHECK_LIB(psapi, main, LIBS="$LIBS -lpsapi", AC_ERROR(bad mingw install?)) - AC_CHECK_LIB(ole32, main, LIBS="$LIBS -lole32", AC_ERROR(bad mingw install?)) - AC_CHECK_LIB(winmm, main, LIBS="$LIBS -lwinmm", AC_ERROR(bad mingw install?)) - AC_CHECK_LIB(oleaut32, main, LIBS="$LIBS -loleaut32", AC_ERROR(bad mingw install?)) - AC_CHECK_LIB(advapi32, main, LIBS="$LIBS -ladvapi32", AC_ERROR(bad mingw install?)) - AC_CHECK_LIB(version, main, LIBS="$LIBS -lversion", AC_ERROR(bad mingw install?)) - - dnl ********************************* - dnl *** Check for struct ip_mreqn *** - dnl ********************************* - AC_MSG_CHECKING(for struct ip_mreqn) - AC_TRY_COMPILE([#include ], [ - 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 ], [ - 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) - AC_CHECK_DECLS(InterlockedExchange64, [], [], [[#include ]]) - AC_CHECK_DECLS(InterlockedCompareExchange64, [], [], [[#include ]]) - AC_CHECK_DECLS(InterlockedDecrement64, [], [], [[#include ]]) - AC_CHECK_DECLS(InterlockedIncrement64, [], [], [[#include ]]) - AC_CHECK_DECLS(InterlockedAdd, [], [], [[#include ]]) - AC_CHECK_DECLS(InterlockedAdd64, [], [], [[#include ]]) - AC_CHECK_DECLS(__readfsdword, [], [], [[#include ]]) -fi - -dnl socklen_t check -AC_MSG_CHECKING(for socklen_t) -AC_TRY_COMPILE([ -#include -#include -],[ - socklen_t foo; -],[ -ac_cv_c_socklen_t=yes - AC_DEFINE(HAVE_SOCKLEN_T, 1, [Have socklen_t]) - AC_MSG_RESULT(yes) -],[ - AC_MSG_RESULT(no) -]) - -AC_MSG_CHECKING(for array element initializer support) -AC_TRY_COMPILE([#include ], [ - 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, , AC_MSG_CHECKING(for trunc in math.h) - # Simply calling trunc (0.0) is no good since gcc will optimize the call away - AC_TRY_LINK([#include ], - [ static void *p = &trunc; ], - [ - AC_DEFINE(HAVE_TRUNC) - AC_MSG_RESULT(yes) - ac_cv_trunc=yes - ], - AC_MSG_RESULT(no))) - -if test "x$ac_cv_truncl" != "xyes"; then - AC_CHECK_LIB(sunmath, aintl, [ AC_DEFINE(HAVE_AINTL, 1, [Has the 'aintl' function]) LIBS="$LIBS -lsunmath"]) -fi - -AC_CHECK_FUNCS(round) -AC_CHECK_FUNCS(rint) -AC_CHECK_FUNCS(execvp) - -dnl **************************** -dnl *** Look for /dev/random *** -dnl **************************** - -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)], -try_dev_random=$enableval, try_dev_random=yes) - -AC_MSG_RESULT($try_dev_random) - -case "{$build}" in - *-openbsd*) - NAME_DEV_RANDOM="/dev/srandom" - ;; - -dnl Win32 does not have /dev/random, they have their own method... - - *-mingw*|*-*-cygwin*) - ac_cv_have_dev_random=no - ;; - -dnl Everywhere else, it's /dev/random - - *) - NAME_DEV_RANDOM="/dev/random" - ;; -esac - -AC_DEFINE_UNQUOTED(NAME_DEV_RANDOM, "$NAME_DEV_RANDOM", [Name of /dev/random]) - -dnl 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 - 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) - ac_cv_have_dev_random=no - AC_MSG_RESULT(has been disabled) -fi - -if test "x$host_win32" = "xyes"; then - AC_DEFINE(HAVE_CRYPT_RNG) -fi - -if test "x$ac_cv_have_dev_random" = "xno" \ - && test "x$host_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 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], 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 - -AC_ARG_ENABLE(bcl-opt, [ --disable-bcl-opt BCL is compiled with no optimizations (allows accurate BCL debugging)], test_bcl_opt=$enableval, test_bcl_opt=yes) - -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]) -AC_ARG_ENABLE(big-arrays, [ --enable-big-arrays Enable the allocation and indexing of arrays greater than Int32.MaxValue], enable_big_arrays=$enableval, enable_big_arrays=no) -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) - -dnl ************** -dnl *** DTRACE *** -dnl ************** - -AC_ARG_ENABLE(dtrace,[ --enable-dtrace Enable DTrace probes], enable_dtrace=$enableval, enable_dtrace=$has_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.]) - enable_dtrace=no - elif ! $DTRACE -h -s $srcdir/data/mono.d > /dev/null 2>&1; then - AC_MSG_RESULT([dtrace doesn't support -h option, dtrace support disabled.]) - enable_dtrace=no - fi -fi - -dtrace_g=no -if test "x$enable_dtrace" = "xyes"; then - AC_DEFINE(ENABLE_DTRACE, 1, [Enable DTrace probes]) - DTRACEFLAGS= - if test "x$ac_cv_sizeof_void_p" = "x8"; then - case "$host" in - powerpc-*-darwin*) - DTRACEFLAGS="-arch ppc64" - ;; - i*86-*-darwin*) - DTRACEFLAGS="-arch x86_64" - ;; - *) - DTRACEFLAGS=-64 - ;; - esac - else - case "$host" in - powerpc-*-darwin*) - DTRACEFLAGS="-arch ppc" - ;; - i*86-*-darwin*) - DTRACEFLAGS="-arch i386" - ;; - *) - DTRACEFLAGS=-32 - ;; - esac - fi - AC_SUBST(DTRACEFLAGS) - case "$host" in - *-*-solaris*) - 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]) - -dnl ************** -dnl *** NaCl *** -dnl ************** - -AC_ARG_ENABLE(nacl_codegen, [ --enable-nacl-codegen Enable Native Client code generation], enable_nacl_codegen=$enableval, enable_nacl_codegen=no) -AC_ARG_ENABLE(nacl_gc, [ --enable-nacl-gc Enable Native Client garbage collection], enable_nacl_gc=$enableval, enable_nacl_gc=no) - -AM_CONDITIONAL(NACL_CODEGEN, test x$enable_nacl_codegen != xno) - -dnl -dnl Hack to use system mono for operations in build/install not allowed in NaCl. -dnl -nacl_self_host="" -if test "x$ac_cv_header_nacl_nacl_dyncode_h" = "xyes"; then - nacl_self_host="nacl_self_host" -fi -AC_SUBST(nacl_self_host) - -if test "x$enable_nacl_codegen" = "xyes"; then - MONO_NACL_ALIGN_MASK_OFF=1 - AC_DEFINE(TARGET_NACL, 1, [...]) - AC_DEFINE(__native_client_codegen__, 1, [...]) -else - MONO_NACL_ALIGN_MASK_OFF=0 - AC_DEFINE(__default_codegen__, 1, [...]) -fi -if test "x$enable_nacl_gc" = "xyes"; then - if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then - INSTRUMENT_CFLAG="-finstrument-for-thread-suspension" - else - # Not yet implemented - INSTRUMENT_CFLAG="" - fi - CPPFLAGS="$CPPFLAGS $INSTRUMENT_CFLAG -D__native_client_gc__" -fi -AC_SUBST(MONO_NACL_ALIGN_MASK_OFF) - -dnl ************** -dnl *** LLVM *** -dnl ************** - -AC_ARG_ENABLE(llvm,[ --enable-llvm Enable the LLVM back-end], enable_llvm=$enableval, enable_llvm=no) -AC_ARG_ENABLE(loadedllvm,[ --enable-loadedllvm Load the LLVM back-end dynamically], enable_llvm=$enableval && enable_loadedllvm=$enableval, enable_loadedllvm=no) -AC_ARG_ENABLE(llvm-version-check,[ --enable-llvm-version-check Check that the LLVM matches the version expected by mono], enable_llvm_version_check=$enableval, enable_llvm_version_check=no) - -AC_ARG_WITH(llvm, [ --with-llvm= Enable the LLVM back-end], enable_llvm=yes,) - -if test "x$enable_llvm" = "xyes"; then - if test "x$with_llvm" != "x"; then - LLVM_CONFIG=$with_llvm/bin/llvm-config - if test ! -x $LLVM_CONFIG; then - AC_MSG_ERROR([LLVM executable $LLVM_CONFIG not found.]) - fi - else - AC_PATH_PROG(LLVM_CONFIG, llvm-config, no) - if test "x$LLVM_CONFIG" = "xno"; then - AC_MSG_ERROR([llvm-config not found.]) - fi - fi - - llvm_codegen="x86codegen" - case "$target" in - arm*) - llvm_codegen="armcodegen" - ;; - esac - - # The output of --cflags seems to include optimizations flags too - LLVM_CFLAGS=`$LLVM_CONFIG --cflags | sed -e 's/-O2//g' | sed -e 's/-O0//g' | sed -e 's/-fomit-frame-pointer//g' | sed -e 's/-fPIC//g'` - # LLVM is compiled with -fno-rtti, so we need this too, since our classes inherit - # from LLVM classes. - LLVM_CXXFLAGS="`$LLVM_CONFIG --cxxflags` -fno-rtti" - LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags` - # This might include empty lines - LLVM_SYSTEM_LIBS=`$LLVM_CONFIG --system-libs 2>/dev/null | grep -- -` - if test "x$host" != "x$target"; then - # No need for jit libs - LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter` - else - LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit $llvm_codegen` - fi - LLVM_LIBS="$LLVM_LIBS $LLVM_LDFLAGS $LLVM_SYSTEM_LIBS -lstdc++" - - expected_llvm_version="3.4svn-mono-mono/e656cac" - - # Should be something like '2.6' or '2.7svn' - llvm_version=`$LLVM_CONFIG --version` - major_version=`echo $llvm_version | cut -c 1` - minor_version=`echo $llvm_version | cut -c 3` - llvm_api_version=`$LLVM_CONFIG --mono-api-version 2>/dev/null` - AC_MSG_CHECKING(LLVM version) - AC_MSG_RESULT($llvm_version) - if echo $llvm_version | grep -q 'mono'; then - if test "x$enable_llvm_version_check" == "xyes"; then - if test "$llvm_version" != "$expected_llvm_version"; then - AC_MSG_ERROR([Expected llvm version $expected_llvm_version, but llvm-config --version returned $llvm_version"]) - fi - fi - if test "x$llvm_api_version" = "x"; then - LLVM_CFLAGS="$LLVM_CFLAGS -DLLVM_API_VERSION=0" - LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_API_VERSION=0" - else - LLVM_CFLAGS="$LLVM_CFLAGS -DLLVM_API_VERSION=$llvm_api_version" - LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_API_VERSION=$llvm_api_version" - fi - else - AC_MSG_ERROR([Compiling with stock LLVM is not supported, please use the Mono LLVM repo at https://github.com/mono/llvm, with the GIT branch which matches this version of mono, i.e. 'mono-2-10' for Mono 2.10.]) - fi - - AC_DEFINE_UNQUOTED(LLVM_MAJOR_VERSION, $major_version, [Major version of LLVM libraries]) - AC_DEFINE_UNQUOTED(LLVM_MINOR_VERSION, $minor_version, [Minor version of LLVM libraries]) - AC_DEFINE_UNQUOTED(LLVM_VERSION, "$llvm_version", [Full version of LLVM libraties]) - - # Have to pass these on the command line since mini-llvm-cpp.h already includes - # llvm's config.h - LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_MAJOR_VERSION=$major_version -DLLVM_MINOR_VERSION=$minor_version" - - AC_SUBST(LLVM_CFLAGS) - AC_SUBST(LLVM_CXXFLAGS) - AC_SUBST(LLVM_LIBS) - AC_SUBST(LLVM_LDFLAGS) - AC_DEFINE(ENABLE_LLVM, 1, [Enable the LLVM back end]) -fi - -AM_CONDITIONAL(ENABLE_LLVM, [test x$enable_llvm = xyes]) -if test "x$enable_loadedllvm" = "xyes"; then - AC_DEFINE(MONO_LLVM_LOADED, 1, [The LLVM back end is dynamically loaded]) -fi -AM_CONDITIONAL(LOADED_LLVM, [test x$enable_loadedllvm = xyes]) - -TARGET="unknown" -ACCESS_UNALIGNED="yes" - -JIT_SUPPORTED=no -INTERP_SUPPORTED=no -LIBC="libc.so.6" -INTL="libc.so.6" -SQLITE="libsqlite.so.0" -SQLITE3="libsqlite3.so.0" -X11="libX11.so" -XINERAMA="libXinerama.so" - -sizeof_register="SIZEOF_VOID_P" - -jit_wanted=true -interp_wanted=false -sgen_supported=false -boehm_supported=true -case "$host" in - mips*) - TARGET=MIPS; - arch_target=mips; - sgen_supported=true - ACCESS_UNALIGNED="no" - JIT_SUPPORTED=yes - - AC_MSG_CHECKING(for mips n32) - AC_TRY_COMPILE([],[ - #if _MIPS_SIM != _ABIN32 - #error Not mips n32 - #endif - return 0; - ],[ - AC_MSG_RESULT(yes) - sizeof_register=8 - ],[ - AC_MSG_RESULT(no) - ]) - ;; - i*86-*-*) - TARGET=X86; - arch_target=x86; - JIT_SUPPORTED=yes - case $host_os in - solaris*) - LIBC="libc.so" - INTL="libintl.so" - if test "x$ac_cv_sizeof_void_p" = "x8"; then - TARGET=AMD64 - arch_target=amd64 - fi - - # On solaris 10 x86, gcc prints a warning saying 'visibility attribute not supported on this configuration; ignored', but linking fails. A test case: - # int astruct __attribute__ ((visibility ("hidden"))); - # 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 - have_visibility_hidden=no - sgen_supported=true - ;; - mingw*|cygwin*) - sgen_supported=true - have_visibility_hidden=no - ;; - haiku*) - LIBC=libroot.so - ;; - linux*) - sgen_supported=true - AOT_SUPPORTED="yes" - ;; - darwin*) - sgen_supported=true - AOT_SUPPORTED="yes" - ;; - darwin*|openbsd*|freebsd*) - sgen_supported=true - ;; - esac - ;; - x86_64-*-* | amd64-*-*) - TARGET=AMD64; - arch_target=amd64; - JIT_SUPPORTED=yes - if test "x$ac_cv_sizeof_void_p" = "x4"; then - AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers]) - sizeof_register=8 - fi - case $host_os in - linux*) - sgen_supported=true - AOT_SUPPORTED="yes" - ;; - darwin*|openbsd*|freebsd*) - sgen_supported=true - ;; - esac - case "$host" in - x86_64-*-nacl*) - AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers]) - sizeof_register=8 - ;; - esac - ;; - ia64-*-*) - TARGET=IA64 - arch_target=ia64 - ACCESS_UNALIGNED="no" - JIT_SUPPORTED=yes - LIBC="libc.so.6.1" - INTL="libc.so.6.1" - AC_CHECK_LIB(unwind, _U_dyn_register, [], [AC_MSG_ERROR(library libunwind not found)]) - libmono_ldflags="-lunwind" - ;; - sparc*-*-*) - if test "x$ac_cv_sizeof_void_p" = "x8"; then - TARGET=SPARC64 - else - TARGET=SPARC - fi - arch_target=sparc; - JIT_SUPPORTED=yes - ACCESS_UNALIGNED="no" - case $host_os in - linux*) ;; - *) - LIBC="libc.so" - INTL="libintl.so" - esac - if test x"$GCC" = xyes; then - # We don't support v8 cpus - 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 - sgen_supported=true - ;; - *-mingw*|*-*-cygwin*) - # When this is enabled, it leads to very strange crashes at runtime (gcc-3.4.4) - have_visibility_hidden=no - INTL="intl" - ;; - macppc-*-openbsd* | powerpc*-*-linux* | powerpc-*-openbsd* | \ - powerpc-*-sysv* | powerpc-*-darwin* | powerpc-*-netbsd* | powerpc-*-freebsd* ) - if test "x$ac_cv_sizeof_void_p" = "x8"; then - TARGET=POWERPC64; - CPPFLAGS="$CPPFLAGS -D__mono_ppc__ -D__mono_ppc64__" - CFLAGS="$CFLAGS -mminimal-toc" - else - TARGET=POWERPC; - CPPFLAGS="$CPPFLAGS -D__mono_ppc__" - fi - arch_target=ppc; - JIT_SUPPORTED=yes - case $host_os in - linux*|darwin*) - sgen_supported=true - ;; - esac - ;; - arm*-darwin*) - TARGET=ARM; - arch_target=arm; - ACCESS_UNALIGNED="no" - JIT_SUPPORTED=yes - CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" - # libgc's gc_locks.h depends on this - CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC" - sgen_supported=true - ;; - arm*-linux*) - TARGET=ARM; - arch_target=arm; - ACCESS_UNALIGNED="no" - JIT_SUPPORTED=yes - sgen_supported=true - AOT_SUPPORTED="yes" - CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" - ;; -# TODO: make proper support for NaCl host. -# arm*-*nacl) -# TARGET=ARM; -# arch_target=arm; -# ACCESS_UNALIGNED="no" -# JIT_SUPPORTED=yes -# sgen_supported=true -# AOT_SUPPORTED="no" -# ;; - aarch64-*) - # https://lkml.org/lkml/2012/7/15/133 - TARGET=ARM64 - arch_target=arm64 - JIT_SUPPORTED=yes - sgen_supported=true - boehm_supported=false - ;; - s390x-*-linux*) - TARGET=S390X; - arch_target=s390x; - ACCESS_UNALIGNED="yes" - JIT_SUPPORTED=yes - sgen_supported=true - CFLAGS="$CFLAGS -mbackchain -D__USE_STRING_INLINES" - ;; -esac - -HOST=$TARGET - -if test "x$host" != "x$target"; then - AC_DEFINE(MONO_CROSS_COMPILE,1,[The runtime is compiled for cross-compiling mode]) - enable_mcs_build=no - case "$target" in - arm*-darwin*) - TARGET=ARM; - arch_target=arm; - ACCESS_UNALIGNED="no" - JIT_SUPPORTED=yes - CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" - jit_wanted=true - # Can't use tls, since it depends on the runtime detection of tls offsets - # in mono-compiler.h - with_tls=pthread - ;; - powerpc64-ps3-linux-gnu) - TARGET=POWERPC64 - arch_target=powerpc64 - AC_DEFINE(TARGET_PS3, 1, [...]) - # It would be better to just use TARGET_POWERPC64, but lots of code already - # uses this define - AC_DEFINE(__mono_ppc64__, 1, [...]) - AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers]) - sizeof_register=8 - target_byte_order=G_BIG_ENDIAN - ;; - - powerpc64-xbox360-linux-gnu) - TARGET=POWERPC64 - arch_target=powerpc64 - AC_DEFINE(TARGET_XBOX360, 1, [...]) - # It would be better to just use TARGET_POWERPC64, but lots of code already - # uses this define - sizeof_register=8 - target_byte_order=G_BIG_ENDIAN - ;; - x86_64-*-nacl) - TARGET=AMD64 - arch_target=amd64 - AC_DEFINE(TARGET_AMD64, 1, [...]) - AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers]) - sizeof_register=8 - ;; -# TODO: make proper support for NaCl target. -# arm*-*nacl) -# TARGET=ARM -# arch_target=arm -# AC_DEFINE(TARGET_ARM, 1, [...]) -# ACCESS_UNALIGNED="no" -# JIT_SUPPORTED=yes -# sizeof_register=4 -# CPPFLAGS="$CPPFLAGS \ -# -D__ARM_EABI__ \ -# -D__arm__ \ -# -D__portable_native_client__ \ -# -Dtimezone=_timezone \ -# -DDISABLE_SOCKETS \ -# -DDISABLE_ATTACH \ -# -DUSE_NEWLIB" -# jit_wanted=true - # Can't use tls, since it depends on the runtime detection of tls offsets - # in mono-compiler.h -# with_tls=pthread -# ;; - i686-*-nacl) - TARGET=X86 - arch_target=x86 - AC_DEFINE(TARGET_X86, 1, [...]) - sizeof_register=4 - ;; - arm*-linux-*) - TARGET=ARM; - arch_target=arm; - AC_DEFINE(TARGET_ARM, 1, [...]) - AC_DEFINE(TARGET_ANDROID, 1, [...]) - ACCESS_UNALIGNED="no" - JIT_SUPPORTED=yes - CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" - jit_wanted=true - # Can't use tls, since it depends on the runtime detection of tls offsets - # in mono-compiler.h - with_tls=pthread - target_mach=no - case "$target" in - armv7l-unknown-linux-gnueabi*) - # TEGRA - CPPFLAGS="$CPPFLAGS" - ;; - armv5-*-linux-androideabi*) - CPPFLAGS="$CPPFLAGS" - ;; - esac - ;; - aarch64-*) - TARGET=ARM64 - JIT_SUPPORTED=yes - jit_wanted=true - ;; - *) - AC_MSG_ERROR([Cross compiling is not supported for target $target]) - esac -fi - -case "$TARGET" in -X86) - AC_DEFINE(TARGET_X86, 1, [...]) - ;; -AMD64) - AC_DEFINE(TARGET_AMD64, 1, [...]) - ;; -ARM) - AC_DEFINE(TARGET_ARM, 1, [...]) - ;; -ARM64) - AC_DEFINE(TARGET_ARM64, 1, [...]) - ;; -POWERPC) - AC_DEFINE(TARGET_POWERPC, 1, [...]) - ;; -POWERPC64) - AC_DEFINE(TARGET_POWERPC, 1, [...]) - AC_DEFINE(TARGET_POWERPC64, 1, [...]) - ;; -S390X) - AC_DEFINE(TARGET_S390X, 1, [...]) - ;; -MIPS) - AC_DEFINE(TARGET_MIPS, 1, [...]) - ;; -IA64) - AC_DEFINE(TARGET_IA64, 1, [...]) - ;; -SPARC) - AC_DEFINE(TARGET_SPARC, 1, [...]) - ;; -SPARC64) - AC_DEFINE(TARGET_SPARC64, 1, [...]) - ;; -esac - -dnl Use GCC atomic ops if they work on the target. -if test x$GCC = "xyes"; then - case $TARGET in - X86 | AMD64 | ARM | ARM64 | POWERPC | POWERPC64 | MIPS | S390X | SPARC | SPARC64) - AC_DEFINE(USE_GCC_ATOMIC_OPS, 1, [...]) - ;; - esac -fi - -if test "x$target_mach" = "xyes"; then - if test "x$TARGET" = "xARM" -o "x$TARGET" = "xARM64"; then - AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS]) - CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_IOS" - CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_IOS" - else - AC_TRY_COMPILE([#include "TargetConditionals.h"],[ - #if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1 - #error fail this for ios - #endif - return 0; - ], [ - AC_DEFINE(TARGET_OSX,1,[The JIT/AOT targets OSX]) - CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_OSX" - CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_OSX" - ], [ - AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS]) - CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_IOS" - CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_IOS" - ]) - fi - AC_DEFINE(TARGET_MACH,1,[The JIT/AOT targets Apple platforms]) -fi - -if test "x$sizeof_register" = "x4"; then - AC_DEFINE(SIZEOF_REGISTER,4,[size of machine integer registers]) -elif test "x$sizeof_register" = "x8"; then - AC_DEFINE(SIZEOF_REGISTER,8,[size of machine integer registers]) -else - AC_DEFINE(SIZEOF_REGISTER,SIZEOF_VOID_P,[size of machine integer registers]) -fi - -if test "x$target_byte_order" = "xG_BIG_ENDIAN"; then - AC_DEFINE(TARGET_BYTE_ORDER,G_BIG_ENDIAN,[byte order of target]) -elif test "x$target_byte_order" = "xG_LITTLE_ENDIAN"; then - AC_DEFINE(TARGET_BYTE_ORDER,G_LITTLE_ENDIAN,[byte order of target]) -else - AC_DEFINE(TARGET_BYTE_ORDER,G_BYTE_ORDER,[byte order of target]) -fi - -if test "x$have_visibility_hidden" = "xyes"; then - AC_DEFINE(HAVE_VISIBILITY_HIDDEN, 1, [Support for the visibility ("hidden") attribute]) -fi - -if test "x$have_deprecated" = "xyes"; then - AC_DEFINE(HAVE_DEPRECATED, 1, [Support for the deprecated attribute]) -fi - -dnl -dnl Simple Generational checks (sgen) -dnl -if $sgen_supported; then - build_sgen_default=yes -else - build_sgen_default=no -fi -SGEN_DEFINES= -AC_ARG_WITH(sgen, [ --with-sgen=yes,no Extra Generational GC, default=yes],[buildsgen=$with_sgen],[buildsgen=$build_sgen_default]) -if test x$buildsgen = xyes; then - if $sgen_supported; then - SGEN_DEFINES="-DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR" - gc_msg="sgen and $gc_msg" - else - buildsgen=no - AC_MSG_WARN("Sgen is not supported on this platform") - fi -fi -AC_SUBST(SGEN_DEFINES) -AM_CONDITIONAL(SUPPORT_SGEN, test x$buildsgen = xyes) - -USEJIT=false -if test x$JIT_SUPPORTED = xyes; then - if $jit_wanted; then - USEJIT=true - jit_status="Building and using the JIT" - else - if $interp_wanted; then - jit_status="Building the JIT, defaulting to the interpreter" - else - AC_ERROR(No JIT or interpreter support available or selected.) - fi - fi -else - if test x$interp_wanted = xtrue; then - jit_status="interpreter" - else - AC_ERROR(No JIT or interpreter support available or selected.) - fi -fi - -AM_CONDITIONAL(USE_JIT, test x$USEJIT = xtrue) - -libsuffix=".so" - -case "$host" in - *-*-darwin*) - libsuffix=".dylib" - LIBC="libc.dylib" - INTL="libintl.dylib" - SQLITE="libsqlite.0.dylib" - SQLITE3="libsqlite3.0.dylib" - X11="libX11.dylib" - ;; - *-*-*netbsd*) - LIBC="libc.so.12" - INTL="libintl.so.0" - ;; - *-*-*freebsd*) - LIBC="libc.so" - INTL="libintl.so" - SQLITE="libsqlite.so" - SQLITE3="libsqlite3.so" - ;; - *-*-*openbsd*) - LIBC="libc.so" - INTL="libintl.so" - SQLITE="libsqlite.so" - SQLITE3="libsqlite3.so" - ;; - *-*-*linux*) - AC_PATH_X - dlsearch_path=`(libtool --config ; echo eval echo \\$sys_lib_dlsearch_path_spec) | sh` - AC_MSG_CHECKING(for the soname of libX11.so) - for i in $x_libraries $dlsearch_path; do - for r in 4 5 6; do - if test -f $i/libX11.so.$r; then - X11=libX11.so.$r - AC_MSG_RESULT($X11) - fi - done - done - - if test "x$X11" = "xlibX11.so"; then - AC_MSG_WARN([Could not find X development libs. Do you have the -devel package installed? Assuming libX11.so.6...]); - X11=libX11.so.6 - fi - AC_MSG_CHECKING(for the soname of libXinerama.so) - for i in $x_libraries $dlsearch_path; do - for r in 1 2 3; do - if test -f $i/libXinerama.so.$r; then - XINERAMA=libXinerama.so.$r - AC_MSG_RESULT($XINERAMA) - fi - done - done - if test "x$XINERAMA" = "xlibXinerama.so"; then - AC_MSG_WARN([Could not find Xinerama development libs. Support for multiple monitors might not work...]); - fi - ;; -esac - - -AC_SUBST(libsuffix) - -if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then - if test "x$with_tls" = "x__thread"; then - # - # 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; int main () { foo = 5; return 0; }" > 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.]); - with_tls=pthread - fi - rm -f conftest.c conftest.so conftest - fi -fi - -AC_ARG_ENABLE(icall-symbol-map,[ --enable-icall-symbol-map Generate tables which map icall functions to their C symbols], icall_symbol_map=$enableval, icall_symbol_map=no) -if test "x$icall_symbol_map" = "xyes"; then - AC_DEFINE(ENABLE_ICALL_SYMBOL_MAP, 1, [Icall symbol map enabled]) -fi - -AC_ARG_ENABLE(icall-export,[ --enable-icall-export Export icall functions], icall_export=$enableval, icall_export=no) -if test "x$icall_export" = "xyes"; then - AC_DEFINE(ENABLE_ICALL_EXPORT, 1, [Icall export enabled]) -fi - -AC_ARG_ENABLE(icall-tables,[ --disable-icall-tables Disable the runtime lookup of icalls], icall_tables=$enableval, icall_tables=yes) -if test "x$icall_tables" = "xno"; then - AC_DEFINE(DISABLE_ICALL_TABLES, 1, [Icall tables disabled]) -fi - -if test "x$with_tls" = "x__thread"; then - AC_DEFINE(HAVE_KW_THREAD, 1, [Have __thread keyword]) - # Pass the information to libgc - 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, [tls_model available]) - ], [ - AC_MSG_RESULT(no) - ]) -fi - -if test ${TARGET} = ARM; then - dnl ****************************************** - dnl *** Check to see what FPU is available *** - dnl ****************************************** - AC_MSG_CHECKING(which FPU to use) - - # - # This is a bit tricky: - # - # if (__ARM_PCS_VFP) { - # /* mfloat-abi=hard == VFP with hard ABI */ - # } elif (!__SOFTFP__) { - # /* mfloat-abi=softfp == VFP with soft ABI */ - # } else { - # /* mfloat-abi=soft == no VFP */ - # } - # - # The exception is iOS (w/ GCC) where none of the above - # are defined (but iOS always uses the 'softfp' ABI). - # - # No support for FPA. - # - - fpu=NONE - - # iOS GCC always uses the 'softfp' ABI. - if test x"$GCC" = xyes && test x$platform_darwin = xyes; then - fpu=VFP - fi - - # Are we using the 'hard' ABI? - if test x$fpu = xNONE; then - AC_TRY_COMPILE([], [ - #ifndef __ARM_PCS_VFP - #error "Float ABI is not 'hard'" - #endif - return 0; - ], [ - fpu=VFP_HARD - ], [ - fpu=NONE - ]) - fi - - # No 'hard' ABI. 'soft' or 'softfp'? - if test x$fpu = xNONE; then - AC_TRY_COMPILE([], [ - #ifdef __SOFTFP__ - #error "Float ABI is not 'softfp'" - #endif - return 0; - ], [ - fpu=VFP - ], [ - fpu=NONE - ]) - fi - - AC_MSG_RESULT($fpu) - CPPFLAGS="$CPPFLAGS -DARM_FPU_$fpu=1" - unset fpu - - dnl ********************************************* - dnl *** Check which ARM version(s) we can use *** - dnl ********************************************* - AC_MSG_CHECKING(which ARM version to use) - - AC_TRY_COMPILE([], [ - #if !defined(__ARM_ARCH_5T__) && !defined(__ARM_ARCH_5TE__) && !defined(__ARM_ARCH_5TEJ__) - #error Not on ARM v5. - #endif - return 0; - ], [ - arm_v5=yes - - arm_ver=ARMv5 - ], []) - - AC_TRY_COMPILE([], [ - #if !defined(__ARM_ARCH_6J__) && !defined(__ARM_ARCH_6ZK__) && !defined(__ARM_ARCH_6K__) && !defined(__ARM_ARCH_6T2__) && !defined(__ARM_ARCH_6M__) - #error Not on ARM v6. - #endif - return 0; - ], [ - arm_v5=yes - arm_v6=yes - - arm_ver=ARMv6 - ], []) - - AC_TRY_COMPILE([], [ - #if !defined(__ARM_ARCH_7A__) && !defined(__ARM_ARCH_7R__) && !defined(__ARM_ARCH_7EM__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7S__) - #error Not on ARM v7. - #endif - return 0; - ], [ - arm_v5=yes - arm_v6=yes - arm_v7=yes - - arm_ver=ARMv7 - ], []) - - AC_MSG_RESULT($arm_ver) - - if test x$arm_v5 = xyes; then - AC_DEFINE(HAVE_ARMV5, 1, [ARM v5]) - CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV5=1" - fi - - if test x$arm_v6 = xyes; then - AC_DEFINE(HAVE_ARMV6, 1, [ARM v6]) - CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV6=1" - fi - - if test x$arm_v7 = xyes; then - AC_DEFINE(HAVE_ARMV7, 1, [ARM v7]) - CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV7=1" - fi -fi - -if test ${TARGET} = ARM; then - if test "x${with_jumptables}" = "xyes"; then - AC_DEFINE(USE_JUMP_TABLES, 1, Use jump tables in JIT) - fi -fi - -if test ${TARGET} = unknown; then - CPPFLAGS="$CPPFLAGS -DNO_PORT" - AC_MSG_WARN("mono has not been ported to $host: some things may not work.") -fi - -if test ${ACCESS_UNALIGNED} = no; then - CPPFLAGS="$CPPFLAGS -DNO_UNALIGNED_ACCESS" -fi - -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 -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. - TMP_CPPFLAGS="$CPPFLAGS $CPPFLAGS_FOR_LIBGC" - if test x$TARGET = xSPARC -o x$TARGET = xSPARC64; then - TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-D_FILE_OFFSET_BITS=64//g'` - fi - # Don't pass -finstrument-for-thread-suspension in, - # if these are instrumented it will be very bad news - # (infinite recursion, undefined parking behavior, etc) - TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-finstrument-for-thread-suspension//g'` - ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args \"CPPFLAGS_FOR_LIBGC=$TMP_CPPFLAGS\" \"CFLAGS_FOR_LIBGC=$CFLAGS_FOR_LIBGC\"" - AC_CONFIG_SUBDIRS(libgc) - ;; -esac - -AC_ARG_WITH(profile2, [ --with-profile2=yes,no If you want to install the 2.0/3.5 FX (defaults to yes)], [], [with_profile2=yes]) -AC_ARG_WITH(profile4, [ --with-profile4=yes,no If you want to install the 4.0 FX (defaults to yes)], [], [with_profile4=yes]) -AC_ARG_WITH(profile4_5,[ --with-profile4_5=yes,no If you want to install the 4.5 FX (defaults to yes)], [], [with_profile4_5=yes]) -AC_ARG_WITH(monodroid, [ --with-monodroid=yes,no If you want to build the MonoDroid assemblies (defaults to no)], [], [with_monodroid=no]) -AC_ARG_WITH(monotouch, [ --with-monotouch=yes,no,only If you want to build the MonoTouch assemblies (defaults to no)], [], [with_monotouch=no]) -AC_ARG_WITH(xammac, [ --with-xammac=yes,no,only If you want to build the Xamarin.Mac assemblies (defaults to no)], [], [with_xammac=no]) - -OPROFILE=no -AC_ARG_WITH(oprofile,[ --with-oprofile=no, Enable oprofile support (defaults to no)],[ - if test x$with_oprofile != xno; then - 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 - OPROFILE=yes - OPROFILE_CFLAGS="-I$oprofile_include" - OPROFILE_LIBS="-L$with_oprofile/lib/oprofile -lopagent" - AC_DEFINE(HAVE_OPROFILE,1,[Have oprofile support]) - fi -]) - -MALLOC_MEMPOOLS=no -AC_ARG_WITH(malloc_mempools,[ --with-malloc-mempools=yes,no Use malloc for each single mempool allocation (only for runtime debugging, defaults to no)],[ - if test x$with_malloc_mempools = xyes; then - MALLOC_MEMPOOLS=yes - AC_DEFINE(USE_MALLOC_FOR_MEMPOOLS,1,[Use malloc for each single mempool allocation]) - fi -]) - - -DISABLE_MCS_DOCS=no -AC_ARG_WITH(mcs_docs,[ --with-mcs-docs=yes,no If you want to build the documentation under mcs (defaults to yes)],[ - if test x$with_mcs_docs != xyes; then - DISABLE_MCS_DOCS=yes - fi -]) -if test x$with_profile4 != xyes; then - DISABLE_MCS_DOCS=yes -fi - -AC_ARG_WITH(lazy_gc_thread_creation, [ --with-lazy-gc-thread-creation=yes|no Enable lazy runtime thread creation, embedding host must do it explicitly (defaults to no)],[ - if test x$with_lazy_gc_thread_creation != xno ; then - AC_DEFINE(LAZY_GC_THREAD_CREATION,1,[Enable lazy gc thread creation by the embedding host.]) - fi -], [with_lazy_gc_thread_creation=no]) - -AC_CHECK_HEADER([malloc.h], - [AC_DEFINE([HAVE_USR_INCLUDE_MALLOC_H], [1], - [Define to 1 if you have /usr/include/malloc.h.])],,) - -if test x"$GCC" = xyes; then - # Implicit function declarations are not 64 bit safe - # Do this late, since this causes lots of configure tests to fail - CFLAGS="$CFLAGS -Werror-implicit-function-declaration" - # jay has a lot of implicit declarations - JAY_CFLAGS="-Wno-implicit-function-declaration" -fi - -# When --disable-shared is used, libtool transforms libmono-2.0.la into libmono-2.0.so -# instead of libmono-static.a -if test "x$enable_shared" = "xno" -a "x$enable_executables" = "xyes"; then - LIBMONO_LA=libmini-static.la -else - if test x$buildsgen = xyes; then - LIBMONO_LA=libmonosgen-$API_VER.la - else - LIBMONO_LA=libmonoboehm-$API_VER.la - fi -fi -AC_SUBST(LIBMONO_LA) - -dnl -dnl Consistency settings -dnl -if test x$cross_compiling = xyes -o x$enable_mcs_build = xno; then - DISABLE_MCS_DOCS=yes - with_profile2=no - with_profile4=no - with_profile4_5=no - with_monodroid=no - with_monotouch=no - with_xammac=no -fi - -if test x$DISABLE_MCS_DOCS = xyes; then - docs_dir="" -else - docs_dir=docs -fi -AC_SUBST(docs_dir) - -## 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]) - -AM_CONDITIONAL(HAVE_OPROFILE, test x$OPROFILE = xyes) -AC_SUBST(OPROFILE_CFLAGS) -AC_SUBST(OPROFILE_LIBS) - -libmono_ldflags="$libmono_ldflags $LIBS" - -AM_CONDITIONAL(INSTALL_2_0, [test "x$with_profile2" = xyes]) -AM_CONDITIONAL(INSTALL_4_0, [test "x$with_profile4" = xyes]) -AM_CONDITIONAL(INSTALL_4_5, [test "x$with_profile4_5" = xyes]) -AM_CONDITIONAL(INSTALL_MONODROID, [test "x$with_monodroid" != "xno"]) -AM_CONDITIONAL(INSTALL_MONOTOUCH, [test "x$with_monotouch" != "xno"]) -AM_CONDITIONAL(INSTALL_XAMMAC, [test "x$with_xammac" != "xno"]) -AM_CONDITIONAL(ONLY_MONOTOUCH, [test "x$with_monotouch" = "xonly"]) -AM_CONDITIONAL(ONLY_XAMMAC, [test "x$with_xammac" = "xonly"]) - -AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes) -AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno) -AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC) -AM_CONDITIONAL(SPARC64, test x$TARGET = xSPARC64) -AM_CONDITIONAL(X86, test x$TARGET = xX86) -AM_CONDITIONAL(AMD64, test x$TARGET = xAMD64) -AM_CONDITIONAL(IA64, test x$TARGET = xIA64) -AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS) -AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC) -AM_CONDITIONAL(POWERPC64, test x$TARGET = xPOWERPC64) -AM_CONDITIONAL(ARM, test x$TARGET = xARM) -AM_CONDITIONAL(ARM64, test x$TARGET = xARM64) -AM_CONDITIONAL(S390X, test x$TARGET = xS390X) -AM_CONDITIONAL(HOST_X86, test x$HOST = xX86) -AM_CONDITIONAL(HOST_AMD64, test x$HOST = xAMD64) -AM_CONDITIONAL(HOST_ARM, test x$HOST = xARM) -AM_CONDITIONAL(HOST_ARM64, test x$HOST = xARM64) -AM_CONDITIONAL(CROSS_COMPILE, test "x$host" != "x$target") - -AM_CONDITIONAL(JIT_SUPPORTED, test x$JIT_SUPPORTED = xyes) -AM_CONDITIONAL(INTERP_SUPPORTED, test x$interp_wanted = xtrue) -AM_CONDITIONAL(INCLUDED_LIBGC, test x$gc = xincluded) - -AC_SUBST(LIBC) -AC_SUBST(INTL) -AC_SUBST(SQLITE) -AC_SUBST(SQLITE3) -AC_SUBST(X11) -AC_SUBST(XINERAMA) -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) - -mono_build_root=`pwd` -AC_SUBST(mono_build_root) - -if test x$USEJIT = xtrue; then - mono_runtime=mono/mini/mono -else - mono_runtime=mono/interpreter/mint -fi -AC_SUBST(mono_runtime) - -mono_cfg_root=$mono_build_root/runtime -if test x$host_win32 = xyes; then - if test "x$cross_compiling" = "xno"; then - mono_cfg_dir=`cygpath -w -a $mono_cfg_root`\\etc - else - mono_cfg_dir=`echo $mono_cfg_root | tr '/' '\\'`\\etc - fi -else - mono_cfg_dir=$mono_cfg_root/etc -fi -AC_SUBST(mono_cfg_dir) - -AC_CONFIG_FILES([po/mcs/Makefile.in]) - -AC_CONFIG_FILES([runtime/mono-wrapper],[chmod +x runtime/mono-wrapper]) -AC_CONFIG_FILES([runtime/monodis-wrapper],[chmod +x runtime/monodis-wrapper]) - -AC_CONFIG_COMMANDS([runtime/etc/mono/1.0/machine.config], -[ depth=../../../.. - case $srcdir in - [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; - .) reldir=$depth ;; - *) 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 -],[LN_S='$LN_S']) - -AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/machine.config], -[ depth=../../../.. - case $srcdir in - [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; - .) reldir=$depth ;; - *) 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 -],[LN_S='$LN_S']) - -AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/web.config], -[ depth=../../../.. - case $srcdir in - [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; - .) reldir=$depth ;; - *) 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 -],[LN_S='$LN_S']) - -AC_CONFIG_COMMANDS([runtime/etc/mono/browscap.ini], -[ depth=../../.. - case $srcdir in - [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; - .) reldir=$depth ;; - *) reldir=$depth/$srcdir ;; - esac - $ac_aux_dir/install-sh -d runtime/etc/mono/ - cd runtime/etc/mono/ - rm -f browscap.ini - $LN_S $reldir/data/browscap.ini browscap.ini - cd $depth -],[LN_S='$LN_S']) - -AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/Browsers/Compat.browser], -[ depth=../../../../.. - case $srcdir in - [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; - .) reldir=$depth ;; - *) 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/Browsers/Compat.browser Compat.browser - cd $depth -],[LN_S='$LN_S']) - -AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/Browsers/Compat.browser], -[ depth=../../../../.. - case $srcdir in - [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; - .) reldir=$depth ;; - *) reldir=$depth/$srcdir ;; - esac - $ac_aux_dir/install-sh -d runtime/etc/mono/4.0/Browsers/ - cd runtime/etc/mono/4.0/Browsers - rm -f Compat.browser - $LN_S $reldir/data/Browsers/Compat.browser Compat.browser - cd $depth -],[LN_S='$LN_S']) - -AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/Browsers/Compat.browser], -[ depth=../../../../.. - case $srcdir in - [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; - .) reldir=$depth ;; - *) reldir=$depth/$srcdir ;; - esac - $ac_aux_dir/install-sh -d runtime/etc/mono/4.5/Browsers/ - cd runtime/etc/mono/4.5/Browsers - rm -f Compat.browser - $LN_S $reldir/data/Browsers/Compat.browser Compat.browser - cd $depth -],[LN_S='$LN_S']) - -AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/machine.config], -[ depth=../../../.. - case $srcdir in - [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; - .) reldir=$depth ;; - *) reldir=$depth/$srcdir ;; - esac - $ac_aux_dir/install-sh -d runtime/etc/mono/4.0 - cd runtime/etc/mono/4.0 - rm -f machine.config - $LN_S $reldir/data/net_4_0/machine.config machine.config - cd $depth -],[LN_S='$LN_S']) - -AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/web.config], -[ depth=../../../.. - case $srcdir in - [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; - .) reldir=$depth ;; - *) reldir=$depth/$srcdir ;; - esac - $ac_aux_dir/install-sh -d runtime/etc/mono/4.0 - cd runtime/etc/mono/4.0 - rm -f web.config - $LN_S $reldir/data/net_4_0/web.config web.config - cd $depth -],[LN_S='$LN_S']) - -AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/machine.config], -[ depth=../../../.. - case $srcdir in - [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; - .) reldir=$depth ;; - *) reldir=$depth/$srcdir ;; - esac - $ac_aux_dir/install-sh -d runtime/etc/mono/4.5 - cd runtime/etc/mono/4.5 - rm -f machine.config - $LN_S $reldir/data/net_4_5/machine.config machine.config - cd $depth -],[LN_S='$LN_S']) - -AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/web.config], -[ depth=../../../.. - case $srcdir in - [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;; - .) reldir=$depth ;; - *) reldir=$depth/$srcdir ;; - esac - $ac_aux_dir/install-sh -d runtime/etc/mono/4.5 - cd runtime/etc/mono/4.5 - rm -f web.config - $LN_S $reldir/data/net_4_5/web.config web.config - cd $depth -],[LN_S='$LN_S']) - -AC_CONFIG_COMMANDS([quiet-libtool], [sed -e 's/echo "copying selected/# "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]) - -AC_OUTPUT([ -Makefile -mono-core.spec -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/ppc/Makefile -mono/arch/sparc/Makefile -mono/arch/s390x/Makefile -mono/arch/arm/Makefile -mono/arch/arm64/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/tests/gc-descriptors/Makefile -mono/unit-tests/Makefile -mono/benchmark/Makefile -mono/monograph/Makefile -mono/io-layer/Makefile -mono/mini/Makefile -mono/profiler/Makefile -m4/Makefile -ikvm-native/Makefile -scripts/Makefile -man/Makefile -docs/Makefile -data/Makefile -data/net_2_0/Makefile -data/net_4_0/Makefile -data/net_4_5/Makefile -data/net_2_0/Browsers/Makefile -data/net_4_0/Browsers/Makefile -data/net_4_5/Browsers/Makefile -data/mint.pc -data/mono-2.pc -data/monosgen-2.pc -data/mono.pc -data/mono-cairo.pc -data/mono-nunit.pc -data/mono-options.pc -data/mono-lineeditor.pc -data/monodoc.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 -data/system.web.mvc2.pc -data/system.web.mvc3.pc -data/aspnetwebstack.pc -data/reactive.pc -samples/Makefile -support/Makefile -data/config -tools/Makefile -tools/locale-builder/Makefile -tools/sgen/Makefile -runtime/Makefile -msvc/Makefile -po/Makefile -]) - -# Update all submodules recursively to ensure everything is checked out -$srcdir/scripts/update_submodules - -if test x$host_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 - -if test x$platform_darwin = xyes; then - # This doesn't seem to be required and it slows down parallel builds - sed -e 's,lock_old_archive_extraction=yes,lock_old_archive_extraction=no,g' < libtool > libtool.new && mv libtool.new libtool && chmod +x libtool -fi - -( - case $prefix in - NONE) prefix=$ac_default_prefix ;; - esac - case $exec_prefix in - NONE) exec_prefix='${prefix}' ;; - esac - - # - # 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 - - test -w $mcs_topdir/build || chmod +w $mcs_topdir/build - - echo "prefix=$prefix" > $mcs_topdir/build/config.make - echo "exec_prefix=$exec_prefix" >> $mcs_topdir/build/config.make - echo "sysconfdir=$sysconfdir" >> $mcs_topdir/build/config.make - echo 'mono_libdir=${exec_prefix}/lib' >> $mcs_topdir/build/config.make - echo 'IL_FLAGS = /debug' >> $mcs_topdir/build/config.make - echo "RUNTIME = $mono_build_root/runtime/mono-wrapper" >> $mcs_topdir/build/config.make - echo "ILDISASM = $mono_build_root/runtime/monodis-wrapper" >> $mcs_topdir/build/config.make - echo "JAY_CFLAGS = $JAY_CFLAGS" >> $mcs_topdir/build/config.make - - case $INSTALL in - [[\\/$]]* | ?:[[\\/]]* ) mcs_INSTALL=$INSTALL ;; - *) mcs_INSTALL=$mono_build_root/$INSTALL ;; - esac - - echo "INSTALL = $mcs_INSTALL" >> $mcs_topdir/build/config.make - - export VERSION - [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" >> $mcs_topdir/build/config.make - - if test x$platform_darwin = xyes; then - echo "PLATFORM = darwin" >> $mcs_topdir/build/config.make - fi - - if test x$AOT_SUPPORTED = xyes -a x$enable_system_aot = xdefault; then - enable_system_aot=yes - fi - - if test "x$enable_loadedllvm" = "xyes"; then - # This seems to fail on the x86 buildbots - enable_system_aot=no - fi - - if test x$host_win32 = xno -a x$enable_system_aot = xyes; then - echo "ENABLE_AOT = 1" >> $mcs_topdir/build/config.make - fi - - if test x$DISABLE_MCS_DOCS = xyes; then - echo "DISABLE_MCS_DOCS = yes" >> $mcs_topdir/build/config.make - fi - - if test x$has_extension_module != xno; then - echo "EXTENSION_MODULE = 1" >> $srcdir/$mcsdir/build/config.make - fi - - default_profile=net_2_0 - if test -z "$INSTALL_4_0_TRUE"; then : - default_profile=net_4_0 - fi - if test -z "$INSTALL_MONODROID_TRUE"; then : - default_profile=monodroid - fi - if test -z "$INSTALL_MONOTOUCH_TRUE"; then : - default_profile=monotouch - fi - if test -z "$INSTALL_XAMMAC_TRUE"; then : - default_profile=xammac - fi - if test -z "$INSTALL_4_5_TRUE"; then : - default_profile=net_4_5 - fi - - echo "DEFAULT_PROFILE = $default_profile" >> $srcdir/$mcsdir/build/config.make - - if test "x$test_bcl_opt" = "xyes"; then - echo "BCL_OPTIMIZE = 1" >> $srcdir/$mcsdir/build/config.make - fi - - fi - - # if we have an olive folder, override the default settings - if test -d $olivedir; then - - if test x$cross_compiling = xno && test x$enable_olive_build != xno; then - - test -w $srcdir/$olivedir/build || chmod +w $srcdir/$olivedir/build - - echo "prefix=$prefix" > $srcdir/$olivedir/build/config.make - echo "exec_prefix=$exec_prefix" >> $srcdir/$olivedir/build/config.make - echo 'mono_libdir=${exec_prefix}/lib' >> $srcdir/$olivedir/build/config.make - 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 - fi - fi - -) - -libgdiplus_msg=${libgdiplus_loc:-assumed to be installed} - -echo " - mcs source: $mcsdir - - Engine: - GC: $gc_msg - TLS: $with_tls - SIGALTSTACK: $with_sigaltstack - Engine: $jit_status - oprofile: $OPROFILE - BigArrays: $enable_big_arrays - DTrace: $enable_dtrace - LLVM Back End: $enable_llvm (dynamically loaded: $enable_loadedllvm) - - Libraries: - .NET 2.0/3.5: $with_profile2 - .NET 4.0: $with_profile4 - .NET 4.5: $with_profile4_5 - MonoDroid: $with_monodroid - MonoTouch: $with_monotouch - Xamarin.Mac: $with_xammac - JNI support: $jdk_headers_found - libgdiplus: $libgdiplus_msg - zlib: $zlib_msg - $disabled -" -if test x$with_static_mono = xno -a "x$host_win32" != "xyes"; then - AC_MSG_WARN(Turning off static Mono is a risk, you might run into unexpected bugs) -fi diff --git a/libgc/Makefile.direct b/libgc/Makefile.direct index 1f03b511c3b..8b4dff1fb73 100644 --- a/libgc/Makefile.direct +++ b/libgc/Makefile.direct @@ -331,7 +331,7 @@ DOC_FILES= README.QUICK doc/README.Mac doc/README.MacOSX doc/README.OS2 \ TESTS= tests/test.c tests/test_cpp.cc tests/trace_test.c \ tests/leak_test.c tests/thread_leak_test.c tests/middle.c -GNU_BUILD_FILES= configure.in Makefile.am configure acinclude.m4 \ +GNU_BUILD_FILES= configure.ac Makefile.am configure acinclude.m4 \ libtool.m4 install-sh configure.host Makefile.in \ aclocal.m4 config.sub config.guess \ include/Makefile.am include/Makefile.in \ diff --git a/libgc/README.Mono b/libgc/README.Mono index bf2fbf7df7a..559d3ec4932 100644 --- a/libgc/README.Mono +++ b/libgc/README.Mono @@ -5,8 +5,8 @@ This is a modified version of Boehm GC 6.1 for Mono. - Makefile changes: libgc has a lot of configurable options which are AC_DEFINE()d in its - configure.in. To make it easier to build and bundle it with Mono, I - replaced most of the orignal configure.in and the makefiles with custom + configure.ac. To make it easier to build and bundle it with Mono, I + replaced most of the orignal configure.ac and the makefiles with custom versions which just define what we actually need for Mono. This means that you can just run configure in this directory and it'll @@ -58,7 +58,7 @@ This is a modified version of Boehm GC 6.1 for Mono. cvs diff -u -r LIBGC - When importing new upstream versions, don't import the new configure.in or any of the + When importing new upstream versions, don't import the new configure.ac or any of the Makefile.am's; they've been replaced by custom versions. Just import all the new source files and it should be fine. diff --git a/libgc/autogen.sh b/libgc/autogen.sh index 376c3878856..10ae8cf6831 100755 --- a/libgc/autogen.sh +++ b/libgc/autogen.sh @@ -22,7 +22,7 @@ if [ -z "$LIBTOOL" ]; then fi fi -(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { +(grep "^AM_PROG_LIBTOOL" $srcdir/configure.ac >/dev/null) && { ($LIBTOOL --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`libtool' installed to compile Mono." @@ -32,8 +32,8 @@ fi } } -grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && { - grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ +grep "^AM_GNU_GETTEXT" $srcdir/configure.ac >/dev/null && { + grep "sed.*POTFILES" $srcdir/configure.ac >/dev/null || \ (gettext --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`gettext' installed to compile Mono." @@ -80,7 +80,7 @@ xlc ) esac -if grep "^AC_PROG_LIBTOOL" configure.in >/dev/null; then +if grep "^AC_PROG_LIBTOOL" configure.ac >/dev/null; then if test -z "$NO_LIBTOOLIZE" ; then echo "Running libtoolize..." ${LIBTOOL}ize --force --copy @@ -99,7 +99,7 @@ aclocal $ACLOCAL_FLAGS || { exit 1 } -if grep "^AC_CONFIG_HEADERS" configure.in >/dev/null; then +if grep "^AC_CONFIG_HEADERS" configure.ac >/dev/null; then echo "Running autoheader..." autoheader || { echo "**Error**: autoheader failed."; exit 1; } fi diff --git a/libgc/configure.ac b/libgc/configure.ac new file mode 100644 index 00000000000..837e2cb9f15 --- /dev/null +++ b/libgc/configure.ac @@ -0,0 +1,550 @@ +# Copyright (c) 1999-2001 by Red Hat, Inc. All rights reserved. +# +# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED +# OR IMPLIED. ANY USE IS AT YOUR OWN RISK. +# +# Permission is hereby granted to use or copy this program +# for any purpose, provided the above notices are retained on all copies. +# Permission to modify the code and to distribute modified code is granted, +# provided the above notices are retained, and a notice that the code was +# modified is included with the above copyright notice. +# +# Original author: Tom Tromey +# Modified by: Grzegorz Jakacki + +dnl Process this file with autoconf to produce configure. + +AC_PREREQ([2.53]) +AC_INIT([libgc-mono], [6.6], [Hans_Boehm@hp.com]) + +AM_INIT_AUTOMAKE([1.9 no-define foreign]) +AC_CONFIG_SRCDIR(gcj_mlc.c) +AC_CONFIG_MACRO_DIR([m4]) +AC_CANONICAL_HOST + +AC_SUBST(PACKAGE) +AC_SUBST(GC_VERSION) + +AC_PROG_CC +AC_PROG_CXX + +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + +dnl automake 1.6 and later need the AM_PROG_AS macro. +ifdef([AM_PROG_AS],[AM_PROG_AS],[]) +AC_CHECK_TOOL(AR, ar) +AC_CHECK_TOOL(RANLIB, ranlib, :) # :) + +AC_PROG_INSTALL + +AM_MAINTAINER_MODE + +. [$]{srcdir}/configure.host + +# We use a separate variable to pass down CPPFLAGS and CFLAGS from the main mono +# configure, because of autoconf brokeness +if test "x$CPPFLAGS_FOR_LIBGC" != "x"; then + CPPFLAGS=$CPPFLAGS_FOR_LIBGC +fi +if test "x$CFLAGS_FOR_LIBGC" != "x"; then + CFLAGS=$CFLAGS_FOR_LIBGC +fi + +GC_CFLAGS=${gc_cflags} +AC_SUBST(GC_CFLAGS) + +case $enable_embed_check in +no) ;; +*) AC_MSG_ERROR([This module is now part of 'mono' and cannot be built as a stand-alone module any longer.]) ;; +esac + +THREADS=$with_libgc_threads + +AC_ARG_ENABLE(win32-dllmain, +[ --enable-win32-dllmain Define the DllMain function in win32_threads.c even if the collector is not built as a dll], +) + +AC_ARG_ENABLE(parallel-mark, +[ --enable-parallel-mark parallelize marking and free list construction], + [case "$THREADS" in + no | none | single) + AC_MSG_ERROR([Parallel mark requires --enable-threads=x spec]) + ;; + esac] +) + +AC_ARG_ENABLE(cplusplus, +[ --enable-cplusplus install C++ support], +) + +AM_CPPFLAGS=-I${srcdir}/include +THREADDLLIBS= +## Libraries needed to support dynamic loading and/or threads. +case "$THREADS" in + no | none | single) + THREADS=none + ;; + posix | pthreads) + THREADS=posix + AC_CHECK_LIB(pthread, pthread_self, THREADDLLIBS="-lpthread",,) + case "$host" in + x86-*-linux* | ia64-*-linux* | i386-*-linux* | i486-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* | alpha*-*-linux* | s390*-*-linux* | sparc*-*-linux* | powerpc-*-linux*) + AC_DEFINE(GC_LINUX_THREADS) + AC_DEFINE(_REENTRANT) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + ;; + *-*-linux* | *-*-nacl*) + AC_DEFINE(GC_LINUX_THREADS) + AC_DEFINE(_REENTRANT) + ;; + *-*-aix*) + AC_DEFINE(GC_AIX_THREADS) + AC_DEFINE(_REENTRANT) + ;; + *-*-hpux*) + AC_MSG_WARN("Only HP/UX 11 threads are supported.") + AC_DEFINE(GC_HPUX_THREADS) + AC_DEFINE(_POSIX_C_SOURCE,199506L) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + THREADDLLIBS="-lpthread -lrt" + ;; + *-*-freebsd*) + AC_DEFINE(GC_FREEBSD_THREADS) + if test "x$PTHREAD_CFLAGS" != "x"; then + AM_CPPFLAGS="$AM_CPPFLAGS $PTHREAD_CFLAGS" + fi + if test "x$PTHREAD_LIBS" = "x"; then + THREADDLLIBS=-pthread + else + THREADDLLIBS="$PTHREAD_LIBS" + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + ;; + *-*-solaris*) + AC_DEFINE(GC_SOLARIS_THREADS) + AC_DEFINE(GC_SOLARIS_PTHREADS) + ;; + *-*-irix*) + AC_DEFINE(GC_IRIX_THREADS) + ;; + *-*-cygwin*) + AC_DEFINE(GC_WIN32_THREADS) + ;; + *-*-darwin*) + AC_DEFINE(GC_DARWIN_THREADS) + AC_DEFINE(THREAD_LOCAL_ALLOC) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + ;; + *-*-netbsd*) + AC_DEFINE(GC_NETBSD_THREADS) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + ;; + *-*-openbsd*) + AC_DEFINE(GC_OPENBSD_THREADS) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + ;; + *-*-osf*) + AC_DEFINE(GC_OSF1_THREADS) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + AC_DEFINE(THREAD_LOCAL_ALLOC) + # May want to enable it in other cases, too. + # Measurements havent yet been done. + fi + AM_CPPFLAGS="$AM_CPPFLAGS -pthread" + THREADDLLIBS="-lpthread -lrt" + ;; + *) + AC_MSG_ERROR("Pthreads not supported by the GC on this platform.") + ;; + esac + ;; + win32) + AC_DEFINE(GC_WIN32_THREADS) + dnl Wine getenv may not return NULL for missing entry + AC_DEFINE(NO_GETENV) + if test "${enable_win32_dllmain}" = yes; then + AC_DEFINE(GC_INSIDE_DLL) + fi + ;; + dgux386) + THREADS=dgux386 + AC_MSG_RESULT($THREADDLLIBS) + # Use pthread GCC switch + THREADDLLIBS=-pthread + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + AC_DEFINE(GC_DGUX386_THREADS) + AC_DEFINE(DGUX_THREADS) + # Enable _POSIX4A_DRAFT10_SOURCE with flag -pthread + AM_CPPFLAGS="-pthread $AM_CPPFLAGS" + ;; + aix) + THREADS=posix + THREADDLLIBS=-lpthread + AC_DEFINE(GC_AIX_THREADS) + AC_DEFINE(_REENTRANT) + ;; + decosf1 | irix | mach | os2 | solaris | dce | vxworks) + AC_MSG_ERROR(thread package $THREADS not yet supported) + ;; + *) + AC_MSG_ERROR($THREADS is an unknown thread package) + ;; +esac +AC_SUBST(THREADDLLIBS) + +case "$host" in + powerpc-*-darwin*) + powerpc_darwin=true + ;; +esac +AM_CONDITIONAL(POWERPC_DARWIN,test x$powerpc_darwin = xtrue) + +# Check if the GCC builtin __sync_bool_compare_and_swap is available. +# It is preferred in gc_locks.h for PPC as GCC 4.4 has a problem with the inline assembly there. +AC_MSG_CHECKING(for __sync_bool_compare_and_swap) +AC_TRY_COMPILE([],[ +volatile unsigned int foo = 0; +int main(int argc, char** argv) { + unsigned int r1 = __sync_bool_compare_and_swap(&foo, 0, 1); + return 0; +} +], [ +AC_MSG_RESULT(yes) +AC_DEFINE(HAS___SYNC_BOOL_COMPARE_AND_SWAP) +], [ +AC_MSG_RESULT(no) +]) + +AC_MSG_CHECKING(for xlc) +AC_TRY_COMPILE([],[ + #ifndef __xlC__ + # error + #endif +], [compiler_xlc=yes], [compiler_xlc=no]) +AC_MSG_RESULT($compiler_xlc) +AM_CONDITIONAL(COMPILER_XLC,test $compiler_xlc = yes) +if test $compiler_xlc = yes -a "$powerpc_darwin" = true; then + # the darwin stack-frame-walking code is completely broken on xlc + AC_DEFINE(DARWIN_DONT_PARSE_STACK) +fi + +# We never want libdl on darwin. It is a fake libdl that just ends up making +# dyld calls anyway +case "$host" in + *-*-darwin*) ;; + *) + AC_CHECK_LIB(dl, dlopen, THREADDLLIBS="$THREADDLLIBS -ldl") + ;; +esac + +AC_SUBST(EXTRA_TEST_LIBS) + +target_all=libgc.la +AC_SUBST(target_all) + +dnl If the target is an eCos system, use the appropriate eCos +dnl I/O routines. +dnl FIXME: this should not be a local option but a global target +dnl system; at present there is no eCos target. +TARGET_ECOS="no" +AC_ARG_WITH(ecos, +[ --with-ecos enable runtime eCos target support], +TARGET_ECOS="$with_ecos" +) + +addobjs= +addlibs= +addincludes= +addtests= +CXXAM_CPPFLAGS= +case "$TARGET_ECOS" in + no) + ;; + *) + AC_DEFINE(ECOS) + CXXINCLUDES="-I${TARGET_ECOS}/include" + addobjs="$addobjs ecos.lo" + ;; +esac + +if test "${enable_cplusplus}" = yes; then + addincludes="$addincludes include/gc_cpp.h include/gc_allocator.h" + addtests="$addtests test_cpp" +fi + +AM_CONDITIONAL(CPLUSPLUS, test "${enable_cplusplus}" = yes) + +AC_SUBST(CXX) + +AC_SUBST(AM_CPPFLAGS) +AC_SUBST(CXXINCLUDES) + +# Configuration of shared libraries +# +AC_MSG_CHECKING(whether to build shared libraries) +AC_ENABLE_SHARED + +case "$host" in + alpha-*-openbsd*) + enable_shared=no + AC_MSG_RESULT(no) + ;; + *) + AC_MSG_RESULT(yes) + ;; +esac + +# Configuration of machine-dependent code +# +AC_MSG_CHECKING(which machine-dependent code should be used) +machdep= +case "$host" in + alpha-*-openbsd*) + machdep="alpha_mach_dep.lo" + if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then + AC_MSG_WARN(OpenBSD/Alpha without dlopen(). Shared library support is disabled) + fi + ;; + alpha*-*-linux*) + machdep="alpha_mach_dep.lo" + ;; + i?86-*-solaris2.[[89]] | i?86-*-solaris2.1?) + AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED) + ;; + mipstx39-*-elf*) + machdep="mips_ultrix_mach_dep.lo" + AC_DEFINE(STACKBASE, __stackbase) + AC_DEFINE(DATASTART_IS_ETEXT) + ;; + mips-dec-ultrix*) + machdep="mips_ultrix_mach-dep.lo" + ;; + mips-nec-sysv*|mips-unknown-sysv*) + ;; + mips*-*-linux*) + ;; + mips-*-*) + machdep="mips_sgi_mach_dep.lo" + AC_DEFINE(NO_EXECUTE_PERMISSION) + ;; + sparc-*-netbsd*) + machdep="sparc_netbsd_mach_dep.lo" + ;; + sparc-sun-solaris2.3) + machdep="sparc_mach_dep.lo" + AC_DEFINE(SUNOS53_SHARED_LIB) + ;; + sparc*-sun-solaris2.*) + machdep="sparc_mach_dep.lo" + ;; + ia64-*-*) + machdep="mach_dep.lo ia64_save_regs_in_stack.lo" + target_ia64=true + ;; + *-*-nacl*) + AC_DEFINE(NO_EXECUTE_PERMISSION) + ;; +esac +if test x"$machdep" = x; then +AC_MSG_RESULT($machdep) + machdep="mach_dep.lo" +fi +addobjs="$addobjs $machdep" +# +# Adding object files directly to _LIBADD breaks -j builds, so we need to add the sources +# instead, but _SOURCES can't contain autoconf substitutions, so add them using automake +# conditionals. +# +#AC_SUBST(addobjs) +AC_SUBST(addincludes) +AC_SUBST(addlibs) +AC_SUBST(addtests) + +AM_CONDITIONAL(TARGET_IA64,test x$target_ia64 = xtrue) + +AC_PROG_LIBTOOL +# Use dolt (http://dolt.freedesktop.org/) instead of libtool for building. +DOLT + +# +# Check for AViiON Machines running DGUX +# +ac_is_dgux=no +AC_CHECK_HEADER(sys/dg_sys_info.h, +[ac_is_dgux=yes;]) + + ## :GOTCHA: we do not check anything but sys/dg_sys_info.h +if test $ac_is_dgux = yes; then + if test "$enable_full_debug" = "yes"; then + CFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + CXXFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + else + CFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + CXXFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + fi + AC_SUBST(CFLAGS) + AC_SUBST(CXXFLAGS) +fi + +dnl We use these options to decide which functions to include. +AC_ARG_WITH(target-subdir, +[ --with-target-subdir=SUBDIR + configuring with a cross compiler]) +AC_ARG_WITH(cross-host, +[ --with-cross-host=HOST configuring with a cross compiler]) + +# automake wants to see AC_EXEEXT. But we don't need it. And having +# it is actually a problem, because the compiler we're passed can't +# necessarily do a full link. So we fool automake here. +if false; then + # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands + # to nothing, so nothing would remain between `then' and `fi' if it + # were not for the `:' below. + : + AC_EXEEXT +fi + +AC_MSG_CHECKING([for threads package to use]) +AC_MSG_RESULT($THREADS) + +dnl As of 4.13a2, the collector will not properly work on Solaris when +dnl built with gcc and -O. So we remove -O in the appropriate case. +dnl Not needed anymore on Solaris. +AC_MSG_CHECKING(whether Solaris gcc optimization fix is necessary) +case "$host" in + *aix*) + if test "$GCC" = yes; then + AC_MSG_RESULT(yes) + new_CFLAGS= + for i in $CFLAGS; do + case "$i" in + -O*) + ;; + *) + new_CFLAGS="$new_CFLAGS $i" + ;; + esac + done + CFLAGS="$new_CFLAGS" + else + AC_MSG_RESULT(no) + fi + ;; + *) AC_MSG_RESULT(no) ;; +esac + +dnl We need to override the top-level CFLAGS. This is how we do it. +MY_CFLAGS="$CFLAGS" +AC_SUBST(MY_CFLAGS) + +dnl Include defines that have become de facto standard. +dnl ALL_INTERIOR_POINTERS can be overridden in startup code. +AC_DEFINE(SILENT) +AC_DEFINE(NO_SIGNALS) +AC_DEFINE(NO_EXECUTE_PERMISSION) +dnl AC_DEFINE(ALL_INTERIOR_POINTERS) + +dnl By default, make the library as general as possible. +AC_DEFINE(JAVA_FINALIZATION) +AC_DEFINE(GC_GCJ_SUPPORT) +AC_DEFINE(ATOMIC_UNCOLLECTABLE) + +dnl This is something of a hack. When cross-compiling we turn off +dnl some functionality. We also enable the "small" configuration. +dnl These is only correct when targetting an embedded system. FIXME. +if test -n "${with_cross_host}"; then + AC_DEFINE(NO_SIGSET) + AC_DEFINE(NO_CLOCK) + AC_DEFINE(SMALL_CONFIG) + AC_DEFINE(NO_DEBUGGING) +fi + +UNWINDLIBS= +AC_ARG_ENABLE(full-debug, +[ --enable-full-debug include full support for pointer backtracing etc.], +[ if test "$enable_full_debug" = "yes"; then + AC_MSG_WARN("Should define GC_DEBUG and use debug alloc. in clients.") + AC_DEFINE(KEEP_BACK_PTRS) + AC_DEFINE(DBG_HDRS_ALL) + case $host in + ia64-*-linux* ) + AC_DEFINE(MAKE_BACK_GRAPH) + AC_DEFINE(SAVE_CALL_COUNT, 8) + AC_CHECK_LIB(unwind, backtrace, [ + AC_DEFINE(GC_HAVE_BUILTIN_BACKTRACE) + UNWINDLIBS=-lunwind + AC_MSG_WARN("Client code may need to link against libunwind.") + ]) + ;; + x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* ) + AC_DEFINE(MAKE_BACK_GRAPH) + AC_MSG_WARN("Client must not use -fomit-frame-pointer.") + AC_DEFINE(SAVE_CALL_COUNT, 8) + ;; + i[3456]86-*-dgux*) + AC_DEFINE(MAKE_BACK_GRAPH) + ;; + esac ] + fi) + +AC_SUBST(UNWINDLIBS) + +AC_ARG_ENABLE(redirect-malloc, +[ --enable-redirect-malloc redirect malloc and friends to GC routines]) + +if test "${enable_redirect_malloc}" = yes; then + if test "${enable_full_debug}" = yes; then + AC_DEFINE(REDIRECT_MALLOC, GC_debug_malloc_replacement) + AC_DEFINE(REDIRECT_REALLOC, GC_debug_realloc_replacement) + AC_DEFINE(REDIRECT_FREE, GC_debug_free) + else + AC_DEFINE(REDIRECT_MALLOC, GC_malloc) + fi +fi + +AC_DEFINE(_IN_LIBGC) + +AC_ARG_ENABLE(gc-assertions, +[ --enable-gc-assertions collector-internal assertion checking]) +if test "${enable_gc_assertions}" = yes; then + AC_DEFINE(GC_ASSERTIONS) +fi + +AC_ARG_ENABLE(quiet-build, [ --enable-quiet-build Enable quiet libgc build (on by default)], enable_quiet_build=$enableval, enable_quiet_build=yes) +AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host") + +if test "${multilib}" = "yes"; then + multilib_arg="--enable-multilib" +else + multilib_arg= +fi + +AC_OUTPUT(Makefile +m4/Makefile +include/Makefile +include/private/Makefile +doc/Makefile,, +srcdir=${srcdir} +host=${host} +CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +CC="${CC}" +DEFS="$DEFS" +) diff --git a/libgc/configure.in b/libgc/configure.in deleted file mode 100644 index 837e2cb9f15..00000000000 --- a/libgc/configure.in +++ /dev/null @@ -1,550 +0,0 @@ -# Copyright (c) 1999-2001 by Red Hat, Inc. All rights reserved. -# -# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED -# OR IMPLIED. ANY USE IS AT YOUR OWN RISK. -# -# Permission is hereby granted to use or copy this program -# for any purpose, provided the above notices are retained on all copies. -# Permission to modify the code and to distribute modified code is granted, -# provided the above notices are retained, and a notice that the code was -# modified is included with the above copyright notice. -# -# Original author: Tom Tromey -# Modified by: Grzegorz Jakacki - -dnl Process this file with autoconf to produce configure. - -AC_PREREQ([2.53]) -AC_INIT([libgc-mono], [6.6], [Hans_Boehm@hp.com]) - -AM_INIT_AUTOMAKE([1.9 no-define foreign]) -AC_CONFIG_SRCDIR(gcj_mlc.c) -AC_CONFIG_MACRO_DIR([m4]) -AC_CANONICAL_HOST - -AC_SUBST(PACKAGE) -AC_SUBST(GC_VERSION) - -AC_PROG_CC -AC_PROG_CXX - -m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) - -dnl automake 1.6 and later need the AM_PROG_AS macro. -ifdef([AM_PROG_AS],[AM_PROG_AS],[]) -AC_CHECK_TOOL(AR, ar) -AC_CHECK_TOOL(RANLIB, ranlib, :) # :) - -AC_PROG_INSTALL - -AM_MAINTAINER_MODE - -. [$]{srcdir}/configure.host - -# We use a separate variable to pass down CPPFLAGS and CFLAGS from the main mono -# configure, because of autoconf brokeness -if test "x$CPPFLAGS_FOR_LIBGC" != "x"; then - CPPFLAGS=$CPPFLAGS_FOR_LIBGC -fi -if test "x$CFLAGS_FOR_LIBGC" != "x"; then - CFLAGS=$CFLAGS_FOR_LIBGC -fi - -GC_CFLAGS=${gc_cflags} -AC_SUBST(GC_CFLAGS) - -case $enable_embed_check in -no) ;; -*) AC_MSG_ERROR([This module is now part of 'mono' and cannot be built as a stand-alone module any longer.]) ;; -esac - -THREADS=$with_libgc_threads - -AC_ARG_ENABLE(win32-dllmain, -[ --enable-win32-dllmain Define the DllMain function in win32_threads.c even if the collector is not built as a dll], -) - -AC_ARG_ENABLE(parallel-mark, -[ --enable-parallel-mark parallelize marking and free list construction], - [case "$THREADS" in - no | none | single) - AC_MSG_ERROR([Parallel mark requires --enable-threads=x spec]) - ;; - esac] -) - -AC_ARG_ENABLE(cplusplus, -[ --enable-cplusplus install C++ support], -) - -AM_CPPFLAGS=-I${srcdir}/include -THREADDLLIBS= -## Libraries needed to support dynamic loading and/or threads. -case "$THREADS" in - no | none | single) - THREADS=none - ;; - posix | pthreads) - THREADS=posix - AC_CHECK_LIB(pthread, pthread_self, THREADDLLIBS="-lpthread",,) - case "$host" in - x86-*-linux* | ia64-*-linux* | i386-*-linux* | i486-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* | alpha*-*-linux* | s390*-*-linux* | sparc*-*-linux* | powerpc-*-linux*) - AC_DEFINE(GC_LINUX_THREADS) - AC_DEFINE(_REENTRANT) - if test "${enable_parallel_mark}" = yes; then - AC_DEFINE(PARALLEL_MARK) - fi - AC_DEFINE(THREAD_LOCAL_ALLOC) - ;; - *-*-linux* | *-*-nacl*) - AC_DEFINE(GC_LINUX_THREADS) - AC_DEFINE(_REENTRANT) - ;; - *-*-aix*) - AC_DEFINE(GC_AIX_THREADS) - AC_DEFINE(_REENTRANT) - ;; - *-*-hpux*) - AC_MSG_WARN("Only HP/UX 11 threads are supported.") - AC_DEFINE(GC_HPUX_THREADS) - AC_DEFINE(_POSIX_C_SOURCE,199506L) - if test "${enable_parallel_mark}" = yes; then - AC_DEFINE(PARALLEL_MARK) - fi - AC_DEFINE(THREAD_LOCAL_ALLOC) - THREADDLLIBS="-lpthread -lrt" - ;; - *-*-freebsd*) - AC_DEFINE(GC_FREEBSD_THREADS) - if test "x$PTHREAD_CFLAGS" != "x"; then - AM_CPPFLAGS="$AM_CPPFLAGS $PTHREAD_CFLAGS" - fi - if test "x$PTHREAD_LIBS" = "x"; then - THREADDLLIBS=-pthread - else - THREADDLLIBS="$PTHREAD_LIBS" - fi - AC_DEFINE(THREAD_LOCAL_ALLOC) - ;; - *-*-solaris*) - AC_DEFINE(GC_SOLARIS_THREADS) - AC_DEFINE(GC_SOLARIS_PTHREADS) - ;; - *-*-irix*) - AC_DEFINE(GC_IRIX_THREADS) - ;; - *-*-cygwin*) - AC_DEFINE(GC_WIN32_THREADS) - ;; - *-*-darwin*) - AC_DEFINE(GC_DARWIN_THREADS) - AC_DEFINE(THREAD_LOCAL_ALLOC) - if test "${enable_parallel_mark}" = yes; then - AC_DEFINE(PARALLEL_MARK) - fi - ;; - *-*-netbsd*) - AC_DEFINE(GC_NETBSD_THREADS) - if test "${enable_parallel_mark}" = yes; then - AC_DEFINE(PARALLEL_MARK) - fi - AC_DEFINE(THREAD_LOCAL_ALLOC) - ;; - *-*-openbsd*) - AC_DEFINE(GC_OPENBSD_THREADS) - if test "${enable_parallel_mark}" = yes; then - AC_DEFINE(PARALLEL_MARK) - fi - AC_DEFINE(THREAD_LOCAL_ALLOC) - ;; - *-*-osf*) - AC_DEFINE(GC_OSF1_THREADS) - if test "${enable_parallel_mark}" = yes; then - AC_DEFINE(PARALLEL_MARK) - AC_DEFINE(THREAD_LOCAL_ALLOC) - # May want to enable it in other cases, too. - # Measurements havent yet been done. - fi - AM_CPPFLAGS="$AM_CPPFLAGS -pthread" - THREADDLLIBS="-lpthread -lrt" - ;; - *) - AC_MSG_ERROR("Pthreads not supported by the GC on this platform.") - ;; - esac - ;; - win32) - AC_DEFINE(GC_WIN32_THREADS) - dnl Wine getenv may not return NULL for missing entry - AC_DEFINE(NO_GETENV) - if test "${enable_win32_dllmain}" = yes; then - AC_DEFINE(GC_INSIDE_DLL) - fi - ;; - dgux386) - THREADS=dgux386 - AC_MSG_RESULT($THREADDLLIBS) - # Use pthread GCC switch - THREADDLLIBS=-pthread - if test "${enable_parallel_mark}" = yes; then - AC_DEFINE(PARALLEL_MARK) - fi - AC_DEFINE(THREAD_LOCAL_ALLOC) - AC_DEFINE(GC_DGUX386_THREADS) - AC_DEFINE(DGUX_THREADS) - # Enable _POSIX4A_DRAFT10_SOURCE with flag -pthread - AM_CPPFLAGS="-pthread $AM_CPPFLAGS" - ;; - aix) - THREADS=posix - THREADDLLIBS=-lpthread - AC_DEFINE(GC_AIX_THREADS) - AC_DEFINE(_REENTRANT) - ;; - decosf1 | irix | mach | os2 | solaris | dce | vxworks) - AC_MSG_ERROR(thread package $THREADS not yet supported) - ;; - *) - AC_MSG_ERROR($THREADS is an unknown thread package) - ;; -esac -AC_SUBST(THREADDLLIBS) - -case "$host" in - powerpc-*-darwin*) - powerpc_darwin=true - ;; -esac -AM_CONDITIONAL(POWERPC_DARWIN,test x$powerpc_darwin = xtrue) - -# Check if the GCC builtin __sync_bool_compare_and_swap is available. -# It is preferred in gc_locks.h for PPC as GCC 4.4 has a problem with the inline assembly there. -AC_MSG_CHECKING(for __sync_bool_compare_and_swap) -AC_TRY_COMPILE([],[ -volatile unsigned int foo = 0; -int main(int argc, char** argv) { - unsigned int r1 = __sync_bool_compare_and_swap(&foo, 0, 1); - return 0; -} -], [ -AC_MSG_RESULT(yes) -AC_DEFINE(HAS___SYNC_BOOL_COMPARE_AND_SWAP) -], [ -AC_MSG_RESULT(no) -]) - -AC_MSG_CHECKING(for xlc) -AC_TRY_COMPILE([],[ - #ifndef __xlC__ - # error - #endif -], [compiler_xlc=yes], [compiler_xlc=no]) -AC_MSG_RESULT($compiler_xlc) -AM_CONDITIONAL(COMPILER_XLC,test $compiler_xlc = yes) -if test $compiler_xlc = yes -a "$powerpc_darwin" = true; then - # the darwin stack-frame-walking code is completely broken on xlc - AC_DEFINE(DARWIN_DONT_PARSE_STACK) -fi - -# We never want libdl on darwin. It is a fake libdl that just ends up making -# dyld calls anyway -case "$host" in - *-*-darwin*) ;; - *) - AC_CHECK_LIB(dl, dlopen, THREADDLLIBS="$THREADDLLIBS -ldl") - ;; -esac - -AC_SUBST(EXTRA_TEST_LIBS) - -target_all=libgc.la -AC_SUBST(target_all) - -dnl If the target is an eCos system, use the appropriate eCos -dnl I/O routines. -dnl FIXME: this should not be a local option but a global target -dnl system; at present there is no eCos target. -TARGET_ECOS="no" -AC_ARG_WITH(ecos, -[ --with-ecos enable runtime eCos target support], -TARGET_ECOS="$with_ecos" -) - -addobjs= -addlibs= -addincludes= -addtests= -CXXAM_CPPFLAGS= -case "$TARGET_ECOS" in - no) - ;; - *) - AC_DEFINE(ECOS) - CXXINCLUDES="-I${TARGET_ECOS}/include" - addobjs="$addobjs ecos.lo" - ;; -esac - -if test "${enable_cplusplus}" = yes; then - addincludes="$addincludes include/gc_cpp.h include/gc_allocator.h" - addtests="$addtests test_cpp" -fi - -AM_CONDITIONAL(CPLUSPLUS, test "${enable_cplusplus}" = yes) - -AC_SUBST(CXX) - -AC_SUBST(AM_CPPFLAGS) -AC_SUBST(CXXINCLUDES) - -# Configuration of shared libraries -# -AC_MSG_CHECKING(whether to build shared libraries) -AC_ENABLE_SHARED - -case "$host" in - alpha-*-openbsd*) - enable_shared=no - AC_MSG_RESULT(no) - ;; - *) - AC_MSG_RESULT(yes) - ;; -esac - -# Configuration of machine-dependent code -# -AC_MSG_CHECKING(which machine-dependent code should be used) -machdep= -case "$host" in - alpha-*-openbsd*) - machdep="alpha_mach_dep.lo" - if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then - AC_MSG_WARN(OpenBSD/Alpha without dlopen(). Shared library support is disabled) - fi - ;; - alpha*-*-linux*) - machdep="alpha_mach_dep.lo" - ;; - i?86-*-solaris2.[[89]] | i?86-*-solaris2.1?) - AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED) - ;; - mipstx39-*-elf*) - machdep="mips_ultrix_mach_dep.lo" - AC_DEFINE(STACKBASE, __stackbase) - AC_DEFINE(DATASTART_IS_ETEXT) - ;; - mips-dec-ultrix*) - machdep="mips_ultrix_mach-dep.lo" - ;; - mips-nec-sysv*|mips-unknown-sysv*) - ;; - mips*-*-linux*) - ;; - mips-*-*) - machdep="mips_sgi_mach_dep.lo" - AC_DEFINE(NO_EXECUTE_PERMISSION) - ;; - sparc-*-netbsd*) - machdep="sparc_netbsd_mach_dep.lo" - ;; - sparc-sun-solaris2.3) - machdep="sparc_mach_dep.lo" - AC_DEFINE(SUNOS53_SHARED_LIB) - ;; - sparc*-sun-solaris2.*) - machdep="sparc_mach_dep.lo" - ;; - ia64-*-*) - machdep="mach_dep.lo ia64_save_regs_in_stack.lo" - target_ia64=true - ;; - *-*-nacl*) - AC_DEFINE(NO_EXECUTE_PERMISSION) - ;; -esac -if test x"$machdep" = x; then -AC_MSG_RESULT($machdep) - machdep="mach_dep.lo" -fi -addobjs="$addobjs $machdep" -# -# Adding object files directly to _LIBADD breaks -j builds, so we need to add the sources -# instead, but _SOURCES can't contain autoconf substitutions, so add them using automake -# conditionals. -# -#AC_SUBST(addobjs) -AC_SUBST(addincludes) -AC_SUBST(addlibs) -AC_SUBST(addtests) - -AM_CONDITIONAL(TARGET_IA64,test x$target_ia64 = xtrue) - -AC_PROG_LIBTOOL -# Use dolt (http://dolt.freedesktop.org/) instead of libtool for building. -DOLT - -# -# Check for AViiON Machines running DGUX -# -ac_is_dgux=no -AC_CHECK_HEADER(sys/dg_sys_info.h, -[ac_is_dgux=yes;]) - - ## :GOTCHA: we do not check anything but sys/dg_sys_info.h -if test $ac_is_dgux = yes; then - if test "$enable_full_debug" = "yes"; then - CFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" - CXXFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" - else - CFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" - CXXFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" - fi - AC_SUBST(CFLAGS) - AC_SUBST(CXXFLAGS) -fi - -dnl We use these options to decide which functions to include. -AC_ARG_WITH(target-subdir, -[ --with-target-subdir=SUBDIR - configuring with a cross compiler]) -AC_ARG_WITH(cross-host, -[ --with-cross-host=HOST configuring with a cross compiler]) - -# automake wants to see AC_EXEEXT. But we don't need it. And having -# it is actually a problem, because the compiler we're passed can't -# necessarily do a full link. So we fool automake here. -if false; then - # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands - # to nothing, so nothing would remain between `then' and `fi' if it - # were not for the `:' below. - : - AC_EXEEXT -fi - -AC_MSG_CHECKING([for threads package to use]) -AC_MSG_RESULT($THREADS) - -dnl As of 4.13a2, the collector will not properly work on Solaris when -dnl built with gcc and -O. So we remove -O in the appropriate case. -dnl Not needed anymore on Solaris. -AC_MSG_CHECKING(whether Solaris gcc optimization fix is necessary) -case "$host" in - *aix*) - if test "$GCC" = yes; then - AC_MSG_RESULT(yes) - new_CFLAGS= - for i in $CFLAGS; do - case "$i" in - -O*) - ;; - *) - new_CFLAGS="$new_CFLAGS $i" - ;; - esac - done - CFLAGS="$new_CFLAGS" - else - AC_MSG_RESULT(no) - fi - ;; - *) AC_MSG_RESULT(no) ;; -esac - -dnl We need to override the top-level CFLAGS. This is how we do it. -MY_CFLAGS="$CFLAGS" -AC_SUBST(MY_CFLAGS) - -dnl Include defines that have become de facto standard. -dnl ALL_INTERIOR_POINTERS can be overridden in startup code. -AC_DEFINE(SILENT) -AC_DEFINE(NO_SIGNALS) -AC_DEFINE(NO_EXECUTE_PERMISSION) -dnl AC_DEFINE(ALL_INTERIOR_POINTERS) - -dnl By default, make the library as general as possible. -AC_DEFINE(JAVA_FINALIZATION) -AC_DEFINE(GC_GCJ_SUPPORT) -AC_DEFINE(ATOMIC_UNCOLLECTABLE) - -dnl This is something of a hack. When cross-compiling we turn off -dnl some functionality. We also enable the "small" configuration. -dnl These is only correct when targetting an embedded system. FIXME. -if test -n "${with_cross_host}"; then - AC_DEFINE(NO_SIGSET) - AC_DEFINE(NO_CLOCK) - AC_DEFINE(SMALL_CONFIG) - AC_DEFINE(NO_DEBUGGING) -fi - -UNWINDLIBS= -AC_ARG_ENABLE(full-debug, -[ --enable-full-debug include full support for pointer backtracing etc.], -[ if test "$enable_full_debug" = "yes"; then - AC_MSG_WARN("Should define GC_DEBUG and use debug alloc. in clients.") - AC_DEFINE(KEEP_BACK_PTRS) - AC_DEFINE(DBG_HDRS_ALL) - case $host in - ia64-*-linux* ) - AC_DEFINE(MAKE_BACK_GRAPH) - AC_DEFINE(SAVE_CALL_COUNT, 8) - AC_CHECK_LIB(unwind, backtrace, [ - AC_DEFINE(GC_HAVE_BUILTIN_BACKTRACE) - UNWINDLIBS=-lunwind - AC_MSG_WARN("Client code may need to link against libunwind.") - ]) - ;; - x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* ) - AC_DEFINE(MAKE_BACK_GRAPH) - AC_MSG_WARN("Client must not use -fomit-frame-pointer.") - AC_DEFINE(SAVE_CALL_COUNT, 8) - ;; - i[3456]86-*-dgux*) - AC_DEFINE(MAKE_BACK_GRAPH) - ;; - esac ] - fi) - -AC_SUBST(UNWINDLIBS) - -AC_ARG_ENABLE(redirect-malloc, -[ --enable-redirect-malloc redirect malloc and friends to GC routines]) - -if test "${enable_redirect_malloc}" = yes; then - if test "${enable_full_debug}" = yes; then - AC_DEFINE(REDIRECT_MALLOC, GC_debug_malloc_replacement) - AC_DEFINE(REDIRECT_REALLOC, GC_debug_realloc_replacement) - AC_DEFINE(REDIRECT_FREE, GC_debug_free) - else - AC_DEFINE(REDIRECT_MALLOC, GC_malloc) - fi -fi - -AC_DEFINE(_IN_LIBGC) - -AC_ARG_ENABLE(gc-assertions, -[ --enable-gc-assertions collector-internal assertion checking]) -if test "${enable_gc_assertions}" = yes; then - AC_DEFINE(GC_ASSERTIONS) -fi - -AC_ARG_ENABLE(quiet-build, [ --enable-quiet-build Enable quiet libgc build (on by default)], enable_quiet_build=$enableval, enable_quiet_build=yes) -AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host") - -if test "${multilib}" = "yes"; then - multilib_arg="--enable-multilib" -else - multilib_arg= -fi - -AC_OUTPUT(Makefile -m4/Makefile -include/Makefile -include/private/Makefile -doc/Makefile,, -srcdir=${srcdir} -host=${host} -CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -CC="${CC}" -DEFS="$DEFS" -) diff --git a/libgc/doc/README b/libgc/doc/README index a19cb3021b0..eaba6e509d3 100644 --- a/libgc/doc/README +++ b/libgc/doc/README @@ -6,7 +6,7 @@ Copyright (c) 1999-2004 Hewlett-Packard Development Company, L.P. The file linux_threads.c is also Copyright (c) 1998 by Fergus Henderson. All rights reserved. -The files Makefile.am, and configure.in are +The files Makefile.am, and configure.ac are Copyright (c) 2001 by Red Hat Inc. All rights reserved. Several files supporting GNU-style builds are copyrighted by the Free diff --git a/libgc/doc/README.changes b/libgc/doc/README.changes index 97b0b684dde..fa6f279f518 100644 --- a/libgc/doc/README.changes +++ b/libgc/doc/README.changes @@ -1269,7 +1269,7 @@ Since 6.0alpha6: many places. (Thanks to Benjamin Lerman.) - Made win32_threads.c more tolerant of detaching a thread that it didn't know about. (Thanks to Paul Nash.) - - Added Makefile.am and configure.in from gcc to the distribution, with + - Added Makefile.am and configure.ac from gcc to the distribution, with minimal changes. For the moment, those are just placeholders. In the future, we're planning to switch to a GNU-style build environment for Un*x-like systems, though the old Makefile will remain as a backup. @@ -1491,7 +1491,7 @@ Since 6.1alpha3: - Fixed a formatting error in dbg_mlc.c. Added prototype to GC_abort() declaration. (Thanks to Michael Smith.) - Removed "source" argument to GC_find_start(). Eliminate GC_FIND_START(). - - Added win32 recognition code in configure.in. Changed some of the + - Added win32 recognition code in configure.ac. Changed some of the dllimport/export defines in gc.h. (Thanks to Adam Megacz.) - GC_malloc_many didn't set hb_last_reclaimed when it called GC_reclaim_generic. (I'm not sure this matters much, but ...) @@ -1629,7 +1629,7 @@ Since 6.1alpha4: Since 6.1alpha5: - Added GC_MAXIMUM_HEAP_SIZE environment variable. - - Fix configure.in for MIPS/LINUX. (Thanks to H.J. Lu.) + - Fix configure.ac for MIPS/LINUX. (Thanks to H.J. Lu.) - Double page hash table size for -DLARGE_CONFIG. - Integrated Bo Thorsen's X86-64 support. - STACKBOTTOM definition for LINUX/MIPS was partially changed back. @@ -1942,7 +1942,7 @@ Since 6.3alpha1: There is also still some code duplication with pthread_support.c. (Thread descriptors did become much smaller, since Ben Hutchings removed the thread context from them.) - - Integrated a Solaris configure.in patch from Rainer Orth. + - Integrated a Solaris configure.ac patch from Rainer Orth. - Added GC_IGNORE_FB and associated warning to very partially address the issue of the collector treating a mapped frame buffer as part of the root set. (Thanks to David Peroutka for providing some @@ -2151,7 +2151,7 @@ Since 6.3: it seems to be incorrect if the preceding memory op is a load. - Fixed print_block_list to print the correct kind number for STUBBORN. (Thanks to Rutger Ovidus.) - - Have configure.in generate an error if it is asked to support + - Have configure.ac generate an error if it is asked to support pthreads, but doesn't know how to. - Added Kazuhiro Inaoka's patch for Renesas M32R support. - Have the GNU build mechanism link with -ldl. Rename THREADLIBS diff --git a/libgc/finalize.c b/libgc/finalize.c index 91f6970180c..5626e872137 100644 --- a/libgc/finalize.c +++ b/libgc/finalize.c @@ -366,6 +366,15 @@ GC_process_togglerefs (void) GC_toggleref_array_size = w; } +/* Finalizer proc support */ +static void (*GC_object_finalized_proc) (GC_PTR obj); + +void +GC_set_finalizer_notify_proc (void (*proc) (GC_PTR obj)) +{ + GC_object_finalized_proc = proc; +} + static void push_and_mark_object (GC_PTR p) { @@ -877,6 +886,10 @@ void GC_finalize() fo_set_next(prev_fo, next_fo); } GC_fo_entries--; + + if (GC_object_finalized_proc) + GC_object_finalized_proc (real_ptr); + /* Add to list of objects awaiting finalization. */ fo_set_next(curr_fo, GC_finalize_now); GC_finalize_now = curr_fo; diff --git a/libgc/include/gc.h b/libgc/include/gc.h index a3eb3c2dc06..4693a3d9a54 100644 --- a/libgc/include/gc.h +++ b/libgc/include/gc.h @@ -778,6 +778,10 @@ GC_API int GC_unregister_long_link GC_PROTO((GC_PTR * /* link */)); GC_API void GC_toggleref_register_callback GC_PROTO((int (*proccess_toggleref) (GC_PTR obj))); GC_API void GC_toggleref_add (GC_PTR object, int strong_ref); +/* finalizer callback support */ +GC_API void GC_set_finalizer_notify_proc GC_PROTO((void (*object_finalized) (GC_PTR obj))); + + /* Returns !=0 if GC_invoke_finalizers has something to do. */ GC_API int GC_should_invoke_finalizers GC_PROTO((void)); diff --git a/libgc/version.h b/libgc/version.h index e1fe24bd0ab..9fcbb7b651f 100644 --- a/libgc/version.h +++ b/libgc/version.h @@ -1,4 +1,4 @@ -/* The version here should match that in configure/configure.in */ +/* The version here should match that in configure/configure.ac */ /* Eventually this one may become unnecessary. For now we need */ /* it to keep the old-style build process working. */ #define GC_TMP_VERSION_MAJOR 6 @@ -14,7 +14,7 @@ GC_TMP_VERSION_MINOR != GC_VERSION_MINOR || \ defined(GC_ALPHA_VERSION) != (GC_TMP_ALPHA_VERSION != GC_NOT_ALPHA) || \ defined(GC_ALPHA_VERSION) && GC_TMP_ALPHA_VERSION != GC_ALPHA_VERSION -# error Inconsistent version info. Check README, version.h, and configure.in. +# error Inconsistent version info. Check README, version.h, and configure.ac. # endif #else # define GC_VERSION_MAJOR GC_TMP_VERSION_MAJOR diff --git a/mcs/build/tests.make b/mcs/build/tests.make index 1d2a512447d..a576ba602db 100644 --- a/mcs/build/tests.make +++ b/mcs/build/tests.make @@ -11,7 +11,7 @@ tests_CLEAN_FILES := ifndef TEST_COMPILE -TEST_COMPILE = $(CSCOMPILE) +TEST_COMPILE = $(subst $(test_remove),,$(CSCOMPILE)) endif TEST_RUNTIME_WRAPPERS_PATH = $(shell dirname $(RUNTIME))/_tmpinst/bin diff --git a/mcs/class/Accessibility/Accessibility-net_4_5.csproj b/mcs/class/Accessibility/Accessibility-net_4_5.csproj index 46ab1607ccb..28d5043dcd4 100644 --- a/mcs/class/Accessibility/Accessibility-net_4_5.csproj +++ b/mcs/class/Accessibility/Accessibility-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -73,7 +74,7 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_4_5.csproj b/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_4_5.csproj index 1e11dffd260..c390f2dbcff 100644 --- a/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_4_5.csproj +++ b/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -109,15 +110,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/Cscompmgd/Cscompmgd-net_4_5.csproj b/mcs/class/Cscompmgd/Cscompmgd-net_4_5.csproj index d249b5528d5..a2783d9b1d5 100644 --- a/mcs/class/Cscompmgd/Cscompmgd-net_4_5.csproj +++ b/mcs/class/Cscompmgd/Cscompmgd-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -76,11 +77,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/CustomMarshalers/CustomMarshalers-net_4_5.csproj b/mcs/class/CustomMarshalers/CustomMarshalers-net_4_5.csproj index d53213ae915..b6553755974 100644 --- a/mcs/class/CustomMarshalers/CustomMarshalers-net_4_5.csproj +++ b/mcs/class/CustomMarshalers/CustomMarshalers-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -77,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/EntityFramework.SqlServer/EntityFramework.SqlServer-net_4_5.csproj b/mcs/class/EntityFramework.SqlServer/EntityFramework.SqlServer-net_4_5.csproj index a529f198e09..5477c74d824 100644 --- a/mcs/class/EntityFramework.SqlServer/EntityFramework.SqlServer-net_4_5.csproj +++ b/mcs/class/EntityFramework.SqlServer/EntityFramework.SqlServer-net_4_5.csproj @@ -18,6 +18,13 @@ EntityFramework.SqlServer v4.5 512 + + + true + true + + + ../ecma.pub true @@ -124,27 +131,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {CEE31F03-087E-4164-BBD4-990759B40C3E} - EntityFramework\EntityFramework-net_4_5 + EntityFramework-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 diff --git a/mcs/class/EntityFramework/EntityFramework-net_4_5.csproj b/mcs/class/EntityFramework/EntityFramework-net_4_5.csproj index 7c81911b07f..c99f52bcf5b 100644 --- a/mcs/class/EntityFramework/EntityFramework-net_4_5.csproj +++ b/mcs/class/EntityFramework/EntityFramework-net_4_5.csproj @@ -18,6 +18,13 @@ EntityFramework v4.5 512 + + + true + true + + + ../ecma.pub true @@ -1648,47 +1655,47 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {AF2BBF50-AB57-4CA1-8EF5-2B54C7418434} - System.Transactions\System.Transactions-net_4_5 + System.Transactions-net_4_5 {8328796E-8A15-4972-8F1E-2F15E7D57C42} - System.Xml.Linq\System.Xml.Linq-net_4_5 + System.Xml.Linq-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {63EC4158-FFAC-4867-8003-CF6054C8DF0B} - System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5 + System.ComponentModel.DataAnnotations-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {D554618C-5D38-413A-82BA-7A70B6FC61A3} - Microsoft.CSharp\Microsoft.CSharp-net_4_5 + Microsoft.CSharp-net_4_5 diff --git a/mcs/class/Facades/Makefile b/mcs/class/Facades/Makefile index 8f6854869c6..ff69d5deabb 100644 --- a/mcs/class/Facades/Makefile +++ b/mcs/class/Facades/Makefile @@ -8,7 +8,7 @@ monotouch_SUBDIRS = System.Collections.Concurrent System.Collections System.Comp System.Reflection.Extensions System.Reflection.Primitives System.Reflection System.Resources.ResourceManager System.Runtime.Extensions \ System.Runtime.InteropServices System.Runtime.InteropServices.WindowsRuntime System.Runtime.Numerics System.Runtime.Serialization.Json \ System.Runtime.Serialization.Primitives System.Runtime.Serialization.Xml System.Runtime System.Security.Principal System.ServiceModel.Http \ - System.ServiceModel.Primitives System.Text.Encoding.Extensions System.Text.Encoding System.Text.RegularExpressions System.Threading.Tasks.Parallel \ + System.ServiceModel.Primitives System.ServiceModel.Security System.Text.Encoding.Extensions System.Text.Encoding System.Text.RegularExpressions System.Threading.Tasks.Parallel \ System.Threading.Tasks System.Threading.Timer System.Threading System.Xml.ReaderWriter System.Xml.XDocument System.Xml.XmlSerializer mobile_static_SUBDIRS = $(monotouch_SUBDIRS) diff --git a/mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent-net_4_5.csproj b/mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent-net_4_5.csproj index fe9af866836..785ae325924 100644 --- a/mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent-net_4_5.csproj +++ b/mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent-net_4_5.csproj @@ -18,6 +18,13 @@ System.Collections.Concurrent v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Facades/System.Collections/System.Collections-net_4_5.csproj b/mcs/class/Facades/System.Collections/System.Collections-net_4_5.csproj index 07f594f6fab..7739de83730 100644 --- a/mcs/class/Facades/System.Collections/System.Collections-net_4_5.csproj +++ b/mcs/class/Facades/System.Collections/System.Collections-net_4_5.csproj @@ -18,6 +18,13 @@ System.Collections v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,19 +78,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations-net_4_5.csproj b/mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations-net_4_5.csproj index 79124c6c016..11fd690cf1a 100644 --- a/mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations-net_4_5.csproj +++ b/mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations-net_4_5.csproj @@ -18,6 +18,13 @@ System.ComponentModel.Annotations v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {63EC4158-FFAC-4867-8003-CF6054C8DF0B} - System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5 + System.ComponentModel.DataAnnotations-net_4_5 diff --git a/mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync-net_4_5.csproj b/mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync-net_4_5.csproj index f400ebc980e..e524ac8f8f3 100644 --- a/mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync-net_4_5.csproj +++ b/mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync-net_4_5.csproj @@ -18,6 +18,13 @@ System.ComponentModel.EventBasedAsync v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Facades/System.ComponentModel/System.ComponentModel-net_4_5.csproj b/mcs/class/Facades/System.ComponentModel/System.ComponentModel-net_4_5.csproj index 524b35472f3..0ad13cf5122 100644 --- a/mcs/class/Facades/System.ComponentModel/System.ComponentModel-net_4_5.csproj +++ b/mcs/class/Facades/System.ComponentModel/System.ComponentModel-net_4_5.csproj @@ -18,6 +18,13 @@ System.ComponentModel v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts-net_4_5.csproj b/mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts-net_4_5.csproj index bff7c5e0ca2..115c3e065c2 100644 --- a/mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts-net_4_5.csproj +++ b/mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts-net_4_5.csproj @@ -18,6 +18,13 @@ System.Diagnostics.Contracts v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug-net_4_5.csproj b/mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug-net_4_5.csproj index 5a9d868f231..7b44d0996db 100644 --- a/mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug-net_4_5.csproj +++ b/mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug-net_4_5.csproj @@ -18,6 +18,13 @@ System.Diagnostics.Debug v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools-net_4_5.csproj b/mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools-net_4_5.csproj index 4aa4baa76da..cf5c5e745e2 100644 --- a/mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools-net_4_5.csproj +++ b/mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools-net_4_5.csproj @@ -18,6 +18,13 @@ System.Diagnostics.Tools v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Facades/System.Diagnostics.Tracing/System.Diagnostics.Tracing-net_4_5.csproj b/mcs/class/Facades/System.Diagnostics.Tracing/System.Diagnostics.Tracing-net_4_5.csproj index 71078ed61e1..8182d201d8c 100644 --- a/mcs/class/Facades/System.Diagnostics.Tracing/System.Diagnostics.Tracing-net_4_5.csproj +++ b/mcs/class/Facades/System.Diagnostics.Tracing/System.Diagnostics.Tracing-net_4_5.csproj @@ -18,6 +18,13 @@ System.Diagnostics.Tracing v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime-net_4_5.csproj b/mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime-net_4_5.csproj index dc0b78b8814..529847be7b5 100644 --- a/mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime-net_4_5.csproj +++ b/mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime-net_4_5.csproj @@ -18,6 +18,13 @@ System.Dynamic.Runtime v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,19 +78,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Facades/System.Globalization/System.Globalization-net_4_5.csproj b/mcs/class/Facades/System.Globalization/System.Globalization-net_4_5.csproj index c13d0b502ae..67df5249ef7 100644 --- a/mcs/class/Facades/System.Globalization/System.Globalization-net_4_5.csproj +++ b/mcs/class/Facades/System.Globalization/System.Globalization-net_4_5.csproj @@ -18,6 +18,13 @@ System.Globalization v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.IO/System.IO-net_4_5.csproj b/mcs/class/Facades/System.IO/System.IO-net_4_5.csproj index 7a70db9f819..596ecf7afb0 100644 --- a/mcs/class/Facades/System.IO/System.IO-net_4_5.csproj +++ b/mcs/class/Facades/System.IO/System.IO-net_4_5.csproj @@ -18,6 +18,13 @@ System.IO v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions-net_4_5.csproj b/mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions-net_4_5.csproj index 870d659ad1d..5467fc471c5 100644 --- a/mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions-net_4_5.csproj +++ b/mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions-net_4_5.csproj @@ -18,6 +18,13 @@ System.Linq.Expressions v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel-net_4_5.csproj b/mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel-net_4_5.csproj index 069b01b1171..dea40f73f62 100644 --- a/mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel-net_4_5.csproj +++ b/mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel-net_4_5.csproj @@ -18,6 +18,13 @@ System.Linq.Parallel v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable-net_4_5.csproj b/mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable-net_4_5.csproj index 775bafd6e70..be8d3413307 100644 --- a/mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable-net_4_5.csproj +++ b/mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable-net_4_5.csproj @@ -18,6 +18,13 @@ System.Linq.Queryable v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/Facades/System.Linq/System.Linq-net_4_5.csproj b/mcs/class/Facades/System.Linq/System.Linq-net_4_5.csproj index c1f86a6f12e..a674a868fed 100644 --- a/mcs/class/Facades/System.Linq/System.Linq-net_4_5.csproj +++ b/mcs/class/Facades/System.Linq/System.Linq-net_4_5.csproj @@ -18,6 +18,13 @@ System.Linq v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation-net_4_5.csproj b/mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation-net_4_5.csproj index a4b3d4beca2..214fb1cd476 100644 --- a/mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation-net_4_5.csproj +++ b/mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation-net_4_5.csproj @@ -18,6 +18,13 @@ System.Net.NetworkInformation v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Facades/System.Net.Primitives/System.Net.Primitives-net_4_5.csproj b/mcs/class/Facades/System.Net.Primitives/System.Net.Primitives-net_4_5.csproj index bb9e054295b..adaab1def69 100644 --- a/mcs/class/Facades/System.Net.Primitives/System.Net.Primitives-net_4_5.csproj +++ b/mcs/class/Facades/System.Net.Primitives/System.Net.Primitives-net_4_5.csproj @@ -18,6 +18,13 @@ System.Net.Primitives v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Facades/System.Net.Requests/System.Net.Requests-net_4_5.csproj b/mcs/class/Facades/System.Net.Requests/System.Net.Requests-net_4_5.csproj index d3afb5203e4..09b309af64a 100644 --- a/mcs/class/Facades/System.Net.Requests/System.Net.Requests-net_4_5.csproj +++ b/mcs/class/Facades/System.Net.Requests/System.Net.Requests-net_4_5.csproj @@ -18,6 +18,13 @@ System.Net.Requests v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Facades/System.ObjectModel/System.ObjectModel-net_4_5.csproj b/mcs/class/Facades/System.ObjectModel/System.ObjectModel-net_4_5.csproj index c720b82c313..3c290c07e38 100644 --- a/mcs/class/Facades/System.ObjectModel/System.ObjectModel-net_4_5.csproj +++ b/mcs/class/Facades/System.ObjectModel/System.ObjectModel-net_4_5.csproj @@ -18,6 +18,13 @@ System.ObjectModel v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Facades/System.Reflection.Emit.ILGeneration/System.Reflection.Emit.ILGeneration-net_4_5.csproj b/mcs/class/Facades/System.Reflection.Emit.ILGeneration/System.Reflection.Emit.ILGeneration-net_4_5.csproj index f3a01fa4e8b..18738869be0 100644 --- a/mcs/class/Facades/System.Reflection.Emit.ILGeneration/System.Reflection.Emit.ILGeneration-net_4_5.csproj +++ b/mcs/class/Facades/System.Reflection.Emit.ILGeneration/System.Reflection.Emit.ILGeneration-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reflection.Emit.ILGeneration v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.Reflection.Emit.Lightweight/System.Reflection.Emit.Lightweight-net_4_5.csproj b/mcs/class/Facades/System.Reflection.Emit.Lightweight/System.Reflection.Emit.Lightweight-net_4_5.csproj index 5e37de37c88..62ea08f2ffa 100644 --- a/mcs/class/Facades/System.Reflection.Emit.Lightweight/System.Reflection.Emit.Lightweight-net_4_5.csproj +++ b/mcs/class/Facades/System.Reflection.Emit.Lightweight/System.Reflection.Emit.Lightweight-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reflection.Emit.Lightweight v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.Reflection.Emit/System.Reflection.Emit-net_4_5.csproj b/mcs/class/Facades/System.Reflection.Emit/System.Reflection.Emit-net_4_5.csproj index 185c48c77e4..1a1743fbd9b 100644 --- a/mcs/class/Facades/System.Reflection.Emit/System.Reflection.Emit-net_4_5.csproj +++ b/mcs/class/Facades/System.Reflection.Emit/System.Reflection.Emit-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reflection.Emit v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions-net_4_5.csproj b/mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions-net_4_5.csproj index e60886ccf44..6b5fa509b44 100644 --- a/mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions-net_4_5.csproj +++ b/mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reflection.Extensions v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives-net_4_5.csproj b/mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives-net_4_5.csproj index 1ba5bdedbc3..3d4df95f0f9 100644 --- a/mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives-net_4_5.csproj +++ b/mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reflection.Primitives v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.Reflection/System.Reflection-net_4_5.csproj b/mcs/class/Facades/System.Reflection/System.Reflection-net_4_5.csproj index eb4cd6e075b..82b4dbdd6c6 100644 --- a/mcs/class/Facades/System.Reflection/System.Reflection-net_4_5.csproj +++ b/mcs/class/Facades/System.Reflection/System.Reflection-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reflection v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager-net_4_5.csproj b/mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager-net_4_5.csproj index 0fc45e22ee4..9625feac8b7 100644 --- a/mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager-net_4_5.csproj +++ b/mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager-net_4_5.csproj @@ -18,6 +18,13 @@ System.Resources.ResourceManager v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions-net_4_5.csproj b/mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions-net_4_5.csproj index 2c7de2ddcde..cb8249005dd 100644 --- a/mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions-net_4_5.csproj +++ b/mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions-net_4_5.csproj @@ -18,6 +18,13 @@ System.Runtime.Extensions v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Facades/System.Runtime.InteropServices.WindowsRuntime/System.Runtime.InteropServices.WindowsRuntime-net_4_5.csproj b/mcs/class/Facades/System.Runtime.InteropServices.WindowsRuntime/System.Runtime.InteropServices.WindowsRuntime-net_4_5.csproj index 05c287dd3a9..35c6e825d29 100644 --- a/mcs/class/Facades/System.Runtime.InteropServices.WindowsRuntime/System.Runtime.InteropServices.WindowsRuntime-net_4_5.csproj +++ b/mcs/class/Facades/System.Runtime.InteropServices.WindowsRuntime/System.Runtime.InteropServices.WindowsRuntime-net_4_5.csproj @@ -18,6 +18,13 @@ System.Runtime.InteropServices.WindowsRuntime v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices-net_4_5.csproj b/mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices-net_4_5.csproj index 00fa6b3eb60..f28fddd49b1 100644 --- a/mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices-net_4_5.csproj +++ b/mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices-net_4_5.csproj @@ -18,6 +18,13 @@ System.Runtime.InteropServices v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,19 +78,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics-net_4_5.csproj b/mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics-net_4_5.csproj index cd4e31882ff..650e2d7ff29 100644 --- a/mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics-net_4_5.csproj +++ b/mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics-net_4_5.csproj @@ -18,6 +18,13 @@ System.Runtime.Numerics v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {14631AC9-FDC6-4561-A04C-6913947C939E} - System.Numerics\System.Numerics-net_4_5 + System.Numerics-net_4_5 diff --git a/mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json-net_4_5.csproj b/mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json-net_4_5.csproj index a880c8b76d5..1208c6450e4 100644 --- a/mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json-net_4_5.csproj +++ b/mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json-net_4_5.csproj @@ -18,6 +18,13 @@ System.Runtime.Serialization.Json v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 diff --git a/mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives-net_4_5.csproj b/mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives-net_4_5.csproj index 83f042e51e4..1e4d9957799 100644 --- a/mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives-net_4_5.csproj +++ b/mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives-net_4_5.csproj @@ -18,6 +18,13 @@ System.Runtime.Serialization.Primitives v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 diff --git a/mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml-net_4_5.csproj b/mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml-net_4_5.csproj index 3ce07ff9374..8b6f6eb3383 100644 --- a/mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml-net_4_5.csproj +++ b/mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml-net_4_5.csproj @@ -18,6 +18,13 @@ System.Runtime.Serialization.Xml v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,19 +78,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/Facades/System.Runtime/System.Runtime-net_4_5.csproj b/mcs/class/Facades/System.Runtime/System.Runtime-net_4_5.csproj index 1ff2f7c3e60..d8192f88f4f 100644 --- a/mcs/class/Facades/System.Runtime/System.Runtime-net_4_5.csproj +++ b/mcs/class/Facades/System.Runtime/System.Runtime-net_4_5.csproj @@ -18,6 +18,13 @@ System.Runtime v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,23 +78,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {51392CAD-5DCF-443F-8ECF-C9113DF3B91A} - System.ComponentModel.Composition\System.ComponentModel.Composition-net_4_5 + System.ComponentModel.Composition-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/Facades/System.Security.Principal/System.Security.Principal-net_4_5.csproj b/mcs/class/Facades/System.Security.Principal/System.Security.Principal-net_4_5.csproj index aa6669d68c9..a4cbb6299c9 100644 --- a/mcs/class/Facades/System.Security.Principal/System.Security.Principal-net_4_5.csproj +++ b/mcs/class/Facades/System.Security.Principal/System.Security.Principal-net_4_5.csproj @@ -18,6 +18,13 @@ System.Security.Principal v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http-net_4_5.csproj b/mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http-net_4_5.csproj index 0a2b1b579c5..d66906dce8a 100644 --- a/mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http-net_4_5.csproj +++ b/mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http-net_4_5.csproj @@ -18,6 +18,13 @@ System.ServiceModel.Http v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {F2156C09-C377-4945-A690-39CFBF3319B3} - System.ServiceModel\System.ServiceModel-net_4_5 + System.ServiceModel-net_4_5 diff --git a/mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives-net_4_5.csproj b/mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives-net_4_5.csproj index 9fc9038ac51..d0cb63b3eae 100644 --- a/mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives-net_4_5.csproj +++ b/mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives-net_4_5.csproj @@ -18,6 +18,13 @@ System.ServiceModel.Primitives v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,19 +78,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {F2156C09-C377-4945-A690-39CFBF3319B3} - System.ServiceModel\System.ServiceModel-net_4_5 + System.ServiceModel-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/Facades/System.ServiceModel.Security/AssemblyInfo.cs b/mcs/class/Facades/System.ServiceModel.Security/AssemblyInfo.cs new file mode 100644 index 00000000000..f222e8b656d --- /dev/null +++ b/mcs/class/Facades/System.ServiceModel.Security/AssemblyInfo.cs @@ -0,0 +1,41 @@ +// +// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; + +[assembly: AssemblyTitle ("System.ServiceModel.Security.dll")] +[assembly: AssemblyDescription ("System.ServiceModel.Security.dll")] +[assembly: AssemblyDefaultAlias ("System.ServiceModel.Security.dll")] +[assembly: AssemblyCompany ("Xamarin, Inc.")] +[assembly: AssemblyProduct ("Mono Common Language Infrastructure")] +[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")] +[assembly: AssemblyVersion ("4.0.0.0")] +[assembly: AssemblyInformationalVersion ("4.0.0.0")] +[assembly: AssemblyFileVersion ("4.0.0.0")] +[assembly: AssemblyDelaySign (true)] +[assembly: AssemblyKeyFile ("../../msfinal.pub")] + +[assembly: ReferenceAssembly] + + diff --git a/mcs/class/Facades/System.ServiceModel.Security/Makefile b/mcs/class/Facades/System.ServiceModel.Security/Makefile new file mode 100644 index 00000000000..b021efff57f --- /dev/null +++ b/mcs/class/Facades/System.ServiceModel.Security/Makefile @@ -0,0 +1,22 @@ +MCS_BUILD_DIR = ../../../build + +thisdir = class/Facades/System.ServiceModel.Security +SUBDIRS = +include $(MCS_BUILD_DIR)/rules.make + +LIBRARY_SUBDIR = Facades +LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades + +LIBRARY = System.ServiceModel.Security.dll + +KEY_FILE = ../../msfinal.pub +SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699 +LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.ServiceModel + +PLATFORM_DEBUG_FLAGS = + +NO_TEST = yes + +include $(MCS_BUILD_DIR)/library.make + + diff --git a/mcs/class/Facades/System.ServiceModel.Security/System.ServiceModel.Security.dll.sources b/mcs/class/Facades/System.ServiceModel.Security/System.ServiceModel.Security.dll.sources new file mode 100644 index 00000000000..8e33d4ddeae --- /dev/null +++ b/mcs/class/Facades/System.ServiceModel.Security/System.ServiceModel.Security.dll.sources @@ -0,0 +1,3 @@ +TypeForwarders.cs +AssemblyInfo.cs + diff --git a/mcs/class/Facades/System.ServiceModel.Security/TypeForwarders.cs b/mcs/class/Facades/System.ServiceModel.Security/TypeForwarders.cs new file mode 100644 index 00000000000..e0cc880df29 --- /dev/null +++ b/mcs/class/Facades/System.ServiceModel.Security/TypeForwarders.cs @@ -0,0 +1,39 @@ +// +// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.LocalClientSecuritySettings))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.SecurityBindingElement))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.SecurityHeaderLayout))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.TransportSecurityBindingElement))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.DnsEndpointIdentity))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageSecurityVersion))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.BasicSecurityProfileVersion))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecureConversationVersion))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecurityPolicyVersion))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecurityVersion))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.Tokens.SecureConversationSecurityTokenParameters))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.Tokens.SecurityTokenParameters))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.Tokens.SupportingTokenParameters))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.Tokens.UserNameSecurityTokenParameters))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.TrustVersion))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.SpnEndpointIdentity))] +[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.UpnEndpointIdentity))] diff --git a/mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions-net_4_5.csproj b/mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions-net_4_5.csproj index 3a55e57e568..4a6b140ae32 100644 --- a/mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions-net_4_5.csproj +++ b/mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions-net_4_5.csproj @@ -18,6 +18,13 @@ System.Text.Encoding.Extensions v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.Text.Encoding/System.Text.Encoding-net_4_5.csproj b/mcs/class/Facades/System.Text.Encoding/System.Text.Encoding-net_4_5.csproj index 209c0590891..6c03c541652 100644 --- a/mcs/class/Facades/System.Text.Encoding/System.Text.Encoding-net_4_5.csproj +++ b/mcs/class/Facades/System.Text.Encoding/System.Text.Encoding-net_4_5.csproj @@ -18,6 +18,13 @@ System.Text.Encoding v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions-net_4_5.csproj b/mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions-net_4_5.csproj index b22e1ed1714..8603aca5d46 100644 --- a/mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions-net_4_5.csproj +++ b/mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions-net_4_5.csproj @@ -18,6 +18,13 @@ System.Text.RegularExpressions v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel-net_4_5.csproj b/mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel-net_4_5.csproj index 109f1b88022..e7a56903179 100644 --- a/mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel-net_4_5.csproj +++ b/mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel-net_4_5.csproj @@ -18,6 +18,13 @@ System.Threading.Tasks.Parallel v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks-net_4_5.csproj b/mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks-net_4_5.csproj index 269a6fe3e74..6cbf5f5fe64 100644 --- a/mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks-net_4_5.csproj +++ b/mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks-net_4_5.csproj @@ -18,6 +18,13 @@ System.Threading.Tasks v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/Facades/System.Threading.Timer/System.Threading.Timer-net_4_5.csproj b/mcs/class/Facades/System.Threading.Timer/System.Threading.Timer-net_4_5.csproj index e3d5a299d7d..35f690a0c96 100644 --- a/mcs/class/Facades/System.Threading.Timer/System.Threading.Timer-net_4_5.csproj +++ b/mcs/class/Facades/System.Threading.Timer/System.Threading.Timer-net_4_5.csproj @@ -18,6 +18,13 @@ System.Threading.Timer v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,19 +78,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/Facades/System.Threading/System.Threading-net_4_5.csproj b/mcs/class/Facades/System.Threading/System.Threading-net_4_5.csproj index 0c2c715a492..855dcde2a23 100644 --- a/mcs/class/Facades/System.Threading/System.Threading-net_4_5.csproj +++ b/mcs/class/Facades/System.Threading/System.Threading-net_4_5.csproj @@ -18,6 +18,13 @@ System.Threading v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,19 +78,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter-net_4_5.csproj b/mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter-net_4_5.csproj index 1d317106725..c5f31c82bbc 100644 --- a/mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter-net_4_5.csproj +++ b/mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter-net_4_5.csproj @@ -18,6 +18,13 @@ System.Xml.ReaderWriter v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument-net_4_5.csproj b/mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument-net_4_5.csproj index 962af3458f3..030fbbb7c18 100644 --- a/mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument-net_4_5.csproj +++ b/mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument-net_4_5.csproj @@ -18,6 +18,13 @@ System.Xml.XDocument v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,19 +78,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {8328796E-8A15-4972-8F1E-2F15E7D57C42} - System.Xml.Linq\System.Xml.Linq-net_4_5 + System.Xml.Linq-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer-net_4_5.csproj b/mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer-net_4_5.csproj index aa436dcd882..7ef501521c3 100644 --- a/mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer-net_4_5.csproj +++ b/mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer-net_4_5.csproj @@ -18,6 +18,13 @@ System.Xml.XmlSerializer v4.5 512 + + + true + true + + + ../../msfinal.pub true @@ -71,15 +78,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/I18N/CJK/I18N.CJK-net_4_5.csproj b/mcs/class/I18N/CJK/I18N.CJK-net_4_5.csproj index 5a517b6f6d6..dec298ea7f2 100644 --- a/mcs/class/I18N/CJK/I18N.CJK-net_4_5.csproj +++ b/mcs/class/I18N/CJK/I18N.CJK-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -83,11 +84,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {C337A9A4-3797-4339-AD23-493DF062CD76} - Common\I18N-net_4_5 + I18N-net_4_5 diff --git a/mcs/class/I18N/Common/I18N-net_4_5.csproj b/mcs/class/I18N/Common/I18N-net_4_5.csproj index 76baf716f31..d982706eeda 100644 --- a/mcs/class/I18N/Common/I18N-net_4_5.csproj +++ b/mcs/class/I18N/Common/I18N-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -78,7 +79,7 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/I18N/MidEast/I18N.MidEast-net_4_5.csproj b/mcs/class/I18N/MidEast/I18N.MidEast-net_4_5.csproj index 66fbe53d000..ea241e7de1b 100644 --- a/mcs/class/I18N/MidEast/I18N.MidEast-net_4_5.csproj +++ b/mcs/class/I18N/MidEast/I18N.MidEast-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -78,11 +79,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {C337A9A4-3797-4339-AD23-493DF062CD76} - Common\I18N-net_4_5 + I18N-net_4_5 diff --git a/mcs/class/I18N/Other/I18N.Other-net_4_5.csproj b/mcs/class/I18N/Other/I18N.Other-net_4_5.csproj index 0e6cbf1e160..a0f092aee99 100644 --- a/mcs/class/I18N/Other/I18N.Other-net_4_5.csproj +++ b/mcs/class/I18N/Other/I18N.Other-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -80,11 +81,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {C337A9A4-3797-4339-AD23-493DF062CD76} - Common\I18N-net_4_5 + I18N-net_4_5 diff --git a/mcs/class/I18N/Rare/I18N.Rare-net_4_5.csproj b/mcs/class/I18N/Rare/I18N.Rare-net_4_5.csproj index 08f7769891d..bc4392d65da 100644 --- a/mcs/class/I18N/Rare/I18N.Rare-net_4_5.csproj +++ b/mcs/class/I18N/Rare/I18N.Rare-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -108,11 +109,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {C337A9A4-3797-4339-AD23-493DF062CD76} - Common\I18N-net_4_5 + I18N-net_4_5 diff --git a/mcs/class/I18N/West/I18N.West-net_4_5.csproj b/mcs/class/I18N/West/I18N.West-net_4_5.csproj index 12daa0d7364..b2487de8957 100644 --- a/mcs/class/I18N/West/I18N.West-net_4_5.csproj +++ b/mcs/class/I18N/West/I18N.West-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -86,11 +87,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {C337A9A4-3797-4339-AD23-493DF062CD76} - Common\I18N-net_4_5 + I18N-net_4_5 diff --git a/mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_4_5.csproj b/mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_4_5.csproj index 9a0a126b3c1..f9d1cdda39c 100644 --- a/mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_4_5.csproj +++ b/mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -94,19 +95,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 diff --git a/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj b/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj index f6f3e38121a..0cc37dc7f45 100644 --- a/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj +++ b/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -119,15 +120,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj b/mcs/class/Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj index 4c79552f4af..48bf07b6720 100644 --- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -978,43 +979,43 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {CB1CB976-AA54-4553-B0E7-05665B199EC4} - System.Drawing\System.Drawing-net_4_5 + System.Drawing-net_4_5 {FACE8136-C95A-4788-90B2-DB0ECF7A020A} - Accessibility\Accessibility-net_4_5 + Accessibility-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {85A9B29B-58FF-4FBE-8998-B0A89AC22880} - Mono.Posix\Mono.Posix-net_4_5 + Mono.Posix-net_4_5 {1D660912-8164-4499-A2D7-A3B2FE742E17} - Mono.WebBrowser\Mono.WebBrowser-net_4_5 + Mono.WebBrowser-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {B12AABBC-30D1-4885-BF3F-A53B970F68FB} - System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5 + System.Runtime.Serialization.Formatters.Soap-net_4_5 diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj index 708d5b1c55b..df6603cfa85 100644 --- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj +++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -145,27 +146,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {DA3B9FEE-8FBD-4587-B760-65420765256A} - Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5 + Microsoft.Build.Framework-net_4_5 {6E1C7BDE-7B9E-47B0-A7B2-1561822FE922} - Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5 + Microsoft.Build.Utilities-net_4_5 diff --git a/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj b/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj index e11230333de..64b5a4134b7 100644 --- a/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj +++ b/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -131,11 +132,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_4_5.csproj b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_4_5.csproj index 134fdb51ff9..a811de97c38 100644 --- a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_4_5.csproj +++ b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -189,39 +190,39 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {B102F27C-1A07-487F-BA5B-D5155D201112} - Managed.Windows.Forms\System.Windows.Forms-net_4_5 + System.Windows.Forms-net_4_5 {6E1C7BDE-7B9E-47B0-A7B2-1561822FE922} - Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5 + Microsoft.Build.Utilities-net_4_5 {DA3B9FEE-8FBD-4587-B760-65420765256A} - Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5 + Microsoft.Build.Framework-net_4_5 {54DFC5A7-7C1D-4BA5-A0F7-F0B312E1E076} - Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5 + Microsoft.Build.Engine-net_4_5 {73FB1B7E-09F9-4E7F-A63A-C407A93BCA59} - Mono.XBuild.Tasks\Mono.XBuild.Tasks-net_4_5 + Mono.XBuild.Tasks-net_4_5 diff --git a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/AL.cs b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/AL.cs index 1fc961b72dc..2833e27fda1 100644 --- a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/AL.cs +++ b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/AL.cs @@ -57,9 +57,15 @@ namespace Microsoft.Build.Tasks { else commandLine.AppendSwitch ("/delaysign-"); commandLine.AppendSwitchIfNotNull ("/description:", Description); - if (EmbedResources != null) - foreach (ITaskItem item in EmbedResources) - commandLine.AppendSwitchIfNotNull ("/embed:", item.ItemSpec); + if (EmbedResources != null) { + foreach (ITaskItem item in EmbedResources) { + string logical_name = item.GetMetadata ("LogicalName"); + if (!string.IsNullOrEmpty (logical_name)) + commandLine.AppendSwitchIfNotNull ("/embed:", string.Format ("{0},{1}", item.ItemSpec, logical_name)); + else + commandLine.AppendSwitchIfNotNull ("/embed:", item.ItemSpec); + } + } commandLine.AppendSwitchIfNotNull ("/evidence:", EvidenceFile); commandLine.AppendSwitchIfNotNull ("/fileversion:", FileVersion); commandLine.AppendSwitchIfNotNull ("/flags:", Flags); diff --git a/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ALTest.cs b/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ALTest.cs index 7b92594d0b8..56f9ea36813 100644 --- a/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ALTest.cs +++ b/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ALTest.cs @@ -27,6 +27,7 @@ using System; using System.Collections; +using System.Collections.Generic; using Microsoft.Build.BuildEngine; using Microsoft.Build.Framework; using Microsoft.Build.Tasks; @@ -287,6 +288,20 @@ namespace MonoTests.Microsoft.Build.Tasks { Assert.AreEqual ("/embed:a /embed:b", clbe.ToString (), "A1"); } + [Test] + public void TestEmbedResourcesWithLogicalName () + { + ALExtended ale = new ALExtended (); + CommandLineBuilderExtension clbe = new CommandLineBuilderExtension (); + var dict = new Dictionary (); + dict ["LogicalName"] = "value"; + + ale.EmbedResources = new ITaskItem [2] { new TaskItem ("a", dict), new TaskItem ("b", dict) }; + ale.ARFC (clbe); + + Assert.AreEqual ("/embed:a,value /embed:b,value", clbe.ToString (), "A1"); + } + [Test] public void TestEvidenceFile () { diff --git a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj index b4c72efa977..f68c6db23ea 100644 --- a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj +++ b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -92,23 +93,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {DA3B9FEE-8FBD-4587-B760-65420765256A} - Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5 + Microsoft.Build.Framework-net_4_5 diff --git a/mcs/class/Microsoft.Build/Microsoft.Build-net_4_5.csproj b/mcs/class/Microsoft.Build/Microsoft.Build-net_4_5.csproj index bd043e993e3..b35509f5247 100644 --- a/mcs/class/Microsoft.Build/Microsoft.Build-net_4_5.csproj +++ b/mcs/class/Microsoft.Build/Microsoft.Build-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -179,27 +180,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {54DFC5A7-7C1D-4BA5-A0F7-F0B312E1E076} - Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5 + Microsoft.Build.Engine-net_4_5 {DA3B9FEE-8FBD-4587-B760-65420765256A} - Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5 + Microsoft.Build.Framework-net_4_5 diff --git a/mcs/class/Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj b/mcs/class/Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj index 38006848872..36f0ad6dbba 100644 --- a/mcs/class/Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj +++ b/mcs/class/Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -95,15 +96,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {811AC316-9CC2-497D-A45E-7B6B1E0E481B} - Mono.CSharp\Mono.CSharp-net_4_5 + Mono.CSharp-net_4_5 diff --git a/mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_4_5.csproj b/mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_4_5.csproj index 60141727634..fdc3b194187 100644 --- a/mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_4_5.csproj +++ b/mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -82,11 +83,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj b/mcs/class/Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj index a840d891af8..2077c59c4ff 100644 --- a/mcs/class/Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj +++ b/mcs/class/Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -78,19 +79,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 diff --git a/mcs/class/Mono.C5/Mono.C5-net_4_5.csproj b/mcs/class/Mono.C5/Mono.C5-net_4_5.csproj index 270d7a4b83b..a4783febcaa 100644 --- a/mcs/class/Mono.C5/Mono.C5-net_4_5.csproj +++ b/mcs/class/Mono.C5/Mono.C5-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -102,11 +103,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Mono.CSharp/Mono.CSharp-net_4_5.csproj b/mcs/class/Mono.CSharp/Mono.CSharp-net_4_5.csproj index 9fb2df1c2c8..c3cdc5974a0 100644 --- a/mcs/class/Mono.CSharp/Mono.CSharp-net_4_5.csproj +++ b/mcs/class/Mono.CSharp/Mono.CSharp-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -127,19 +128,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Mono.CSharp/Test/Evaluator/TypesTest.cs b/mcs/class/Mono.CSharp/Test/Evaluator/TypesTest.cs index bd0167efbf0..970aa33443d 100644 --- a/mcs/class/Mono.CSharp/Test/Evaluator/TypesTest.cs +++ b/mcs/class/Mono.CSharp/Test/Evaluator/TypesTest.cs @@ -98,5 +98,13 @@ namespace MonoTests.EvaluatorTest Evaluator.Run ("struct B { public string foo; public int bar; }"); Evaluator.Run ("B aStruct = new B { foo = \"foo\", bar = 1 };"); } + + [Test] + public void NestedType () + { + Evaluator.Run ("class A { class B { } }"); + Evaluator.Run ("var x = new A ();"); + + } } } \ No newline at end of file diff --git a/mcs/class/Mono.Cairo/Mono.Cairo-net_4_5.csproj b/mcs/class/Mono.Cairo/Mono.Cairo-net_4_5.csproj index 116f8fed010..7781cfdbf75 100644 --- a/mcs/class/Mono.Cairo/Mono.Cairo-net_4_5.csproj +++ b/mcs/class/Mono.Cairo/Mono.Cairo-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -125,7 +126,7 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_5.csproj b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_5.csproj index 558d6dcd1ce..8c1b0c48e5a 100644 --- a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_5.csproj +++ b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_5.csproj @@ -18,6 +18,12 @@ Mono.Cecil.Mdb v4.5 512 + + + true + + + ../mono.snk true @@ -76,15 +82,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {F6DD456E-ADE4-419D-997F-41ECA0CE79F7} - Mono.Cecil\Mono.Cecil-net_4_5 + Mono.Cecil-net_4_5 diff --git a/mcs/class/Mono.Cecil/Mono.Cecil-net_4_5.csproj b/mcs/class/Mono.Cecil/Mono.Cecil-net_4_5.csproj index 69e43221eb5..5810015d5b9 100644 --- a/mcs/class/Mono.Cecil/Mono.Cecil-net_4_5.csproj +++ b/mcs/class/Mono.Cecil/Mono.Cecil-net_4_5.csproj @@ -18,6 +18,12 @@ Mono.Cecil v4.5 512 + + + true + + + ../mono.snk true @@ -196,11 +202,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/Mono.CodeContracts/Mono.CodeContracts-net_4_5.csproj b/mcs/class/Mono.CodeContracts/Mono.CodeContracts-net_4_5.csproj index 3bbef324836..7f50fed785f 100644 --- a/mcs/class/Mono.CodeContracts/Mono.CodeContracts-net_4_5.csproj +++ b/mcs/class/Mono.CodeContracts/Mono.CodeContracts-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -446,23 +447,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {F6DD456E-ADE4-419D-997F-41ECA0CE79F7} - Mono.Cecil\Mono.Cecil-net_4_5 + Mono.Cecil-net_4_5 {9ABB7BB9-5EA1-4081-B205-5658A602C1F5} - Mono.Cecil.Mdb\Mono.Cecil.Mdb-net_4_5 + Mono.Cecil.Mdb-net_4_5 diff --git a/mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_5.csproj b/mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_5.csproj index 3155074eb5b..5c2bd0b3136 100644 --- a/mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_5.csproj +++ b/mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -77,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj index 8dca41b2659..226f6e66810 100644 --- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj +++ b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -101,23 +102,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {AF2BBF50-AB57-4CA1-8EF5-2B54C7418434} - System.Transactions\System.Transactions-net_4_5 + System.Transactions-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_4_5.csproj b/mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_4_5.csproj index 4d8ab1edf1f..d54e8b0c829 100644 --- a/mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_4_5.csproj +++ b/mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -107,19 +108,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {D68D4FED-CA32-4800-A628-58BAE485562C} - Mono.Security\Mono.Security-net_4_5 + Mono.Security-net_4_5 diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_4_5.csproj b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_4_5.csproj index 083c66e6e9a..c61490cd1a5 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_4_5.csproj +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_4_5.csproj @@ -18,6 +18,12 @@ Mono.Debugger.Soft v4.5 512 + + + true + + + ../mono.snk true @@ -145,19 +151,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {F6DD456E-ADE4-419D-997F-41ECA0CE79F7} - Mono.Cecil\Mono.Cecil-net_4_5 + Mono.Cecil-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs index 6d196aabbab..03d2d3af13a 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs @@ -1432,12 +1432,12 @@ namespace Mono.Debugger.Soft // public void StartBuffering () { buffer_packets = true; - if (Version.AtLeast (3, 34)) + if (Version.AtLeast (2, 34)) VM_StartBuffering (); } public void StopBuffering () { - if (Version.AtLeast (3, 34)) + if (Version.AtLeast (2, 34)) VM_StopBuffering (); buffer_packets = false; @@ -1983,21 +1983,20 @@ namespace Mono.Debugger.Soft return SendReceive (CommandSet.THREAD, (int)CmdThread.GET_NAME, new PacketWriter ().WriteId (id)).ReadString (); } - internal FrameInfo[] Thread_GetFrameInfo (long id, int start_frame, int length) { - var res = SendReceive (CommandSet.THREAD, (int)CmdThread.GET_FRAME_INFO, new PacketWriter ().WriteId (id).WriteInt (start_frame).WriteInt (length)); - int count = res.ReadInt (); - - var frames = new FrameInfo [count]; - for (int i = 0; i < count; ++i) { - var f = new FrameInfo (); - f.id = res.ReadInt (); - f.method = res.ReadId (); - f.il_offset = res.ReadInt (); - f.flags = (StackFrameFlags)res.ReadByte (); - frames [i] = f; - } - - return frames; + internal void Thread_GetFrameInfo (long id, int start_frame, int length, Action resultCallaback) { + Send (CommandSet.THREAD, (int)CmdThread.GET_FRAME_INFO, new PacketWriter ().WriteId (id).WriteInt (start_frame).WriteInt (length), (res) => { + int count = res.ReadInt (); + var frames = new FrameInfo[count]; + for (int i = 0; i < count; ++i) { + var f = new FrameInfo (); + f.id = res.ReadInt (); + f.method = res.ReadId (); + f.il_offset = res.ReadInt (); + f.flags = (StackFrameFlags)res.ReadByte (); + frames [i] = f; + } + resultCallaback (frames); + }, 1); } internal int Thread_GetState (long id) { diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ObjectMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ObjectMirror.cs index f3eedccaf5b..030fa3e3e4a 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ObjectMirror.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ObjectMirror.cs @@ -262,7 +262,7 @@ namespace Mono.Debugger.Soft f |= InvokeFlags.SINGLE_THREADED; InvokeAsyncResult r = new InvokeAsyncResult { AsyncState = state, AsyncWaitHandle = new ManualResetEvent (false), VM = vm, Thread = thread, Callback = callback }; - + thread.InvalidateFrames (); r.ID = vm.conn.VM_BeginInvokeMethod (thread.Id, method.Id, this_obj != null ? vm.EncodeValue (this_obj) : vm.EncodeValue (vm.CreateValue (null)), vm.EncodeValues (arguments), f, InvokeCB, r); return r; @@ -301,15 +301,15 @@ namespace Mono.Debugger.Soft } catch (CommandException ex) { if (ex.ErrorCode == ErrorCode.INVALID_ARGUMENT) throw new ArgumentException ("Incorrect number or types of arguments", "arguments"); - else - throw; + + throw; } throw new NotImplementedException (); } else { if (r.Exception != null) throw new InvocationException ((ObjectMirror)r.VM.DecodeValue (r.Exception)); - else - return r.VM.DecodeValue (r.Value); + + return r.VM.DecodeValue (r.Value); } } @@ -370,6 +370,7 @@ namespace Mono.Debugger.Soft var args = new List (); for (int i = 0; i < methods.Length; ++i) args.Add (vm.EncodeValues (arguments [i])); + thread.InvalidateFrames (); r.ID = vm.conn.VM_BeginInvokeMethods (thread.Id, mids, this_obj != null ? vm.EncodeValue (this_obj) : vm.EncodeValue (vm.CreateValue (null)), args, f, InvokeMultipleCB, r); return r; diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs index 38c733ccaf5..541118d66d6 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs @@ -7,7 +7,12 @@ namespace Mono.Debugger.Soft public class ThreadMirror : ObjectMirror { string name; + bool cacheInvalid = true; + bool fetching; + object fetchingLocker = new object (); + ManualResetEvent fetchingEvent = new ManualResetEvent (false); ThreadInfo info; + StackFrame[] frames; internal ThreadMirror (VirtualMachine vm, long id) : base (vm, id) { } @@ -15,22 +20,58 @@ namespace Mono.Debugger.Soft internal ThreadMirror (VirtualMachine vm, long id, TypeMirror type, AppDomainMirror domain) : base (vm, id, type, domain) { } - // FIXME: Cache, invalidate when the thread/runtime is resumed public StackFrame[] GetFrames () { - FrameInfo[] frame_info = vm.conn.Thread_GetFrameInfo (id, 0, -1); + FetchFrames (true); + fetchingEvent.WaitOne (); + return frames; + } - var frames = new List (); + internal void InvalidateFrames () { + cacheInvalid = true; + } - for (int i = 0; i < frame_info.Length; ++i) { - FrameInfo info = (FrameInfo)frame_info [i]; - MethodMirror method = vm.GetMethod (info.method); - var f = new StackFrame (vm, info.id, this, method, info.il_offset, info.flags); - if (!(f.IsNativeTransition && !NativeTransitions)) - frames.Add (f); + internal void FetchFrames (bool mustFetch = false) { + lock (fetchingLocker) { + if (fetching || !cacheInvalid) + return; + cacheInvalid = false; + fetching = true; + fetchingEvent.Reset (); } + vm.conn.Thread_GetFrameInfo (id, 0, -1, (frame_info) => { + var framesList = new List (); + for (int i = 0; i < frame_info.Length; ++i) { + var frameInfo = (FrameInfo)frame_info [i]; + var method = vm.GetMethod (frameInfo.method); + var f = new StackFrame (vm, frameInfo.id, this, method, frameInfo.il_offset, frameInfo.flags); + if (!(f.IsNativeTransition && !NativeTransitions)) + framesList.Add (f); + } + lock (fetchingLocker) { + vm.AddThreadToInvalidateList (this); + fetching = false; + //In case it was invalidated during waiting for response from + //runtime and mustFetch was set refetch + if (cacheInvalid && mustFetch) { + FetchFrames (mustFetch); + return; + } + frames = framesList.ToArray (); + fetchingEvent.Set (); + } + }); + } - return frames.ToArray (); - } + public static void FetchFrames(IList threads) + { + if (threads.Count == 0) + return; + threads [0].vm.conn.StartBuffering (); + foreach (var thread in threads) { + thread.FetchFrames (); + } + threads [0].vm.conn.StopBuffering (); + } public string Name { get { @@ -38,7 +79,7 @@ namespace Mono.Debugger.Soft name = vm.conn.Thread_GetName (id); return name; } - } + } public new long Id { get { @@ -111,8 +152,8 @@ namespace Mono.Debugger.Soft } catch (CommandException ex) { if (ex.ErrorCode == ErrorCode.INVALID_ARGUMENT) throw new ArgumentException ("loc doesn't refer to a location in the current method of this thread.", "loc"); - else - throw; + + throw; } } } diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs index 61ee11c1831..ee5806d4722 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs @@ -121,12 +121,13 @@ namespace Mono.Debugger.Soft public void Resume () { try { + InvalidateThreadAndFrameCaches (); conn.VM_Resume (); } catch (CommandException ex) { if (ex.ErrorCode == ErrorCode.NOT_SUSPENDED) throw new VMNotSuspendedException (); - else - throw; + + throw; } } @@ -151,12 +152,44 @@ namespace Mono.Debugger.Soft conn.ForceDisconnect (); } + HashSet threadsToInvalidate = new HashSet (); + ThreadMirror[] threadCache; + object threadCacheLocker = new object (); + + void InvalidateThreadAndFrameCaches () { + lock (threadsToInvalidate) { + foreach (var thread in threadsToInvalidate) + thread.InvalidateFrames (); + threadsToInvalidate.Clear (); + } + lock (threadCacheLocker) { + threadCache = null; + } + } + + internal void InvalidateThreadCache () { + lock (threadCacheLocker) { + threadCache = null; + } + } + + internal void AddThreadToInvalidateList (ThreadMirror threadMirror) + { + lock (threadsToInvalidate) { + threadsToInvalidate.Add (threadMirror); + } + } + public IList GetThreads () { - long[] ids = vm.conn.VM_GetThreads (); - ThreadMirror[] res = new ThreadMirror [ids.Length]; - for (int i = 0; i < ids.Length; ++i) - res [i] = GetThread (ids [i]); - return res; + lock (threadCacheLocker) { + if (threadCache == null) { + long[] ids = vm.conn.VM_GetThreads (); + threadCache = new ThreadMirror [ids.Length]; + for (int i = 0; i < ids.Length; ++i) + threadCache [i] = GetThread (ids [i]); + } + return threadCache; + } } // Same as the mirrorOf methods in JDI @@ -675,9 +708,11 @@ namespace Mono.Debugger.Soft vm.notify_vm_event (EventType.VMDeath, suspend_policy, req_id, thread_id, null, ei.ExitCode); break; case EventType.ThreadStart: + vm.InvalidateThreadCache (); l.Add (new ThreadStartEvent (vm, req_id, id)); break; case EventType.ThreadDeath: + vm.InvalidateThreadCache (); l.Add (new ThreadDeathEvent (vm, req_id, id)); break; case EventType.AssemblyLoad: @@ -718,8 +753,6 @@ namespace Mono.Debugger.Soft case EventType.UserLog: l.Add (new UserLogEvent (vm, req_id, thread_id, ei.Level, ei.Category, ei.Message)); break; - default: - break; } } diff --git a/mcs/class/Mono.Http/Mono.Http-net_4_5.csproj b/mcs/class/Mono.Http/Mono.Http-net_4_5.csproj index da0eaa1a1a7..6083b3d0ebc 100644 --- a/mcs/class/Mono.Http/Mono.Http-net_4_5.csproj +++ b/mcs/class/Mono.Http/Mono.Http-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -82,27 +83,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {0B587DBA-BA92-4B92-821A-AA200C612A7E} - ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5 + ICSharpCode.SharpZipLib-net_4_5 {D68D4FED-CA32-4800-A628-58BAE485562C} - Mono.Security\Mono.Security-net_4_5 + Mono.Security-net_4_5 diff --git a/mcs/class/Mono.Management/Mono.Management-net_4_5.csproj b/mcs/class/Mono.Management/Mono.Management-net_4_5.csproj index 91984c92bf2..0e98d81156e 100644 --- a/mcs/class/Mono.Management/Mono.Management-net_4_5.csproj +++ b/mcs/class/Mono.Management/Mono.Management-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -73,15 +74,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {85A9B29B-58FF-4FBE-8998-B0A89AC22880} - Mono.Posix\Mono.Posix-net_4_5 + Mono.Posix-net_4_5 diff --git a/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_4_5.csproj b/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_4_5.csproj index 5747dcd2ba9..9870cab073c 100644 --- a/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_4_5.csproj +++ b/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -80,23 +81,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {1CBEC0FC-5926-42FA-A0CF-A19617FABB78} - System.Messaging\System.Messaging-net_4_5 + System.Messaging-net_4_5 {DDCC93B5-9425-4E9A-95DC-3400D0028508} - Mono.Messaging\Mono.Messaging-net_4_5 + Mono.Messaging-net_4_5 {55AA0C89-63D9-438E-A139-3ED9F72AE295} - client\RabbitMQ.Client-net_4_5 + RabbitMQ.Client-net_4_5 diff --git a/mcs/class/Mono.Messaging/Mono.Messaging-net_4_5.csproj b/mcs/class/Mono.Messaging/Mono.Messaging-net_4_5.csproj index 38b4bc70bda..1288172ab1d 100644 --- a/mcs/class/Mono.Messaging/Mono.Messaging-net_4_5.csproj +++ b/mcs/class/Mono.Messaging/Mono.Messaging-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -97,15 +98,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 diff --git a/mcs/class/Mono.Options/Mono.Options-net_4_5.csproj b/mcs/class/Mono.Options/Mono.Options-net_4_5.csproj index f3d1d0fe30b..bc2f7b6a2f3 100644 --- a/mcs/class/Mono.Options/Mono.Options-net_4_5.csproj +++ b/mcs/class/Mono.Options/Mono.Options-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -73,11 +74,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Mono.Parallel/Mono.Parallel-net_4_5.csproj b/mcs/class/Mono.Parallel/Mono.Parallel-net_4_5.csproj index 47b2dd4eb31..89a4d5fddf6 100644 --- a/mcs/class/Mono.Parallel/Mono.Parallel-net_4_5.csproj +++ b/mcs/class/Mono.Parallel/Mono.Parallel-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -86,15 +87,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Mono.Posix/Mono.Posix-net_4_5.csproj b/mcs/class/Mono.Posix/Mono.Posix-net_4_5.csproj index 1161ee4ce8b..b0a8c4cb312 100644 --- a/mcs/class/Mono.Posix/Mono.Posix-net_4_5.csproj +++ b/mcs/class/Mono.Posix/Mono.Posix-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -126,11 +127,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_4_5.csproj b/mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_4_5.csproj index fa7a6d50843..1b8525bd30d 100644 --- a/mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_4_5.csproj +++ b/mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -83,7 +84,7 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Mono.Security/Mono.Security-net_4_5.csproj b/mcs/class/Mono.Security/Mono.Security-net_4_5.csproj index 0c0f4a62813..1de32f0bb99 100644 --- a/mcs/class/Mono.Security/Mono.Security-net_4_5.csproj +++ b/mcs/class/Mono.Security/Mono.Security-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -205,11 +206,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {91CDF14E-F60F-4AB7-BC9D-5CBD7E669076} - System\System-bare-net_4_5 + System-bare-net_4_5 diff --git a/mcs/class/Mono.Security/Mono.Security-tests-net_2_0.csproj b/mcs/class/Mono.Security/Mono.Security-tests-net_2_0.csproj index a00ab1b55a3..3da8463338b 100644 --- a/mcs/class/Mono.Security/Mono.Security-tests-net_2_0.csproj +++ b/mcs/class/Mono.Security/Mono.Security-tests-net_2_0.csproj @@ -75,10 +75,12 @@ + + diff --git a/mcs/class/Mono.Security/Mono.Security-tests-net_4_0.csproj b/mcs/class/Mono.Security/Mono.Security-tests-net_4_0.csproj index 4b1f0c56c9a..fa6828bdb8a 100644 --- a/mcs/class/Mono.Security/Mono.Security-tests-net_4_0.csproj +++ b/mcs/class/Mono.Security/Mono.Security-tests-net_4_0.csproj @@ -75,10 +75,12 @@ + + diff --git a/mcs/class/Mono.Security/Mono.Security-tests-net_4_5.csproj b/mcs/class/Mono.Security/Mono.Security-tests-net_4_5.csproj index 27e8ad50ba5..9f6dd3aab9c 100644 --- a/mcs/class/Mono.Security/Mono.Security-tests-net_4_5.csproj +++ b/mcs/class/Mono.Security/Mono.Security-tests-net_4_5.csproj @@ -75,10 +75,12 @@ + + diff --git a/mcs/class/Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs b/mcs/class/Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs index fb6f940a1ec..858ee1e7e59 100644 --- a/mcs/class/Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs +++ b/mcs/class/Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs @@ -87,6 +87,18 @@ namespace Mono.Security.X509.Extensions { } } + protected override void Encode () + { + ASN1 seq = new ASN1 (0x30); + if (aki == null) { + throw new InvalidOperationException ("Invalid AuthorityKeyIdentifier extension"); + } + + seq.Add (new ASN1 (0x80, aki)); + extnValue = new ASN1 (0x04); + extnValue.Add (seq); + } + public override string Name { get { return "Authority Key Identifier"; } } @@ -97,6 +109,7 @@ namespace Mono.Security.X509.Extensions { return null; return (byte[]) aki.Clone (); } + set { aki = value; } } public override string ToString () diff --git a/mcs/class/Mono.Security/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs b/mcs/class/Mono.Security/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs index 945111675e3..8f15c28e34a 100644 --- a/mcs/class/Mono.Security/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs +++ b/mcs/class/Mono.Security/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs @@ -75,6 +75,17 @@ namespace Mono.Security.X509.Extensions { ski = sequence.Value; } + protected override void Encode () + { + if (ski == null) { + throw new InvalidOperationException ("Invalid SubjectKeyIdentifier extension"); + } + + var seq = new ASN1 (0x04, ski); + extnValue = new ASN1 (0x04); + extnValue.Add (seq); + } + public override string Name { get { return "Subject Key Identifier"; } } @@ -85,6 +96,7 @@ namespace Mono.Security.X509.Extensions { return null; return (byte[]) ski.Clone (); } + set { ski = value; } } public override string ToString () diff --git a/mcs/class/Mono.Security/Mono.Security_test.dll.sources b/mcs/class/Mono.Security/Mono.Security_test.dll.sources index 16777e98972..9d5ac35f66a 100644 --- a/mcs/class/Mono.Security/Mono.Security_test.dll.sources +++ b/mcs/class/Mono.Security/Mono.Security_test.dll.sources @@ -37,7 +37,9 @@ Mono.Security.X509/X501NameTest.cs Mono.Security.X509/X509CertificateTest.cs Mono.Security.X509/X509CrlTest.cs Mono.Security.X509/X520AttributesTest.cs +Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtensionTest.cs Mono.Security.X509.Extensions/KeyUsageExtensionTest.cs Mono.Security.X509.Extensions/ExtendedKeyUsageExtensionTest.cs Mono.Security.X509.Extensions/BasicConstraintsExtensionTest.cs Mono.Security.X509.Extensions/SubjectAltNameExtensionTest.cs +Mono.Security.X509.Extensions/SubjectKeyIdentifierExtensionTest.cs diff --git a/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtensionTest.cs b/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtensionTest.cs new file mode 100644 index 00000000000..e095df48208 --- /dev/null +++ b/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtensionTest.cs @@ -0,0 +1,122 @@ +// +// AuthorityKeyIdentifierExtensionTest.cs - NUnit Test Cases for +// Mono.Security.X509.Extensions.AuthorityKeyIdentifierExtension +// +// Authors: +// Lex Li +// +// Copyright (C) 2014 Lex Li +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +using System; +using Mono.Security.X509.Extensions; +using NUnit.Framework; + +namespace MonoTests.Mono.Security.X509.Extensions +{ + [TestFixture] + public class AuthorityKeyIdentifierExtensionTest + { + private void Empty (AuthorityKeyIdentifierExtension aki) + { + Assert.IsFalse (aki.Critical, "Critical"); + Assert.AreEqual ("2.5.29.35", aki.Oid, "Oid"); + Assert.IsNotNull (aki.Name, "Name"); + Assert.IsFalse (aki.Name == aki.Oid, "Name!=Oid"); + Assert.AreEqual (new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 + }, aki.Identifier, "Identifier"); + } + + [Test] + public void Constructor_Empty () + { + AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension (); + aki.Identifier = new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 + }; + Empty (aki); + } + + [Test] + public void Constructor_Extension () + { + AuthorityKeyIdentifierExtension ext = new AuthorityKeyIdentifierExtension (); + ext.Identifier = new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 + }; + AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension (ext); + Empty (aki); + } + + [Test] + public void Constructor_ASN1 () + { + AuthorityKeyIdentifierExtension ext = new AuthorityKeyIdentifierExtension (); + ext.Identifier = new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 + }; + AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension (ext.ASN1); + Empty (aki); + } + + [Test] + public void AuthorityKeyIdentifier_Critical () + { + AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension (); + aki.Critical = true; + aki.Identifier = new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 + }; + Assert.AreEqual ("30-22-06-03-55-1D-23-01-01-FF-04-18-30-16-80-14-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00", BitConverter.ToString (aki.GetBytes ()), "GetBytes"); + + AuthorityKeyIdentifierExtension aki2 = new AuthorityKeyIdentifierExtension (aki.ASN1); + Assert.IsTrue (aki2.Critical, "Critical"); + Assert.AreEqual (new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 + }, aki2.Identifier, "Identifier"); + } + + [Test] + [ExpectedException (typeof(InvalidOperationException))] + public void EmptyIdentifier () + { + AuthorityKeyIdentifierExtension ext = new AuthorityKeyIdentifierExtension (); + AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension (ext); + Empty (aki); + } + } +} diff --git a/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtensionTest.cs b/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtensionTest.cs new file mode 100644 index 00000000000..5acdd73a677 --- /dev/null +++ b/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtensionTest.cs @@ -0,0 +1,122 @@ +// +// SubjectKeyIdentifierExtensionTest.cs - NUnit Test Cases for +// Mono.Security.X509.Extensions.SubjectKeyIdentifierExtension +// +// Authors: +// Lex Li +// +// Copyright (C) 2014 Lex Li +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +using System; +using Mono.Security.X509.Extensions; +using NUnit.Framework; + +namespace MonoTests.Mono.Security.X509.Extensions +{ + [TestFixture] + public class SubjectKeyIdentifierExtensionTest + { + private void Empty (SubjectKeyIdentifierExtension ski) + { + Assert.IsFalse (ski.Critical, "Critical"); + Assert.AreEqual ("2.5.29.14", ski.Oid, "Oid"); + Assert.IsNotNull (ski.Name, "Name"); + Assert.IsFalse (ski.Name == ski.Oid, "Name!=Oid"); + Assert.AreEqual (new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 + }, ski.Identifier, "Identifier"); + } + + [Test] + public void Constructor_Empty () + { + SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension (); + ski.Identifier = new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 + }; + Empty (ski); + } + + [Test] + public void Constructor_Extension () + { + SubjectKeyIdentifierExtension ext = new SubjectKeyIdentifierExtension (); + ext.Identifier = new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 + }; + SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension (ext); + Empty (ski); + } + + [Test] + public void Constructor_ASN1 () + { + SubjectKeyIdentifierExtension ext = new SubjectKeyIdentifierExtension (); + ext.Identifier = new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 + }; + SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension (ext.ASN1); + Empty (ski); + } + + [Test] + public void AuthorityKeyIdentifier_Critical () + { + SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension (); + ski.Critical = true; + ski.Identifier = new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 + }; + Assert.AreEqual ("30-20-06-03-55-1D-0E-01-01-FF-04-16-04-14-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00", BitConverter.ToString (ski.GetBytes ()), "GetBytes"); + + SubjectKeyIdentifierExtension ski2 = new SubjectKeyIdentifierExtension (ski.ASN1); + Assert.IsTrue (ski2.Critical, "Critical"); + Assert.AreEqual (new byte[] { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00 + }, ski2.Identifier, "Identifier"); + } + + [Test] + [ExpectedException (typeof(InvalidOperationException))] + public void EmptyIdentifier () + { + SubjectKeyIdentifierExtension ext = new SubjectKeyIdentifierExtension (); + SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension (ext); + Empty (ski); + } + } +} diff --git a/mcs/class/Mono.Simd/Mono.Simd-net_4_5.csproj b/mcs/class/Mono.Simd/Mono.Simd-net_4_5.csproj index 1c5d3c8655f..14595b38078 100644 --- a/mcs/class/Mono.Simd/Mono.Simd-net_4_5.csproj +++ b/mcs/class/Mono.Simd/Mono.Simd-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -87,11 +88,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/Mono.Tasklets/Mono.Tasklets-net_4_5.csproj b/mcs/class/Mono.Tasklets/Mono.Tasklets-net_4_5.csproj index f7b41bb32cd..f74e4b7e54d 100644 --- a/mcs/class/Mono.Tasklets/Mono.Tasklets-net_4_5.csproj +++ b/mcs/class/Mono.Tasklets/Mono.Tasklets-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -73,7 +74,7 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_4_5.csproj b/mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_4_5.csproj index 318b19b20b5..998b16d4bbd 100644 --- a/mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_4_5.csproj +++ b/mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -226,11 +227,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/Mono.XBuild.Tasks/Mono.XBuild.Tasks-net_4_5.csproj b/mcs/class/Mono.XBuild.Tasks/Mono.XBuild.Tasks-net_4_5.csproj index 7bb9cb88199..965e4b49752 100644 --- a/mcs/class/Mono.XBuild.Tasks/Mono.XBuild.Tasks-net_4_5.csproj +++ b/mcs/class/Mono.XBuild.Tasks/Mono.XBuild.Tasks-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -75,15 +76,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_5.csproj b/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_5.csproj index 1fb94134719..2de21cef819 100644 --- a/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_5.csproj +++ b/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -285,15 +286,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D68D4FED-CA32-4800-A628-58BAE485562C} - Mono.Security\Mono.Security-net_4_5 + Mono.Security-net_4_5 diff --git a/mcs/class/Npgsql/Npgsql-net_4_5.csproj b/mcs/class/Npgsql/Npgsql-net_4_5.csproj index a388fd751be..f2d7caef871 100644 --- a/mcs/class/Npgsql/Npgsql-net_4_5.csproj +++ b/mcs/class/Npgsql/Npgsql-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -125,23 +126,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {D68D4FED-CA32-4800-A628-58BAE485562C} - Mono.Security\Mono.Security-net_4_5 + Mono.Security-net_4_5 diff --git a/mcs/class/PEAPI/PEAPI-net_4_5.csproj b/mcs/class/PEAPI/PEAPI-net_4_5.csproj index ce84b0fd4c8..13b2303bdad 100644 --- a/mcs/class/PEAPI/PEAPI-net_4_5.csproj +++ b/mcs/class/PEAPI/PEAPI-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -75,11 +76,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/RabbitMQ.Client/src/apigen/RabbitMQ.Client.Apigen-net_4_5.csproj b/mcs/class/RabbitMQ.Client/src/apigen/RabbitMQ.Client.Apigen-net_4_5.csproj index 903039d5b80..222ab037c1e 100644 --- a/mcs/class/RabbitMQ.Client/src/apigen/RabbitMQ.Client.Apigen-net_4_5.csproj +++ b/mcs/class/RabbitMQ.Client/src/apigen/RabbitMQ.Client.Apigen-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -89,15 +90,15 @@ {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_5.csproj b/mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_5.csproj index 9ae7d6af649..8d3bca2afa3 100644 --- a/mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_5.csproj +++ b/mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -197,15 +198,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/System.ComponentModel.Composition/System.ComponentModel.Composition-net_4_5.csproj b/mcs/class/System.ComponentModel.Composition/System.ComponentModel.Composition-net_4_5.csproj index 491ad795085..9b6a7217eb1 100644 --- a/mcs/class/System.ComponentModel.Composition/System.ComponentModel.Composition-net_4_5.csproj +++ b/mcs/class/System.ComponentModel.Composition/System.ComponentModel.Composition-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -222,15 +223,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj index 34e4a621000..c0b799cf8b2 100644 --- a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj +++ b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -121,23 +122,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/System.Configuration.Install/System.Configuration.Install-net_4_5.csproj b/mcs/class/System.Configuration.Install/System.Configuration.Install-net_4_5.csproj index 9cd827887cf..ec4da6c37ab 100644 --- a/mcs/class/System.Configuration.Install/System.Configuration.Install-net_4_5.csproj +++ b/mcs/class/System.Configuration.Install/System.Configuration.Install-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -87,15 +88,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/System.Configuration/Makefile b/mcs/class/System.Configuration/Makefile index b52020dc0be..a4c37a0fd45 100644 --- a/mcs/class/System.Configuration/Makefile +++ b/mcs/class/System.Configuration/Makefile @@ -1,12 +1,14 @@ thisdir = class/System.Configuration SUBDIRS = + include ../../build/rules.make LIBRARY = System.Configuration.dll LOCAL_MCS_FLAGS = -lib:$(secxml_libdir) -lib:$(bare_libdir) +test_remove = $(LOCAL_MCS_FLAGS) LIB_MCS_FLAGS = -r:$(corlib) -r:System.dll -r:System.Xml.dll -r:System.Security.dll -nowarn:618 -TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) +TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) include ../../build/library.make diff --git a/mcs/class/System.Configuration/System.Configuration-net_4_5.csproj b/mcs/class/System.Configuration/System.Configuration-net_4_5.csproj index ab5314c23ae..c4858d21b41 100644 --- a/mcs/class/System.Configuration/System.Configuration-net_4_5.csproj +++ b/mcs/class/System.Configuration/System.Configuration-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -190,19 +191,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {46F151F2-A422-4A1B-9D29-2E148CE73629} - System\System-secxml-net_4_5 + System-secxml-net_4_5 {21FB091E-0F84-479E-AB16-6503D36852F9} - System.XML\System.Xml-bare-net_4_5 + System.Xml-bare-net_4_5 {B55E59B2-31CA-438B-ADB8-4B9A9A547830} - System.Security\System.Security-net_4_5 + System.Security-net_4_5 diff --git a/mcs/class/System.Core/System.Core-net_4_5.csproj b/mcs/class/System.Core/System.Core-net_4_5.csproj index 3808b8457ab..d749c862b5d 100644 --- a/mcs/class/System.Core/System.Core-net_4_5.csproj +++ b/mcs/class/System.Core/System.Core-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -320,15 +321,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {85A9B29B-58FF-4FBE-8998-B0A89AC22880} - Mono.Posix\Mono.Posix-net_4_5 + Mono.Posix-net_4_5 diff --git a/mcs/class/System.Core/System.Core-plaincore-net_4_5.csproj b/mcs/class/System.Core/System.Core-plaincore-net_4_5.csproj index fa259cd1e07..2d1945f82ce 100644 --- a/mcs/class/System.Core/System.Core-plaincore-net_4_5.csproj +++ b/mcs/class/System.Core/System.Core-plaincore-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -320,15 +321,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {85A9B29B-58FF-4FBE-8998-B0A89AC22880} - Mono.Posix\Mono.Posix-net_4_5 + Mono.Posix-net_4_5 diff --git a/mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_4_5.csproj b/mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_4_5.csproj index 1ee118c3084..a8c627360da 100644 --- a/mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_4_5.csproj +++ b/mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -84,27 +85,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 diff --git a/mcs/class/System.Data.Linq/System.Data.Linq-net_4_5.csproj b/mcs/class/System.Data.Linq/System.Data.Linq-net_4_5.csproj index 1d6b5f7d052..adae7bd5664 100644 --- a/mcs/class/System.Data.Linq/System.Data.Linq-net_4_5.csproj +++ b/mcs/class/System.Data.Linq/System.Data.Linq-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -393,27 +394,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 diff --git a/mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_4_5.csproj b/mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_4_5.csproj index b2f14dc0d5d..a045f9fbc5f 100644 --- a/mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_4_5.csproj +++ b/mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -139,27 +140,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {773D8BA7-9A88-49AC-81C9-740436270588} - System.EnterpriseServices\System.EnterpriseServices-net_4_5 + System.EnterpriseServices-net_4_5 {CB1CB976-AA54-4553-B0E7-05665B199EC4} - System.Drawing\System.Drawing-net_4_5 + System.Drawing-net_4_5 diff --git a/mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_4_5.csproj b/mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_4_5.csproj index 25ca6f3fe68..82ad0c24860 100644 --- a/mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_4_5.csproj +++ b/mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -187,31 +188,31 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {8328796E-8A15-4972-8F1E-2F15E7D57C42} - System.Xml.Linq\System.Xml.Linq-net_4_5 + System.Xml.Linq-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {8E6ED7D5-3B08-4A83-905E-8FB4CF0C160D} - WindowsBase\WindowsBase-net_4_5 + WindowsBase-net_4_5 diff --git a/mcs/class/System.Data.Services/System.Data.Services-net_4_5.csproj b/mcs/class/System.Data.Services/System.Data.Services-net_4_5.csproj index fcd40b1d6f9..d0b2c9d8aa5 100644 --- a/mcs/class/System.Data.Services/System.Data.Services-net_4_5.csproj +++ b/mcs/class/System.Data.Services/System.Data.Services-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -144,31 +145,31 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {F2156C09-C377-4945-A690-39CFBF3319B3} - System.ServiceModel\System.ServiceModel-net_4_5 + System.ServiceModel-net_4_5 {BD4DF654-42EE-40E8-A3F4-8A80959E7879} - System.ServiceModel.Web\System.ServiceModel.Web-net_4_5 + System.ServiceModel.Web-net_4_5 {E9B87AE3-9A05-4146-83CC-082BE32D8EB2} - System.Data.Services.Client\System.Data.Services.Client-net_4_5 + System.Data.Services.Client-net_4_5 {E537F31B-BCB7-4935-ABF3-DF2FAC48DCB3} - System.ServiceModel.Activation\System.ServiceModel.Activation-net_4_5 + System.ServiceModel.Activation-net_4_5 diff --git a/mcs/class/System.Data/System.Data-net_4_5.csproj b/mcs/class/System.Data/System.Data-net_4_5.csproj index 0497bb86478..95dead37499 100644 --- a/mcs/class/System.Data/System.Data-net_4_5.csproj +++ b/mcs/class/System.Data/System.Data-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -409,31 +410,31 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {773D8BA7-9A88-49AC-81C9-740436270588} - System.EnterpriseServices\System.EnterpriseServices-net_4_5 + System.EnterpriseServices-net_4_5 {CB7949AC-5FA7-4FAB-893A-8FAF436BF514} - Mono.Data.Tds\Mono.Data.Tds-net_4_5 + Mono.Data.Tds-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {AF2BBF50-AB57-4CA1-8EF5-2B54C7418434} - System.Transactions\System.Transactions-net_4_5 + System.Transactions-net_4_5 diff --git a/mcs/class/System.Design/System.Design-net_4_5.csproj b/mcs/class/System.Design/System.Design-net_4_5.csproj index b8c4ad72302..dcc8c7392f0 100644 --- a/mcs/class/System.Design/System.Design-net_4_5.csproj +++ b/mcs/class/System.Design/System.Design-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -395,39 +396,39 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {B102F27C-1A07-487F-BA5B-D5155D201112} - Managed.Windows.Forms\System.Windows.Forms-net_4_5 + System.Windows.Forms-net_4_5 {CB1CB976-AA54-4553-B0E7-05665B199EC4} - System.Drawing\System.Drawing-net_4_5 + System.Drawing-net_4_5 {FACE8136-C95A-4788-90B2-DB0ECF7A020A} - Accessibility\Accessibility-net_4_5 + Accessibility-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 diff --git a/mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols-net_4_5.csproj b/mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols-net_4_5.csproj index 0c7d629b8cf..566b6a2222b 100644 --- a/mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols-net_4_5.csproj +++ b/mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -171,19 +172,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {EC4E43E7-63C0-4D64-8B7A-E00C097872A5} - System.DirectoryServices\System.DirectoryServices-net_4_5 + System.DirectoryServices-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices-net_4_5.csproj b/mcs/class/System.DirectoryServices/System.DirectoryServices-net_4_5.csproj index 1544be525e6..5c6cebd8b82 100644 --- a/mcs/class/System.DirectoryServices/System.DirectoryServices-net_4_5.csproj +++ b/mcs/class/System.DirectoryServices/System.DirectoryServices-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -203,15 +204,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {E6070FFA-2CBA-4C24-99C1-63A4F5052821} - Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5 + Novell.Directory.Ldap-net_4_5 diff --git a/mcs/class/System.Drawing.Design/System.Drawing.Design-net_4_5.csproj b/mcs/class/System.Drawing.Design/System.Drawing.Design-net_4_5.csproj index 0fda4a534e1..d67485ff8c2 100644 --- a/mcs/class/System.Drawing.Design/System.Drawing.Design-net_4_5.csproj +++ b/mcs/class/System.Drawing.Design/System.Drawing.Design-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -85,19 +86,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {CB1CB976-AA54-4553-B0E7-05665B199EC4} - System.Drawing\System.Drawing-net_4_5 + System.Drawing-net_4_5 {B102F27C-1A07-487F-BA5B-D5155D201112} - Managed.Windows.Forms\System.Windows.Forms-net_4_5 + System.Windows.Forms-net_4_5 diff --git a/mcs/class/System.Drawing/System.Drawing-net_4_5.csproj b/mcs/class/System.Drawing/System.Drawing-net_4_5.csproj index 445b593b05c..4d0789ccd4d 100644 --- a/mcs/class/System.Drawing/System.Drawing-net_4_5.csproj +++ b/mcs/class/System.Drawing/System.Drawing-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -261,11 +262,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/System.Dynamic/System.Dynamic-net_4_5.csproj b/mcs/class/System.Dynamic/System.Dynamic-net_4_5.csproj index 71a1033dd42..3f2cec0d706 100644 --- a/mcs/class/System.Dynamic/System.Dynamic-net_4_5.csproj +++ b/mcs/class/System.Dynamic/System.Dynamic-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -124,15 +125,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj b/mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj index 5bb647f3bc9..c0d00ac30bd 100644 --- a/mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj +++ b/mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -182,11 +183,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {AF2BBF50-AB57-4CA1-8EF5-2B54C7418434} - System.Transactions\System.Transactions-net_4_5 + System.Transactions-net_4_5 diff --git a/mcs/class/System.IO.Compression.FileSystem/System.IO.Compression.FileSystem-net_4_5.csproj b/mcs/class/System.IO.Compression.FileSystem/System.IO.Compression.FileSystem-net_4_5.csproj index eae409618af..3825d4cb606 100644 --- a/mcs/class/System.IO.Compression.FileSystem/System.IO.Compression.FileSystem-net_4_5.csproj +++ b/mcs/class/System.IO.Compression.FileSystem/System.IO.Compression.FileSystem-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -74,15 +75,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {BDF04E30-60D9-4279-A1DF-3291328A5AFD} - System.IO.Compression\System.IO.Compression-net_4_5 + System.IO.Compression-net_4_5 diff --git a/mcs/class/System.IO.Compression/System.IO.Compression-net_4_5.csproj b/mcs/class/System.IO.Compression/System.IO.Compression-net_4_5.csproj index c19d32943e7..22c83d5bb2e 100644 --- a/mcs/class/System.IO.Compression/System.IO.Compression-net_4_5.csproj +++ b/mcs/class/System.IO.Compression/System.IO.Compression-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -163,15 +164,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj b/mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj index dd82f0b0e78..afb8ae891ae 100644 --- a/mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj +++ b/mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -84,27 +85,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {B55E59B2-31CA-438B-ADB8-4B9A9A547830} - System.Security\System.Security-net_4_5 + System.Security-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {F056C062-E467-4989-9366-440E8CD23C0C} - System.IdentityModel\System.IdentityModel-net_4_5 + System.IdentityModel-net_4_5 diff --git a/mcs/class/System.IdentityModel/System.IdentityModel-net_4_5.csproj b/mcs/class/System.IdentityModel/System.IdentityModel-net_4_5.csproj index 38fd187fdd5..17888b5d370 100644 --- a/mcs/class/System.IdentityModel/System.IdentityModel-net_4_5.csproj +++ b/mcs/class/System.IdentityModel/System.IdentityModel-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -163,39 +164,39 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {B55E59B2-31CA-438B-ADB8-4B9A9A547830} - System.Security\System.Security-net_4_5 + System.Security-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {D68D4FED-CA32-4800-A628-58BAE485562C} - Mono.Security\Mono.Security-net_4_5 + Mono.Security-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F} - System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5 + System.Web.ApplicationServices-net_4_5 diff --git a/mcs/class/System.Json.Microsoft/System.Json.Microsoft-net_4_5.csproj b/mcs/class/System.Json.Microsoft/System.Json.Microsoft-net_4_5.csproj index f978549ad5d..dd2198f4914 100644 --- a/mcs/class/System.Json.Microsoft/System.Json.Microsoft-net_4_5.csproj +++ b/mcs/class/System.Json.Microsoft/System.Json.Microsoft-net_4_5.csproj @@ -18,6 +18,13 @@ System.Json.Microsoft v4.5 512 + + + true + true + + + ../winfx.pub true @@ -89,27 +96,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {D554618C-5D38-413A-82BA-7A70B6FC61A3} - Microsoft.CSharp\Microsoft.CSharp-net_4_5 + Microsoft.CSharp-net_4_5 diff --git a/mcs/class/System.Json/System.Json-net_4_5.csproj b/mcs/class/System.Json/System.Json-net_4_5.csproj index 3fda9997b13..ad056809095 100644 --- a/mcs/class/System.Json/System.Json-net_4_5.csproj +++ b/mcs/class/System.Json/System.Json-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -77,19 +78,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/System.Management/System.Management-net_4_5.csproj b/mcs/class/System.Management/System.Management-net_4_5.csproj index ec51f9f7ba8..4204826702f 100644 --- a/mcs/class/System.Management/System.Management-net_4_5.csproj +++ b/mcs/class/System.Management/System.Management-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -140,15 +141,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {E6E1740E-37DD-487C-8947-F1C0612D4738} - System.Configuration.Install\System.Configuration.Install-net_4_5 + System.Configuration.Install-net_4_5 diff --git a/mcs/class/System.Messaging/System.Messaging-net_4_5.csproj b/mcs/class/System.Messaging/System.Messaging-net_4_5.csproj index 081f4191aa5..2754b9d6738 100644 --- a/mcs/class/System.Messaging/System.Messaging-net_4_5.csproj +++ b/mcs/class/System.Messaging/System.Messaging-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -123,31 +124,31 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {E6E1740E-37DD-487C-8947-F1C0612D4738} - System.Configuration.Install\System.Configuration.Install-net_4_5 + System.Configuration.Install-net_4_5 {CB1CB976-AA54-4553-B0E7-05665B199EC4} - System.Drawing\System.Drawing-net_4_5 + System.Drawing-net_4_5 {B102F27C-1A07-487F-BA5B-D5155D201112} - Managed.Windows.Forms\System.Windows.Forms-net_4_5 + System.Windows.Forms-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {DDCC93B5-9425-4E9A-95DC-3400D0028508} - Mono.Messaging\Mono.Messaging-net_4_5 + Mono.Messaging-net_4_5 diff --git a/mcs/class/System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj b/mcs/class/System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj index b738a48bc64..1241af63ff6 100644 --- a/mcs/class/System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj +++ b/mcs/class/System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj @@ -18,6 +18,13 @@ System.Net.Http.Formatting v4.5 512 + + + true + true + + + ../winfx.pub true @@ -305,39 +312,39 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {E36C154B-A0AC-4721-B06A-AFE31D357CE5} - System.Net.Http\System.Net.Http-net_4_5 + System.Net.Http-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {8328796E-8A15-4972-8F1E-2F15E7D57C42} - System.Xml.Linq\System.Xml.Linq-net_4_5 + System.Xml.Linq-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 diff --git a/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest-net_4_5.csproj b/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest-net_4_5.csproj index 612cafa4742..238097aeb24 100644 --- a/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest-net_4_5.csproj +++ b/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -73,15 +74,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {E36C154B-A0AC-4721-B06A-AFE31D357CE5} - System.Net.Http\System.Net.Http-net_4_5 + System.Net.Http-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/System.Net.Http/System.Net.Http-net_4_5.csproj b/mcs/class/System.Net.Http/System.Net.Http-net_4_5.csproj index 6ff2417947c..06d2ae9c4e4 100644 --- a/mcs/class/System.Net.Http/System.Net.Http-net_4_5.csproj +++ b/mcs/class/System.Net.Http/System.Net.Http-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -123,15 +124,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/System.Net/System.Net-net_4_5.csproj b/mcs/class/System.Net/System.Net-net_4_5.csproj index 5a61b0f57ed..5aebaa0add7 100644 --- a/mcs/class/System.Net/System.Net-net_4_5.csproj +++ b/mcs/class/System.Net/System.Net-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -74,19 +75,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/System.Numerics/System.Numerics-net_4_5.csproj b/mcs/class/System.Numerics/System.Numerics-net_4_5.csproj index aa973986ecc..58b950df3a6 100644 --- a/mcs/class/System.Numerics/System.Numerics-net_4_5.csproj +++ b/mcs/class/System.Numerics/System.Numerics-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -73,11 +74,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/System.Reactive.Core/System.Reactive.Core-net_4_5.csproj b/mcs/class/System.Reactive.Core/System.Reactive.Core-net_4_5.csproj index 48eef1e1fb7..c3d05c0943e 100644 --- a/mcs/class/System.Reactive.Core/System.Reactive.Core-net_4_5.csproj +++ b/mcs/class/System.Reactive.Core/System.Reactive.Core-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reactive.Core v4.5 512 + + + true + true + + + ../reactive.pub true @@ -148,19 +155,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {EFA38650-CE13-4BF3-993D-70B238DB1C9E} - System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5 + System.Reactive.Interfaces-net_4_5 diff --git a/mcs/class/System.Reactive.Debugger/System.Reactive.Debugger-net_4_5.csproj b/mcs/class/System.Reactive.Debugger/System.Reactive.Debugger-net_4_5.csproj index 8f52a18a013..6e9d230ecf6 100644 --- a/mcs/class/System.Reactive.Debugger/System.Reactive.Debugger-net_4_5.csproj +++ b/mcs/class/System.Reactive.Debugger/System.Reactive.Debugger-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reactive.Debugger v4.5 512 + + + true + true + + + ../reactive.pub true @@ -72,27 +79,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {EFA38650-CE13-4BF3-993D-70B238DB1C9E} - System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5 + System.Reactive.Interfaces-net_4_5 {4EF3C775-C516-4897-AB1D-DC9F8862A4D9} - System.Reactive.Core\System.Reactive.Core-net_4_5 + System.Reactive.Core-net_4_5 {EE831E49-3F84-4A05-9417-A9C8BD36E164} - System.Reactive.Linq\System.Reactive.Linq-net_4_5 + System.Reactive.Linq-net_4_5 diff --git a/mcs/class/System.Reactive.Experimental/System.Reactive.Experimental-net_4_5.csproj b/mcs/class/System.Reactive.Experimental/System.Reactive.Experimental-net_4_5.csproj index 6392053ad62..ecd5ef66c38 100644 --- a/mcs/class/System.Reactive.Experimental/System.Reactive.Experimental-net_4_5.csproj +++ b/mcs/class/System.Reactive.Experimental/System.Reactive.Experimental-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reactive.Experimental v4.5 512 + + + true + true + + + ../reactive.pub true @@ -80,27 +87,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {EFA38650-CE13-4BF3-993D-70B238DB1C9E} - System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5 + System.Reactive.Interfaces-net_4_5 {4EF3C775-C516-4897-AB1D-DC9F8862A4D9} - System.Reactive.Core\System.Reactive.Core-net_4_5 + System.Reactive.Core-net_4_5 {EE831E49-3F84-4A05-9417-A9C8BD36E164} - System.Reactive.Linq\System.Reactive.Linq-net_4_5 + System.Reactive.Linq-net_4_5 diff --git a/mcs/class/System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj b/mcs/class/System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj index 5173cf1de09..c7590b4de86 100644 --- a/mcs/class/System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj +++ b/mcs/class/System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reactive.Interfaces v4.5 512 + + + true + true + + + ../reactive.pub true @@ -94,15 +101,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj b/mcs/class/System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj index 1fb3317c962..48c5cb1f740 100644 --- a/mcs/class/System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj +++ b/mcs/class/System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reactive.Linq v4.5 512 + + + true + true + + + ../reactive.pub true @@ -241,23 +248,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {EFA38650-CE13-4BF3-993D-70B238DB1C9E} - System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5 + System.Reactive.Interfaces-net_4_5 {4EF3C775-C516-4897-AB1D-DC9F8862A4D9} - System.Reactive.Core\System.Reactive.Core-net_4_5 + System.Reactive.Core-net_4_5 diff --git a/mcs/class/System.Reactive.Observable.Aliases/System.Reactive.Observable.Aliases-net_4_5.csproj b/mcs/class/System.Reactive.Observable.Aliases/System.Reactive.Observable.Aliases-net_4_5.csproj index 0ec36c38e11..55671c8cbf9 100644 --- a/mcs/class/System.Reactive.Observable.Aliases/System.Reactive.Observable.Aliases-net_4_5.csproj +++ b/mcs/class/System.Reactive.Observable.Aliases/System.Reactive.Observable.Aliases-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reactive.Observable.Aliases v4.5 512 + + + true + true + + + ../reactive.pub true @@ -72,31 +79,31 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {EFA38650-CE13-4BF3-993D-70B238DB1C9E} - System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5 + System.Reactive.Interfaces-net_4_5 {4EF3C775-C516-4897-AB1D-DC9F8862A4D9} - System.Reactive.Core\System.Reactive.Core-net_4_5 + System.Reactive.Core-net_4_5 {EE831E49-3F84-4A05-9417-A9C8BD36E164} - System.Reactive.Linq\System.Reactive.Linq-net_4_5 + System.Reactive.Linq-net_4_5 {8D27108A-3DD4-46D7-917E-7833A3C4D479} - System.Reactive.Providers\System.Reactive.Providers-net_4_5 + System.Reactive.Providers-net_4_5 diff --git a/mcs/class/System.Reactive.PlatformServices/System.Reactive.PlatformServices-net_4_5.csproj b/mcs/class/System.Reactive.PlatformServices/System.Reactive.PlatformServices-net_4_5.csproj index c00a435d988..2fc9e385a45 100644 --- a/mcs/class/System.Reactive.PlatformServices/System.Reactive.PlatformServices-net_4_5.csproj +++ b/mcs/class/System.Reactive.PlatformServices/System.Reactive.PlatformServices-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reactive.PlatformServices v4.5 512 + + + true + true + + + ../reactive.pub true @@ -89,27 +96,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {EFA38650-CE13-4BF3-993D-70B238DB1C9E} - System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5 + System.Reactive.Interfaces-net_4_5 {4EF3C775-C516-4897-AB1D-DC9F8862A4D9} - System.Reactive.Core\System.Reactive.Core-net_4_5 + System.Reactive.Core-net_4_5 {EE831E49-3F84-4A05-9417-A9C8BD36E164} - System.Reactive.Linq\System.Reactive.Linq-net_4_5 + System.Reactive.Linq-net_4_5 diff --git a/mcs/class/System.Reactive.Providers/System.Reactive.Providers-net_4_5.csproj b/mcs/class/System.Reactive.Providers/System.Reactive.Providers-net_4_5.csproj index 841b2978350..f39a6e823bc 100644 --- a/mcs/class/System.Reactive.Providers/System.Reactive.Providers-net_4_5.csproj +++ b/mcs/class/System.Reactive.Providers/System.Reactive.Providers-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reactive.Providers v4.5 512 + + + true + true + + + ../reactive.pub true @@ -82,27 +89,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {EFA38650-CE13-4BF3-993D-70B238DB1C9E} - System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5 + System.Reactive.Interfaces-net_4_5 {4EF3C775-C516-4897-AB1D-DC9F8862A4D9} - System.Reactive.Core\System.Reactive.Core-net_4_5 + System.Reactive.Core-net_4_5 {EE831E49-3F84-4A05-9417-A9C8BD36E164} - System.Reactive.Linq\System.Reactive.Linq-net_4_5 + System.Reactive.Linq-net_4_5 diff --git a/mcs/class/System.Reactive.Runtime.Remoting/System.Reactive.Runtime.Remoting-net_4_5.csproj b/mcs/class/System.Reactive.Runtime.Remoting/System.Reactive.Runtime.Remoting-net_4_5.csproj index 62a25babdfc..a9647c3b737 100644 --- a/mcs/class/System.Reactive.Runtime.Remoting/System.Reactive.Runtime.Remoting-net_4_5.csproj +++ b/mcs/class/System.Reactive.Runtime.Remoting/System.Reactive.Runtime.Remoting-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reactive.Runtime.Remoting v4.5 512 + + + true + true + + + ../reactive.pub true @@ -74,27 +81,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {EFA38650-CE13-4BF3-993D-70B238DB1C9E} - System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5 + System.Reactive.Interfaces-net_4_5 {4EF3C775-C516-4897-AB1D-DC9F8862A4D9} - System.Reactive.Core\System.Reactive.Core-net_4_5 + System.Reactive.Core-net_4_5 {EE831E49-3F84-4A05-9417-A9C8BD36E164} - System.Reactive.Linq\System.Reactive.Linq-net_4_5 + System.Reactive.Linq-net_4_5 diff --git a/mcs/class/System.Reactive.Windows.Forms/System.Reactive.Windows.Forms-net_4_5.csproj b/mcs/class/System.Reactive.Windows.Forms/System.Reactive.Windows.Forms-net_4_5.csproj index 1a495e4ae06..639e9d73a77 100644 --- a/mcs/class/System.Reactive.Windows.Forms/System.Reactive.Windows.Forms-net_4_5.csproj +++ b/mcs/class/System.Reactive.Windows.Forms/System.Reactive.Windows.Forms-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reactive.Windows.Forms v4.5 512 + + + true + true + + + ../reactive.pub true @@ -74,31 +81,31 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {EFA38650-CE13-4BF3-993D-70B238DB1C9E} - System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5 + System.Reactive.Interfaces-net_4_5 {4EF3C775-C516-4897-AB1D-DC9F8862A4D9} - System.Reactive.Core\System.Reactive.Core-net_4_5 + System.Reactive.Core-net_4_5 {EE831E49-3F84-4A05-9417-A9C8BD36E164} - System.Reactive.Linq\System.Reactive.Linq-net_4_5 + System.Reactive.Linq-net_4_5 {B102F27C-1A07-487F-BA5B-D5155D201112} - Managed.Windows.Forms\System.Windows.Forms-net_4_5 + System.Windows.Forms-net_4_5 diff --git a/mcs/class/System.Reactive.Windows.Threading/System.Reactive.Windows.Threading-net_4_5.csproj b/mcs/class/System.Reactive.Windows.Threading/System.Reactive.Windows.Threading-net_4_5.csproj index 2141b412e48..85c8cddba10 100644 --- a/mcs/class/System.Reactive.Windows.Threading/System.Reactive.Windows.Threading-net_4_5.csproj +++ b/mcs/class/System.Reactive.Windows.Threading/System.Reactive.Windows.Threading-net_4_5.csproj @@ -18,6 +18,13 @@ System.Reactive.Windows.Threading v4.5 512 + + + true + true + + + ../reactive.pub true @@ -78,31 +85,31 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {EFA38650-CE13-4BF3-993D-70B238DB1C9E} - System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5 + System.Reactive.Interfaces-net_4_5 {4EF3C775-C516-4897-AB1D-DC9F8862A4D9} - System.Reactive.Core\System.Reactive.Core-net_4_5 + System.Reactive.Core-net_4_5 {EE831E49-3F84-4A05-9417-A9C8BD36E164} - System.Reactive.Linq\System.Reactive.Linq-net_4_5 + System.Reactive.Linq-net_4_5 {8E6ED7D5-3B08-4A83-905E-8FB4CF0C160D} - WindowsBase\WindowsBase-net_4_5 + WindowsBase-net_4_5 diff --git a/mcs/class/System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj b/mcs/class/System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj index aaca2b059f5..40003195c3e 100644 --- a/mcs/class/System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj +++ b/mcs/class/System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -107,23 +108,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-net_4_5.csproj b/mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-net_4_5.csproj index cbeccdbf980..e8cfc440b46 100644 --- a/mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-net_4_5.csproj +++ b/mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -88,27 +89,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {8328796E-8A15-4972-8F1E-2F15E7D57C42} - System.Xml.Linq\System.Xml.Linq-net_4_5 + System.Xml.Linq-net_4_5 diff --git a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_4_5.csproj b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_4_5.csproj index 244d5504fff..82d13338a76 100644 --- a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_4_5.csproj +++ b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -136,23 +137,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {B12AABBC-30D1-4885-BF3F-A53B970F68FB} - System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5 + System.Runtime.Serialization.Formatters.Soap-net_4_5 diff --git a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/TcpServerChannel.cs b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/TcpServerChannel.cs index 83f5eeff79a..9ca8bba321d 100644 --- a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/TcpServerChannel.cs +++ b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/TcpServerChannel.cs @@ -218,7 +218,7 @@ namespace System.Runtime.Remoting.Channels.Tcp try { if (!threadPool.RunThread (new ThreadStart (reader.ProcessMessages))) socket.Close (); - } catch (Exception) + } catch (Exception e) { #if DEBUG Console.WriteLine("Exception caught in TcpServerChannel.WaitForConnections during start process message: {0} {1}", e.GetType(), e.Message); @@ -226,7 +226,7 @@ namespace System.Runtime.Remoting.Channels.Tcp } } } - catch (Exception) + catch (Exception e) { #if DEBUG Console.WriteLine("Exception caught in TcpServerChannel.WaitForConnections, stop channel's thread : {0} {1}", e.GetType(), e.Message); diff --git a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/RemotingThreadPool.cs b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/RemotingThreadPool.cs index 52954456e5c..aa99a655487 100644 --- a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/RemotingThreadPool.cs +++ b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/RemotingThreadPool.cs @@ -169,7 +169,7 @@ namespace System.Runtime.Remoting.Channels try { work (); } - catch (Exception) + catch (Exception ex) { #if DEBUG Console.WriteLine("The exception was caught during RemotingThreadPool.PoolThread - work: {0}, {1}", ex.GetType(), ex.Message); diff --git a/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj b/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj index 27813db136c..b9862693a57 100644 --- a/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj +++ b/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -77,11 +78,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj index fe1c9a98ead..ef8b730315a 100644 --- a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj +++ b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -149,27 +150,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializer.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializer.cs index 5808c10c4c5..95e35b0a09f 100755 --- a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializer.cs +++ b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializer.cs @@ -566,9 +566,14 @@ namespace System.Runtime.Serialization } #endif - private bool IsAny() { + private bool IsAny () + { var xpa = type.GetCustomAttribute (true); - return xpa.IsAny; + + if (xpa != null) + return xpa.IsAny; + + return false; } } } diff --git a/mcs/class/System.Security/System.Security-net_4_5.csproj b/mcs/class/System.Security/System.Security-net_4_5.csproj index 3ba1539f43a..d97385f225c 100644 --- a/mcs/class/System.Security/System.Security-net_4_5.csproj +++ b/mcs/class/System.Security/System.Security-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -165,19 +166,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {46F151F2-A422-4A1B-9D29-2E148CE73629} - System\System-secxml-net_4_5 + System-secxml-net_4_5 {21FB091E-0F84-479E-AB16-6503D36852F9} - System.XML\System.Xml-bare-net_4_5 + System.Xml-bare-net_4_5 {D68D4FED-CA32-4800-A628-58BAE485562C} - Mono.Security\Mono.Security-net_4_5 + Mono.Security-net_4_5 diff --git a/mcs/class/System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj b/mcs/class/System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj index 22073a2cfb2..7f34560859a 100644 --- a/mcs/class/System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj +++ b/mcs/class/System.ServiceModel.Activation/System.ServiceModel.Activation-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -74,19 +75,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {0E3CFD7E-2F93-4B5B-B7FA-2AEBE0F850C0} - System.ServiceModel\System.ServiceModel-plainservice-net_4_5 + System.ServiceModel-plainservice-net_4_5 diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-net_4_5.csproj b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-net_4_5.csproj index c0971d9e4aa..e97737daecd 100644 --- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-net_4_5.csproj +++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -167,35 +168,35 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {F2156C09-C377-4945-A690-39CFBF3319B3} - System.ServiceModel\System.ServiceModel-net_4_5 + System.ServiceModel-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {8328796E-8A15-4972-8F1E-2F15E7D57C42} - System.Xml.Linq\System.Xml.Linq-net_4_5 + System.Xml.Linq-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 diff --git a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing-net_4_5.csproj b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing-net_4_5.csproj index ef0e827376e..318ef05c74b 100644 --- a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing-net_4_5.csproj +++ b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -98,31 +99,31 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {F2156C09-C377-4945-A690-39CFBF3319B3} - System.ServiceModel\System.ServiceModel-net_4_5 + System.ServiceModel-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs index 9ccf447e5bf..9ea5bf907d6 100644 --- a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs +++ b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs @@ -121,21 +121,21 @@ namespace System.Runtime.Serialization.Json writer.WriteString (qn.Namespace); } else if (TypeMap.IsDictionary (type)) { writer.WriteAttributeString ("type", "array"); - var itemGetter = type.GetProperty ("Item"); - var keysGetter = type.GetProperty ("Keys"); - var argarr = new object [1]; - foreach (object o in (IEnumerable) keysGetter.GetValue (graph, null)) { - writer.WriteStartElement ("item"); - writer.WriteAttributeString ("type", "object"); - // outputting a KeyValuePair as - writer.WriteStartElement ("Key"); - WriteObjectContent (o, false, !(graph is Array && type.GetElementType () != typeof (object))); - writer.WriteEndElement (); - writer.WriteStartElement ("Value"); - argarr [0] = o; - WriteObjectContent (itemGetter.GetValue (graph, argarr), false, !(graph is Array && type.GetElementType () != typeof (object))); - writer.WriteEndElement (); - writer.WriteEndElement (); + bool otn = !(graph is Array && type.GetElementType () != typeof (object)); + var d = graph as IDictionary; + if (d != null) { + // Optimize the IDictionary case to avoid reflection + foreach (object k in d.Keys) + WriteItem (k, d [k], otn); + } else { + // we can't typecast to IDictionary<,> and can't use dynamic for iOS support + var itemGetter = GetDictionaryProperty (type, "Item"); + var keysGetter = GetDictionaryProperty (type, "Keys"); + var argarr = new object [1]; + foreach (object o in (IEnumerable) keysGetter.GetValue (graph, null)) { + argarr [0] = o; + WriteItem (o, itemGetter.GetValue (graph, argarr), otn); + } } } else if (graph is Array || TypeMap.IsEnumerable (type)) { writer.WriteAttributeString ("type", "array"); @@ -162,6 +162,36 @@ throw new InvalidDataContractException (String.Format ("Type {0} cannot be seria } } + void WriteItem (object key, object value, bool outputTypeName) + { + writer.WriteStartElement ("item"); + writer.WriteAttributeString ("type", "object"); + // outputting a KeyValuePair as + writer.WriteStartElement ("Key"); + WriteObjectContent (key, false, outputTypeName); + writer.WriteEndElement (); + writer.WriteStartElement ("Value"); + WriteObjectContent (value, false, outputTypeName); + writer.WriteEndElement (); + writer.WriteEndElement (); + } + + PropertyInfo GetDictionaryProperty (Type type, string propertyName) + { + var p = type.GetProperty (propertyName); + if (p != null) + return p; + // check explicit - but the generic names might differ, e.g. TKey,TValue vs T,V + var ap = type.GetProperties (BindingFlags.Instance | BindingFlags.NonPublic); + foreach (var cp in ap) { + if (!cp.Name.EndsWith (propertyName, StringComparison.Ordinal)) + continue; + if (cp.Name.StartsWith ("System.Collections.Generic.IDictionary<", StringComparison.Ordinal)) + return cp; + } + return null; + } + string FormatTypeName (Type type) { return String.Format ("{0}:#{1}", type.Name, type.Namespace); diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_4_5.csproj b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_4_5.csproj index b74e00fa02c..9bbf869afb3 100644 --- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_4_5.csproj +++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -116,39 +117,39 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {F2156C09-C377-4945-A690-39CFBF3319B3} - System.ServiceModel\System.ServiceModel-net_4_5 + System.ServiceModel-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {74D281D8-F725-4D79-B218-2DFCCFD44FA2} - System.Web.Extensions\System.Web.Extensions-net_4_5 + System.Web.Extensions-net_4_5 {E537F31B-BCB7-4935-ABF3-DF2FAC48DCB3} - System.ServiceModel.Activation\System.ServiceModel.Activation-net_4_5 + System.ServiceModel.Activation-net_4_5 diff --git a/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs b/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs index 7bcb40ccf8f..68d9fb6a083 100644 --- a/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs +++ b/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs @@ -1453,7 +1453,24 @@ namespace MonoTests.System.Runtime.Serialization.Json Assert.AreEqual (1, dict.Count, "#2"); Assert.AreEqual ("value", dict ["key"], "#3"); } - + + [Test] + public void ExplicitCustomDictionarySerialization () + { + var dict = new MyExplicitDictionary (); + dict.Add ("key", "value"); + var serializer = new DataContractJsonSerializer (dict.GetType ()); + var stream = new MemoryStream (); + serializer.WriteObject (stream, dict); + stream.Position = 0; + + Assert.AreEqual ("[{\"Key\":\"key\",\"Value\":\"value\"}]", new StreamReader (stream).ReadToEnd (), "#1"); + stream.Position = 0; + dict = (MyExplicitDictionary) serializer.ReadObject (stream); + Assert.AreEqual (1, dict.Count, "#2"); + Assert.AreEqual ("value", dict ["key"], "#3"); + } + [Test] public void Bug13485 () { @@ -2113,6 +2130,91 @@ public class MyDictionary : System.Collections.Generic.IDictionary } } +public class MyExplicitDictionary : IDictionary { + + Dictionary dic = new Dictionary (); + + public void Add (K key, V value) + { + dic.Add (key, value); + } + + public bool ContainsKey (K key) + { + return dic.ContainsKey (key); + } + + ICollection IDictionary.Keys { + get { return dic.Keys; } + } + + public bool Remove (K key) + { + return dic.Remove (key); + } + + public bool TryGetValue (K key, out V value) + { + return dic.TryGetValue (key, out value); + } + + ICollection IDictionary.Values { + get { return dic.Values; } + } + + public V this [K key] { + get { return dic [key]; } + set { dic [key] = value; } + } + + IEnumerator IEnumerable.GetEnumerator () + { + return dic.GetEnumerator (); + } + + ICollection> Coll { + get { return (ICollection>) dic; } + } + + public void Add (KeyValuePair item) + { + Coll.Add (item); + } + + public void Clear () + { + dic.Clear (); + } + + public bool Contains (KeyValuePair item) + { + return Coll.Contains (item); + } + + public void CopyTo (KeyValuePair [] array, int arrayIndex) + { + Coll.CopyTo (array, arrayIndex); + } + + public int Count { + get { return dic.Count; } + } + + public bool IsReadOnly { + get { return Coll.IsReadOnly; } + } + + public bool Remove (KeyValuePair item) + { + return Coll.Remove (item); + } + + public IEnumerator> GetEnumerator () + { + return Coll.GetEnumerator (); + } +} + [DataContract] public class Bug13485Type { diff --git a/mcs/class/System.ServiceModel/System.ServiceModel-net_4_5.csproj b/mcs/class/System.ServiceModel/System.ServiceModel-net_4_5.csproj index 02d12751dc3..033b2cdb0c5 100644 --- a/mcs/class/System.ServiceModel/System.ServiceModel-net_4_5.csproj +++ b/mcs/class/System.ServiceModel/System.ServiceModel-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -1081,71 +1082,71 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {B55E59B2-31CA-438B-ADB8-4B9A9A547830} - System.Security\System.Security-net_4_5 + System.Security-net_4_5 {F056C062-E467-4989-9366-440E8CD23C0C} - System.IdentityModel\System.IdentityModel-net_4_5 + System.IdentityModel-net_4_5 {AB4F77BB-4340-4A79-9B66-EF5B4221E1F2} - System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5 + System.IdentityModel.Selectors-net_4_5 {AF2BBF50-AB57-4CA1-8EF5-2B54C7418434} - System.Transactions\System.Transactions-net_4_5 + System.Transactions-net_4_5 {1CBEC0FC-5926-42FA-A0CF-A19617FABB78} - System.Messaging\System.Messaging-net_4_5 + System.Messaging-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {251DB111-FEE1-4080-8411-0AD1CC9BA94B} - System.Web.Services\System.Web.Services-net_4_5 + System.Web.Services-net_4_5 {D68D4FED-CA32-4800-A628-58BAE485562C} - Mono.Security\Mono.Security-net_4_5 + Mono.Security-net_4_5 {B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F} - System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5 + System.Web.ApplicationServices-net_4_5 {E537F31B-BCB7-4935-ABF3-DF2FAC48DCB3} - System.ServiceModel.Activation\System.ServiceModel.Activation-net_4_5 + System.ServiceModel.Activation-net_4_5 diff --git a/mcs/class/System.ServiceModel/System.ServiceModel-plainservice-net_4_5.csproj b/mcs/class/System.ServiceModel/System.ServiceModel-plainservice-net_4_5.csproj index 4dda1162f5c..56c41fea352 100644 --- a/mcs/class/System.ServiceModel/System.ServiceModel-plainservice-net_4_5.csproj +++ b/mcs/class/System.ServiceModel/System.ServiceModel-plainservice-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -1081,67 +1082,67 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {B55E59B2-31CA-438B-ADB8-4B9A9A547830} - System.Security\System.Security-net_4_5 + System.Security-net_4_5 {F056C062-E467-4989-9366-440E8CD23C0C} - System.IdentityModel\System.IdentityModel-net_4_5 + System.IdentityModel-net_4_5 {AB4F77BB-4340-4A79-9B66-EF5B4221E1F2} - System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5 + System.IdentityModel.Selectors-net_4_5 {AF2BBF50-AB57-4CA1-8EF5-2B54C7418434} - System.Transactions\System.Transactions-net_4_5 + System.Transactions-net_4_5 {1CBEC0FC-5926-42FA-A0CF-A19617FABB78} - System.Messaging\System.Messaging-net_4_5 + System.Messaging-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {251DB111-FEE1-4080-8411-0AD1CC9BA94B} - System.Web.Services\System.Web.Services-net_4_5 + System.Web.Services-net_4_5 {D68D4FED-CA32-4800-A628-58BAE485562C} - Mono.Security\Mono.Security-net_4_5 + Mono.Security-net_4_5 {B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F} - System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5 + System.Web.ApplicationServices-net_4_5 diff --git a/mcs/class/System.ServiceProcess/System.ServiceProcess-net_4_5.csproj b/mcs/class/System.ServiceProcess/System.ServiceProcess-net_4_5.csproj index f2da4074982..c5e60dafff8 100644 --- a/mcs/class/System.ServiceProcess/System.ServiceProcess-net_4_5.csproj +++ b/mcs/class/System.ServiceProcess/System.ServiceProcess-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -97,19 +98,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {E6E1740E-37DD-487C-8947-F1C0612D4738} - System.Configuration.Install\System.Configuration.Install-net_4_5 + System.Configuration.Install-net_4_5 {B102F27C-1A07-487F-BA5B-D5155D201112} - Managed.Windows.Forms\System.Windows.Forms-net_4_5 + System.Windows.Forms-net_4_5 diff --git a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-net_4_5.csproj b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-net_4_5.csproj index dfc446c783d..6587d3f69e3 100644 --- a/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-net_4_5.csproj +++ b/mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -118,15 +119,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/System.Transactions/System.Transactions-net_4_5.csproj b/mcs/class/System.Transactions/System.Transactions-net_4_5.csproj index 264b9bf89a0..923da35dfdd 100644 --- a/mcs/class/System.Transactions/System.Transactions-net_4_5.csproj +++ b/mcs/class/System.Transactions/System.Transactions-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -107,15 +108,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 diff --git a/mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj b/mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj index 95b6c8ce536..6c1c6451c8f 100644 --- a/mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj +++ b/mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -72,19 +73,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 diff --git a/mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj b/mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj index 58e77cdc122..1fb3e263dcc 100644 --- a/mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj +++ b/mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -88,15 +89,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 diff --git a/mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_4_5.csproj b/mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_4_5.csproj index 1a3158d1d91..282b542e457 100644 --- a/mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_4_5.csproj +++ b/mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -109,51 +110,51 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {63EC4158-FFAC-4867-8003-CF6054C8DF0B} - System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5 + System.ComponentModel.DataAnnotations-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {8AC5471F-9515-4D01-87B9-7974F2CBD6F1} - System.Data.Linq\System.Data.Linq-net_4_5 + System.Data.Linq-net_4_5 {CB1CB976-AA54-4553-B0E7-05665B199EC4} - System.Drawing\System.Drawing-net_4_5 + System.Drawing-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {74D281D8-F725-4D79-B218-2DFCCFD44FA2} - System.Web.Extensions\System.Web.Extensions-net_4_5 + System.Web.Extensions-net_4_5 {94BD3939-6937-47AA-86CF-5C3E4C59E272} - System.Web.Abstractions\System.Web.Abstractions-net_4_5 + System.Web.Abstractions-net_4_5 {A28F2A14-901C-452C-82B6-75ECE5C7E714} - System.Web.Routing\System.Web.Routing-net_4_5 + System.Web.Routing-net_4_5 {B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F} - System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5 + System.Web.ApplicationServices-net_4_5 diff --git a/mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_4_5.csproj b/mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_4_5.csproj index 86d96d5ea3a..a2c55b0b2d9 100644 --- a/mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_4_5.csproj +++ b/mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -85,23 +86,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D4E6A482-761B-4B41-8B63-C930CA84D268} - System.Design\System.Design-net_4_5 + System.Design-net_4_5 {CB1CB976-AA54-4553-B0E7-05665B199EC4} - System.Drawing\System.Drawing-net_4_5 + System.Drawing-net_4_5 {B102F27C-1A07-487F-BA5B-D5155D201112} - Managed.Windows.Forms\System.Windows.Forms-net_4_5 + System.Windows.Forms-net_4_5 diff --git a/mcs/class/System.Web.Extensions/System.Web.Extensions-net_4_5.csproj b/mcs/class/System.Web.Extensions/System.Web.Extensions-net_4_5.csproj index c70a18fb352..2aaa88beb04 100644 --- a/mcs/class/System.Web.Extensions/System.Web.Extensions-net_4_5.csproj +++ b/mcs/class/System.Web.Extensions/System.Web.Extensions-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -213,55 +214,55 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {CB1CB976-AA54-4553-B0E7-05665B199EC4} - System.Drawing\System.Drawing-net_4_5 + System.Drawing-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {8AC5471F-9515-4D01-87B9-7974F2CBD6F1} - System.Data.Linq\System.Data.Linq-net_4_5 + System.Data.Linq-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {251DB111-FEE1-4080-8411-0AD1CC9BA94B} - System.Web.Services\System.Web.Services-net_4_5 + System.Web.Services-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {773D8BA7-9A88-49AC-81C9-740436270588} - System.EnterpriseServices\System.EnterpriseServices-net_4_5 + System.EnterpriseServices-net_4_5 {F2156C09-C377-4945-A690-39CFBF3319B3} - System.ServiceModel\System.ServiceModel-net_4_5 + System.ServiceModel-net_4_5 {B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F} - System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5 + System.Web.ApplicationServices-net_4_5 diff --git a/mcs/class/System.Web.Http.SelfHost/System.Web.Http.SelfHost-net_4_5.csproj b/mcs/class/System.Web.Http.SelfHost/System.Web.Http.SelfHost-net_4_5.csproj index c606cfe8034..59f0bb25a35 100644 --- a/mcs/class/System.Web.Http.SelfHost/System.Web.Http.SelfHost-net_4_5.csproj +++ b/mcs/class/System.Web.Http.SelfHost/System.Web.Http.SelfHost-net_4_5.csproj @@ -18,6 +18,13 @@ System.Web.Http.SelfHost v4.5 512 + + + true + true + + + ../winfx.pub true @@ -110,47 +117,47 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {E36C154B-A0AC-4721-B06A-AFE31D357CE5} - System.Net.Http\System.Net.Http-net_4_5 + System.Net.Http-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {F2156C09-C377-4945-A690-39CFBF3319B3} - System.ServiceModel\System.ServiceModel-net_4_5 + System.ServiceModel-net_4_5 {F056C062-E467-4989-9366-440E8CD23C0C} - System.IdentityModel\System.IdentityModel-net_4_5 + System.IdentityModel-net_4_5 {2EFF8684-99DB-4DD6-B3BC-7E7AA42A15FC} - System.Web.Http\System.Web.Http-net_4_5 + System.Web.Http-net_4_5 {BFBE5444-4F21-45CF-929E-C8FBEF302F5E} - System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5 + System.Net.Http.Formatting-net_4_5 diff --git a/mcs/class/System.Web.Http.WebHost/System.Web.Http.WebHost-net_4_5.csproj b/mcs/class/System.Web.Http.WebHost/System.Web.Http.WebHost-net_4_5.csproj index 76ad7746a32..2bbb825c2c0 100644 --- a/mcs/class/System.Web.Http.WebHost/System.Web.Http.WebHost-net_4_5.csproj +++ b/mcs/class/System.Web.Http.WebHost/System.Web.Http.WebHost-net_4_5.csproj @@ -18,6 +18,13 @@ System.Web.Http.WebHost v4.5 512 + + + true + true + + + ../winfx.pub true @@ -98,59 +105,59 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {E36C154B-A0AC-4721-B06A-AFE31D357CE5} - System.Net.Http\System.Net.Http-net_4_5 + System.Net.Http-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {F2156C09-C377-4945-A690-39CFBF3319B3} - System.ServiceModel\System.ServiceModel-net_4_5 + System.ServiceModel-net_4_5 {F056C062-E467-4989-9366-440E8CD23C0C} - System.IdentityModel\System.IdentityModel-net_4_5 + System.IdentityModel-net_4_5 {2EFF8684-99DB-4DD6-B3BC-7E7AA42A15FC} - System.Web.Http\System.Web.Http-net_4_5 + System.Web.Http-net_4_5 {BFBE5444-4F21-45CF-929E-C8FBEF302F5E} - System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5 + System.Net.Http.Formatting-net_4_5 {A28F2A14-901C-452C-82B6-75ECE5C7E714} - System.Web.Routing\System.Web.Routing-net_4_5 + System.Web.Routing-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {50DC9191-2D18-4EDB-A929-4ECAB7981A1C} - Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5 + Microsoft.Web.Infrastructure-net_4_5 diff --git a/mcs/class/System.Web.Http/System.Web.Http-net_4_5.csproj b/mcs/class/System.Web.Http/System.Web.Http-net_4_5.csproj index c4fd0979fb8..eea2585d2a0 100644 --- a/mcs/class/System.Web.Http/System.Web.Http-net_4_5.csproj +++ b/mcs/class/System.Web.Http/System.Web.Http-net_4_5.csproj @@ -18,6 +18,13 @@ System.Web.Http v4.5 512 + + + true + true + + + ../winfx.pub true @@ -333,43 +340,43 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {E36C154B-A0AC-4721-B06A-AFE31D357CE5} - System.Net.Http\System.Net.Http-net_4_5 + System.Net.Http-net_4_5 {63EC4158-FFAC-4867-8003-CF6054C8DF0B} - System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5 + System.ComponentModel.DataAnnotations-net_4_5 {BFBE5444-4F21-45CF-929E-C8FBEF302F5E} - System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5 + System.Net.Http.Formatting-net_4_5 {CB3E9225-3DFF-4930-BFED-1E8AE5319C32} - System.Runtime.Caching\System.Runtime.Caching-net_4_5 + System.Runtime.Caching-net_4_5 {08FF4C26-9C12-433D-AE90-43370046387A} - System.Runtime.Serialization\System.Runtime.Serialization-net_4_5 + System.Runtime.Serialization-net_4_5 {8AC5471F-9515-4D01-87B9-7974F2CBD6F1} - System.Data.Linq\System.Data.Linq-net_4_5 + System.Data.Linq-net_4_5 diff --git a/mcs/class/System.Web.Mvc2/System.Web.Mvc2-net_4_5.csproj b/mcs/class/System.Web.Mvc2/System.Web.Mvc2-net_4_5.csproj index a29e32126a3..81adf78d9ef 100644 --- a/mcs/class/System.Web.Mvc2/System.Web.Mvc2-net_4_5.csproj +++ b/mcs/class/System.Web.Mvc2/System.Web.Mvc2-net_4_5.csproj @@ -18,6 +18,12 @@ dummy-System.Web.Mvc v4.5 512 + + + true + + + ../winfx.pub true @@ -347,51 +353,51 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {94BD3939-6937-47AA-86CF-5C3E4C59E272} - System.Web.Abstractions\System.Web.Abstractions-net_4_5 + System.Web.Abstractions-net_4_5 {A28F2A14-901C-452C-82B6-75ECE5C7E714} - System.Web.Routing\System.Web.Routing-net_4_5 + System.Web.Routing-net_4_5 {74D281D8-F725-4D79-B218-2DFCCFD44FA2} - System.Web.Extensions\System.Web.Extensions-net_4_5 + System.Web.Extensions-net_4_5 {63EC4158-FFAC-4867-8003-CF6054C8DF0B} - System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5 + System.ComponentModel.DataAnnotations-net_4_5 {8AC5471F-9515-4D01-87B9-7974F2CBD6F1} - System.Data.Linq\System.Data.Linq-net_4_5 + System.Data.Linq-net_4_5 diff --git a/mcs/class/System.Web.Mvc3/System.Web.Mvc3-net_4_5.csproj b/mcs/class/System.Web.Mvc3/System.Web.Mvc3-net_4_5.csproj index 02938c10901..8c4cef06e96 100644 --- a/mcs/class/System.Web.Mvc3/System.Web.Mvc3-net_4_5.csproj +++ b/mcs/class/System.Web.Mvc3/System.Web.Mvc3-net_4_5.csproj @@ -18,6 +18,13 @@ System.Web.Mvc v4.5 512 + + + true + true + + + ../winfx.pub true @@ -410,71 +417,71 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {50DC9191-2D18-4EDB-A929-4ECAB7981A1C} - Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5 + Microsoft.Web.Infrastructure-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {94BD3939-6937-47AA-86CF-5C3E4C59E272} - System.Web.Abstractions\System.Web.Abstractions-net_4_5 + System.Web.Abstractions-net_4_5 {A28F2A14-901C-452C-82B6-75ECE5C7E714} - System.Web.Routing\System.Web.Routing-net_4_5 + System.Web.Routing-net_4_5 {74D281D8-F725-4D79-B218-2DFCCFD44FA2} - System.Web.Extensions\System.Web.Extensions-net_4_5 + System.Web.Extensions-net_4_5 {63EC4158-FFAC-4867-8003-CF6054C8DF0B} - System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5 + System.ComponentModel.DataAnnotations-net_4_5 {8AC5471F-9515-4D01-87B9-7974F2CBD6F1} - System.Data.Linq\System.Data.Linq-net_4_5 + System.Data.Linq-net_4_5 {CB3E9225-3DFF-4930-BFED-1E8AE5319C32} - System.Runtime.Caching\System.Runtime.Caching-net_4_5 + System.Runtime.Caching-net_4_5 {FF61AB24-4492-47FA-B4D3-8D961113DD08} - System.Web.Razor\System.Web.Razor-net_4_5 + System.Web.Razor-net_4_5 {4E601800-644F-49B2-B1C9-60D3489AAC38} - System.Web.WebPages.Razor\System.Web.WebPages.Razor-net_4_5 + System.Web.WebPages.Razor-net_4_5 {FFDF7B0A-BD62-4E39-8A80-A42B560149C5} - System.Web.WebPages\System.Web.WebPages-net_4_5 + System.Web.WebPages-net_4_5 diff --git a/mcs/class/System.Web.Razor/System.Web.Razor-net_4_5.csproj b/mcs/class/System.Web.Razor/System.Web.Razor-net_4_5.csproj index 9a1e71f3c97..a3e10f1629b 100644 --- a/mcs/class/System.Web.Razor/System.Web.Razor-net_4_5.csproj +++ b/mcs/class/System.Web.Razor/System.Web.Razor-net_4_5.csproj @@ -18,6 +18,13 @@ System.Web.Razor v4.5 512 + + + true + true + + + ../winfx.pub true @@ -219,15 +226,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/System.Web.Routing/System.Web.Routing-net_4_5.csproj b/mcs/class/System.Web.Routing/System.Web.Routing-net_4_5.csproj index 244f90cc4e9..e145f1dcacb 100644 --- a/mcs/class/System.Web.Routing/System.Web.Routing-net_4_5.csproj +++ b/mcs/class/System.Web.Routing/System.Web.Routing-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -72,23 +73,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {94BD3939-6937-47AA-86CF-5C3E4C59E272} - System.Web.Abstractions\System.Web.Abstractions-net_4_5 + System.Web.Abstractions-net_4_5 diff --git a/mcs/class/System.Web.Services/System.Web.Services-net_4_5.csproj b/mcs/class/System.Web.Services/System.Web.Services-net_4_5.csproj index 23e0b0cc314..d52fbb6bd6d 100644 --- a/mcs/class/System.Web.Services/System.Web.Services-net_4_5.csproj +++ b/mcs/class/System.Web.Services/System.Web.Services-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -292,27 +293,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {773D8BA7-9A88-49AC-81C9-740436270588} - System.EnterpriseServices\System.EnterpriseServices-net_4_5 + System.EnterpriseServices-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {21892B00-1C9F-44F3-AE4C-A6A9A210CEC7} - System.Web\System.Web-plainweb-net_4_5 + System.Web-plainweb-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 diff --git a/mcs/class/System.Web.WebPages.Deployment/System.Web.WebPages.Deployment-net_4_5.csproj b/mcs/class/System.Web.WebPages.Deployment/System.Web.WebPages.Deployment-net_4_5.csproj index 077c0420f7c..2f7b47b18e3 100644 --- a/mcs/class/System.Web.WebPages.Deployment/System.Web.WebPages.Deployment-net_4_5.csproj +++ b/mcs/class/System.Web.WebPages.Deployment/System.Web.WebPages.Deployment-net_4_5.csproj @@ -18,6 +18,13 @@ System.Web.WebPages.Deployment v4.5 512 + + + true + true + + + ../winfx.pub true @@ -87,27 +94,27 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {50DC9191-2D18-4EDB-A929-4ECAB7981A1C} - Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5 + Microsoft.Web.Infrastructure-net_4_5 diff --git a/mcs/class/System.Web.WebPages.Razor/System.Web.WebPages.Razor-net_4_5.csproj b/mcs/class/System.Web.WebPages.Razor/System.Web.WebPages.Razor-net_4_5.csproj index c346b1f19a6..185ea68b67a 100644 --- a/mcs/class/System.Web.WebPages.Razor/System.Web.WebPages.Razor-net_4_5.csproj +++ b/mcs/class/System.Web.WebPages.Razor/System.Web.WebPages.Razor-net_4_5.csproj @@ -18,6 +18,13 @@ System.Web.WebPages.Razor v4.5 512 + + + true + true + + + ../winfx.pub true @@ -90,31 +97,31 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {FFDF7B0A-BD62-4E39-8A80-A42B560149C5} - System.Web.WebPages\System.Web.WebPages-net_4_5 + System.Web.WebPages-net_4_5 {FF61AB24-4492-47FA-B4D3-8D961113DD08} - System.Web.Razor\System.Web.Razor-net_4_5 + System.Web.Razor-net_4_5 diff --git a/mcs/class/System.Web.WebPages/System.Web.WebPages-net_4_5.csproj b/mcs/class/System.Web.WebPages/System.Web.WebPages-net_4_5.csproj index d9a6840eb01..b4bb9b73a6e 100644 --- a/mcs/class/System.Web.WebPages/System.Web.WebPages-net_4_5.csproj +++ b/mcs/class/System.Web.WebPages/System.Web.WebPages-net_4_5.csproj @@ -18,6 +18,13 @@ System.Web.WebPages v4.5 512 + + + true + true + + + ../winfx.pub true @@ -214,55 +221,55 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {D554618C-5D38-413A-82BA-7A70B6FC61A3} - Microsoft.CSharp\Microsoft.CSharp-net_4_5 + Microsoft.CSharp-net_4_5 {50DC9191-2D18-4EDB-A929-4ECAB7981A1C} - Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5 + Microsoft.Web.Infrastructure-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {63EC4158-FFAC-4867-8003-CF6054C8DF0B} - System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5 + System.ComponentModel.DataAnnotations-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {8AC5471F-9515-4D01-87B9-7974F2CBD6F1} - System.Data.Linq\System.Data.Linq-net_4_5 + System.Data.Linq-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {CFBE1EF0-4B98-4752-9F6A-4D61CF9DA0EF} - System.Web.WebPages.Deployment\System.Web.WebPages.Deployment-net_4_5 + System.Web.WebPages.Deployment-net_4_5 {FF61AB24-4492-47FA-B4D3-8D961113DD08} - System.Web.Razor\System.Web.Razor-net_4_5 + System.Web.Razor-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {8328796E-8A15-4972-8F1E-2F15E7D57C42} - System.Xml.Linq\System.Xml.Linq-net_4_5 + System.Xml.Linq-net_4_5 diff --git a/mcs/class/System.Web/System.Web-net_4_5.csproj b/mcs/class/System.Web/System.Web-net_4_5.csproj index c55b89a4a21..787662b4184 100644 --- a/mcs/class/System.Web/System.Web-net_4_5.csproj +++ b/mcs/class/System.Web/System.Web-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -1372,51 +1373,51 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {CB1CB976-AA54-4553-B0E7-05665B199EC4} - System.Drawing\System.Drawing-net_4_5 + System.Drawing-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {773D8BA7-9A88-49AC-81C9-740436270588} - System.EnterpriseServices\System.EnterpriseServices-net_4_5 + System.EnterpriseServices-net_4_5 {B12AABBC-30D1-4885-BF3F-A53B970F68FB} - System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5 + System.Runtime.Serialization.Formatters.Soap-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {41476FBD-C1CB-4B3C-8078-3281EB1E0EAB} - Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5 + Mono.Data.Sqlite-net_4_5 {B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F} - System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5 + System.Web.ApplicationServices-net_4_5 {251DB111-FEE1-4080-8411-0AD1CC9BA94B} - System.Web.Services\System.Web.Services-net_4_5 + System.Web.Services-net_4_5 diff --git a/mcs/class/System.Web/System.Web-plainweb-net_4_5.csproj b/mcs/class/System.Web/System.Web-plainweb-net_4_5.csproj index c0740c7185b..5f49197e3f6 100644 --- a/mcs/class/System.Web/System.Web-plainweb-net_4_5.csproj +++ b/mcs/class/System.Web/System.Web-plainweb-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -1372,47 +1373,47 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {CB1CB976-AA54-4553-B0E7-05665B199EC4} - System.Drawing\System.Drawing-net_4_5 + System.Drawing-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {773D8BA7-9A88-49AC-81C9-740436270588} - System.EnterpriseServices\System.EnterpriseServices-net_4_5 + System.EnterpriseServices-net_4_5 {B12AABBC-30D1-4885-BF3F-A53B970F68FB} - System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5 + System.Runtime.Serialization.Formatters.Soap-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {41476FBD-C1CB-4B3C-8078-3281EB1E0EAB} - Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5 + Mono.Data.Sqlite-net_4_5 {B4E6806D-1B38-4CEE-8ADB-2D0A4D1AF25F} - System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5 + System.Web.ApplicationServices-net_4_5 diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-net_4_5.csproj b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-net_4_5.csproj index 6af625e3945..462d298f6bd 100644 --- a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-net_4_5.csproj +++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -208,31 +209,31 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {CB1CB976-AA54-4553-B0E7-05665B199EC4} - System.Drawing\System.Drawing-net_4_5 + System.Drawing-net_4_5 {B102F27C-1A07-487F-BA5B-D5155D201112} - Managed.Windows.Forms\System.Windows.Forms-net_4_5 + System.Windows.Forms-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/System.Windows/System.Windows-net_4_5.csproj b/mcs/class/System.Windows/System.Windows-net_4_5.csproj index 134d7ffb49a..e480fac38b7 100644 --- a/mcs/class/System.Windows/System.Windows-net_4_5.csproj +++ b/mcs/class/System.Windows/System.Windows-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -72,11 +73,11 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/System.XML/Makefile b/mcs/class/System.XML/Makefile index 2160578776c..c52a56468ff 100644 --- a/mcs/class/System.XML/Makefile +++ b/mcs/class/System.XML/Makefile @@ -65,8 +65,8 @@ EXTRA_DISTFILES = \ $(xmlfiles_files:%=Test/XmlFiles/%) \ $(nist_dom_files:%=Test/System.Xml/nist_dom/%) -System.Xml.XPath/Parser.cs: System.Xml.XPath/Parser.jay $(topdir)/jay/skeleton.cs - (cd System.Xml.XPath; $(topdir)/../jay/jay -ct < $(topdir)/../jay/skeleton.cs Parser.jay >> Parser.cs) +System.Xml.XPath/$(PROFILE)_Parser.cs: System.Xml.XPath/Parser.jay $(topdir)/jay/skeleton.cs + (cd System.Xml.XPath; $(topdir)/../jay/jay -ct < $(topdir)/../jay/skeleton.cs Parser.jay >> $(PROFILE)_Parser.cs) Mono.Xml.Xsl/$(PROFILE)_PatternParser.jay: System.Xml.XPath/Parser.jay $(topdir)/jay/skeleton.cs sed "s/\%start Expr/\%start Pattern/" $< >$@ @@ -80,12 +80,12 @@ Mono.Xml.Xsl/$(PROFILE)_PatternTokenizer.cs: System.Xml.XPath/Tokenizer.cs cat $< >>$@ ifneq (moonlight_raw, $(PROFILE)) -BUILT_SOURCES = System.Xml.XPath/Parser.cs \ +BUILT_SOURCES = System.Xml.XPath/$(PROFILE)_Parser.cs \ Mono.Xml.Xsl/$(PROFILE)_PatternParser.cs \ Mono.Xml.Xsl/$(PROFILE)_PatternTokenizer.cs CLEAN_FILES = Test/XmlFiles/xsl/result.xml \ - System.Xml.XPath/Parser.cs \ + System.Xml.XPath/$(PROFILE)_Parser.cs \ Mono.Xml.Xsl/$(PROFILE)_PatternParser.cs \ Mono.Xml.Xsl/$(PROFILE)_PatternTokenizer.cs endif diff --git a/mcs/class/System.XML/System.Xml-bare-net_4_5.csproj b/mcs/class/System.XML/System.Xml-bare-net_4_5.csproj index bce17f5f00b..d253b4ea411 100644 --- a/mcs/class/System.XML/System.Xml-bare-net_4_5.csproj +++ b/mcs/class/System.XML/System.Xml-bare-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -472,11 +473,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {91CDF14E-F60F-4AB7-BC9D-5CBD7E669076} - System\System-bare-net_4_5 + System-bare-net_4_5 diff --git a/mcs/class/System.XML/System.Xml-net_4_5.csproj b/mcs/class/System.XML/System.Xml-net_4_5.csproj index e39b9a75b43..ea6fcbeb89d 100644 --- a/mcs/class/System.XML/System.Xml-net_4_5.csproj +++ b/mcs/class/System.XML/System.Xml-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -472,15 +473,15 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {91CDF14E-F60F-4AB7-BC9D-5CBD7E669076} - System\System-bare-net_4_5 + System-bare-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 diff --git a/mcs/class/System.XML/System.Xml.XPath/.gitignore b/mcs/class/System.XML/System.Xml.XPath/.gitignore index ac16218ced3..9affbc6415d 100644 --- a/mcs/class/System.XML/System.Xml.XPath/.gitignore +++ b/mcs/class/System.XML/System.Xml.XPath/.gitignore @@ -1 +1 @@ -/Parser.cs +/*_Parser.cs diff --git a/mcs/class/System.Xaml/System.Xaml-net_4_5.csproj b/mcs/class/System.Xaml/System.Xaml-net_4_5.csproj index efe48c78461..7e4b8875fcf 100644 --- a/mcs/class/System.Xaml/System.Xaml-net_4_5.csproj +++ b/mcs/class/System.Xaml/System.Xaml-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -193,19 +194,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 diff --git a/mcs/class/System.Xml.Linq/System.Xml.Linq-net_4_5.csproj b/mcs/class/System.Xml.Linq/System.Xml.Linq-net_4_5.csproj index ea39aaa2447..ee628c2c5fb 100644 --- a/mcs/class/System.Xml.Linq/System.Xml.Linq-net_4_5.csproj +++ b/mcs/class/System.Xml.Linq/System.Xml.Linq-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -103,19 +104,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 diff --git a/mcs/class/System.Xml.Serialization/System.Xml.Serialization-net_4_5.csproj b/mcs/class/System.Xml.Serialization/System.Xml.Serialization-net_4_5.csproj index df66098df76..0fe3b0dd442 100644 --- a/mcs/class/System.Xml.Serialization/System.Xml.Serialization-net_4_5.csproj +++ b/mcs/class/System.Xml.Serialization/System.Xml.Serialization-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -72,15 +73,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {F2156C09-C377-4945-A690-39CFBF3319B3} - System.ServiceModel\System.ServiceModel-net_4_5 + System.ServiceModel-net_4_5 diff --git a/mcs/class/System/System-bare-net_4_5.csproj b/mcs/class/System/System-bare-net_4_5.csproj index 31b70df4c52..26714d1f7bb 100644 --- a/mcs/class/System/System-bare-net_4_5.csproj +++ b/mcs/class/System/System-bare-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -1155,7 +1156,7 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/class/System/System-net_4_5.csproj b/mcs/class/System/System-net_4_5.csproj index e28d9a90cda..8367ee9e16b 100644 --- a/mcs/class/System/System-net_4_5.csproj +++ b/mcs/class/System/System-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -1155,23 +1156,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 {46F151F2-A422-4A1B-9D29-2E148CE73629} - System\System-secxml-net_4_5 + System-secxml-net_4_5 PrebuiltSystem {D68D4FED-CA32-4800-A628-58BAE485562C} - Mono.Security\Mono.Security-net_4_5 + Mono.Security-net_4_5 MonoSecurity diff --git a/mcs/class/System/System-secxml-net_4_5.csproj b/mcs/class/System/System-secxml-net_4_5.csproj index e531d22607c..2e69308ad30 100644 --- a/mcs/class/System/System-secxml-net_4_5.csproj +++ b/mcs/class/System/System-secxml-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -1155,19 +1156,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {21FB091E-0F84-479E-AB16-6503D36852F9} - System.XML\System.Xml-bare-net_4_5 + System.Xml-bare-net_4_5 {91CDF14E-F60F-4AB7-BC9D-5CBD7E669076} - System\System-bare-net_4_5 + System-bare-net_4_5 PrebuiltSystem {D68D4FED-CA32-4800-A628-58BAE485562C} - Mono.Security\Mono.Security-net_4_5 + Mono.Security-net_4_5 MonoSecurity diff --git a/mcs/class/System/System.Net/HttpWebRequest.cs b/mcs/class/System/System.Net/HttpWebRequest.cs index 9dbf4857ab9..c86790164a3 100644 --- a/mcs/class/System/System.Net/HttpWebRequest.cs +++ b/mcs/class/System/System.Net/HttpWebRequest.cs @@ -1328,9 +1328,9 @@ namespace System.Net }); } - SimpleAsyncResult SetWriteStreamInner (SimpleAsyncCallback callback) + void SetWriteStreamInner (SimpleAsyncCallback callback) { - return SimpleAsyncResult.Run (result => { + SimpleAsyncResult.Run (result => { if (bodyBuffer != null) { // The body has been written and buffered. The request "user" // won't write it again, so we must do it. diff --git a/mcs/class/System/System.Net/MacProxy.cs b/mcs/class/System/System.Net/MacProxy.cs index 1a5e89ec0a3..45740306db5 100644 --- a/mcs/class/System/System.Net/MacProxy.cs +++ b/mcs/class/System/System.Net/MacProxy.cs @@ -3,7 +3,7 @@ // // Author: Jeffrey Stedfast // -// Copyright (c) 2012 Xamarin Inc. +// Copyright (c) 2012-2014 Xamarin Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -83,7 +83,7 @@ namespace System.Net } [DllImport (CoreFoundationLibrary)] - extern static IntPtr CFRelease (IntPtr handle); + extern static void CFRelease (IntPtr handle); void Release () { @@ -110,7 +110,7 @@ namespace System.Net public CFArray (IntPtr handle, bool own) : base (handle, own) { } [DllImport (CoreFoundationLibrary)] - extern static IntPtr CFArrayCreate (IntPtr allocator, IntPtr values, int numValues, IntPtr callbacks); + extern static IntPtr CFArrayCreate (IntPtr allocator, IntPtr values, /* CFIndex */ IntPtr numValues, IntPtr callbacks); static readonly IntPtr kCFTypeArrayCallbacks; static CFArray () @@ -132,7 +132,7 @@ namespace System.Net throw new ArgumentNullException ("values"); fixed (IntPtr *pv = values) { - IntPtr handle = CFArrayCreate (IntPtr.Zero, (IntPtr) pv, values.Length, kCFTypeArrayCallbacks); + IntPtr handle = CFArrayCreate (IntPtr.Zero, (IntPtr) pv, (IntPtr) values.Length, kCFTypeArrayCallbacks); return new CFArray (handle, false); } @@ -151,18 +151,18 @@ namespace System.Net } [DllImport (CoreFoundationLibrary)] - extern static int CFArrayGetCount (IntPtr handle); + extern static /* CFIndex */ IntPtr CFArrayGetCount (IntPtr handle); public int Count { - get { return CFArrayGetCount (Handle); } + get { return (int) CFArrayGetCount (Handle); } } [DllImport (CoreFoundationLibrary)] - extern static IntPtr CFArrayGetValueAtIndex (IntPtr handle, int index); + extern static IntPtr CFArrayGetValueAtIndex (IntPtr handle, /* CFIndex */ IntPtr index); public IntPtr this[int index] { get { - return CFArrayGetValueAtIndex (Handle, index); + return CFArrayGetValueAtIndex (Handle, (IntPtr) index); } } } @@ -172,7 +172,8 @@ namespace System.Net public CFNumber (IntPtr handle, bool own) : base (handle, own) { } [DllImport (CoreFoundationLibrary)] - extern static bool CFNumberGetValue (IntPtr handle, int type, out bool value); + [return: MarshalAs (UnmanagedType.I1)] + extern static bool CFNumberGetValue (IntPtr handle, /* CFNumberType */ IntPtr type, [MarshalAs (UnmanagedType.I1)] out bool value); public static bool AsBool (IntPtr handle) { @@ -181,7 +182,7 @@ namespace System.Net if (handle == IntPtr.Zero) return false; - CFNumberGetValue (handle, 1, out value); + CFNumberGetValue (handle, (IntPtr) 1, out value); return value; } @@ -192,7 +193,8 @@ namespace System.Net } [DllImport (CoreFoundationLibrary)] - extern static bool CFNumberGetValue (IntPtr handle, int type, out int value); + [return: MarshalAs (UnmanagedType.I1)] + extern static bool CFNumberGetValue (IntPtr handle, /* CFNumberType */ IntPtr type, out int value); public static int AsInt32 (IntPtr handle) { @@ -201,7 +203,8 @@ namespace System.Net if (handle == IntPtr.Zero) return 0; - CFNumberGetValue (handle, 9, out value); + // 9 == kCFNumberIntType == C int + CFNumberGetValue (handle, (IntPtr) 9, out value); return value; } @@ -213,12 +216,12 @@ namespace System.Net } internal struct CFRange { - public int Location, Length; + public IntPtr Location, Length; public CFRange (int loc, int len) { - Location = loc; - Length = len; + Location = (IntPtr) loc; + Length = (IntPtr) len; } } @@ -229,7 +232,7 @@ namespace System.Net public CFString (IntPtr handle, bool own) : base (handle, own) { } [DllImport (CoreFoundationLibrary)] - extern static IntPtr CFStringCreateWithCharacters (IntPtr alloc, IntPtr chars, int length); + extern static IntPtr CFStringCreateWithCharacters (IntPtr alloc, IntPtr chars, /* CFIndex */ IntPtr length); public static CFString Create (string value) { @@ -237,7 +240,7 @@ namespace System.Net unsafe { fixed (char *ptr = value) { - handle = CFStringCreateWithCharacters (IntPtr.Zero, (IntPtr) ptr, value.Length); + handle = CFStringCreateWithCharacters (IntPtr.Zero, (IntPtr) ptr, (IntPtr) value.Length); } } @@ -248,14 +251,14 @@ namespace System.Net } [DllImport (CoreFoundationLibrary)] - extern static int CFStringGetLength (IntPtr handle); + extern static /* CFIndex */ IntPtr CFStringGetLength (IntPtr handle); public int Length { get { if (str != null) return str.Length; - return CFStringGetLength (Handle); + return (int) CFStringGetLength (Handle); } } @@ -270,7 +273,7 @@ namespace System.Net if (handle == IntPtr.Zero) return null; - int len = CFStringGetLength (handle); + int len = (int) CFStringGetLength (handle); if (len == 0) return string.Empty; diff --git a/mcs/class/System/System.Net/SimpleAsyncResult.cs b/mcs/class/System/System.Net/SimpleAsyncResult.cs index 42c94e0c14d..4d143153ddf 100644 --- a/mcs/class/System/System.Net/SimpleAsyncResult.cs +++ b/mcs/class/System/System.Net/SimpleAsyncResult.cs @@ -1,5 +1,5 @@ // -// System.Net.WebAsyncResult +// SimpleAsyncResult.cs // // Authors: // Gonzalo Paniagua Javier (gonzalo@ximian.com) @@ -63,7 +63,7 @@ namespace System.Net }; } - public static SimpleAsyncResult Run (SimpleAsyncFunc func, SimpleAsyncCallback callback) + public static void Run (SimpleAsyncFunc func, SimpleAsyncCallback callback) { var result = new SimpleAsyncResult (callback); try { @@ -72,12 +72,11 @@ namespace System.Net } catch (Exception ex) { result.SetCompleted (true, ex); } - return result; } - public static SimpleAsyncResult RunWithLock (object locker, SimpleAsyncFunc func, SimpleAsyncCallback callback) + public static void RunWithLock (object locker, SimpleAsyncFunc func, SimpleAsyncCallback callback) { - return Run (inner => { + Run (inner => { bool running = func (inner); if (running) Monitor.Exit (locker); @@ -105,7 +104,6 @@ namespace System.Net { callbackDone = false; exc = null; - exc = null; lock (locker) { isCompleted = false; if (handle != null) diff --git a/mcs/class/System/System.Net/WebConnectionStream.cs b/mcs/class/System/System.Net/WebConnectionStream.cs index 25c101a7d01..b946654f329 100644 --- a/mcs/class/System/System.Net/WebConnectionStream.cs +++ b/mcs/class/System/System.Net/WebConnectionStream.cs @@ -633,9 +633,9 @@ namespace System.Net { } - internal SimpleAsyncResult SetHeadersAsync (bool setInternalLength, SimpleAsyncCallback callback) + internal void SetHeadersAsync (bool setInternalLength, SimpleAsyncCallback callback) { - return SimpleAsyncResult.Run (r => SetHeadersAsync (r, setInternalLength), callback); + SimpleAsyncResult.Run (r => SetHeadersAsync (r, setInternalLength), callback); } bool SetHeadersAsync (SimpleAsyncResult result, bool setInternalLength) @@ -715,7 +715,7 @@ namespace System.Net WebExceptionStatus.ServerProtocolViolation, null); } - var ret = SetHeadersAsync (true, inner => { + SetHeadersAsync (true, inner => { if (inner.GotException) { result.SetCompleted (inner.CompletedSynchronously, inner.Exception); return; diff --git a/mcs/class/System/System.Security.Cryptography.X509Certificates/OSX509Certificates.cs b/mcs/class/System/System.Security.Cryptography.X509Certificates/OSX509Certificates.cs index efd394ef5e8..4dc4e0a1560 100644 --- a/mcs/class/System/System.Security.Cryptography.X509Certificates/OSX509Certificates.cs +++ b/mcs/class/System/System.Security.Cryptography.X509Certificates/OSX509Certificates.cs @@ -1,5 +1,5 @@ // Copyright (C) 2010 Novell, Inc (http://www.novell.com) -// Copyright 2012 Xamarin Inc. +// Copyright 2012-2014 Xamarin Inc. // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the @@ -42,26 +42,27 @@ namespace System.Security.Cryptography.X509Certificates { extern static IntPtr SecCertificateCreateWithData (IntPtr allocator, IntPtr nsdataRef); [DllImport (SecurityLibrary)] - extern static int SecTrustCreateWithCertificates (IntPtr certOrCertArray, IntPtr policies, out IntPtr sectrustref); + extern static /* OSStatus */ int SecTrustCreateWithCertificates (IntPtr certOrCertArray, IntPtr policies, out IntPtr sectrustref); [DllImport (SecurityLibrary)] - extern static IntPtr SecPolicyCreateSSL (bool server, IntPtr cfStringHostname); + extern static IntPtr SecPolicyCreateSSL ([MarshalAs (UnmanagedType.I1)] bool server, IntPtr cfStringHostname); [DllImport (SecurityLibrary)] - extern static int SecTrustEvaluate (IntPtr secTrustRef, out SecTrustResult secTrustResultTime); + extern static /* OSStatus */ int SecTrustEvaluate (IntPtr secTrustRef, out SecTrustResult secTrustResultTime); [DllImport (CoreFoundationLibrary, CharSet=CharSet.Unicode)] - extern static IntPtr CFStringCreateWithCharacters (IntPtr allocator, string str, int count); + extern static IntPtr CFStringCreateWithCharacters (IntPtr allocator, string str, /* CFIndex */ IntPtr count); [DllImport (CoreFoundationLibrary)] - unsafe extern static IntPtr CFDataCreate (IntPtr allocator, byte *bytes, IntPtr length); + unsafe extern static IntPtr CFDataCreate (IntPtr allocator, byte *bytes, /* CFIndex */ IntPtr length); [DllImport (CoreFoundationLibrary)] - unsafe extern static void CFRelease (IntPtr handle); + extern static void CFRelease (IntPtr handle); [DllImport (CoreFoundationLibrary)] - extern static IntPtr CFArrayCreate (IntPtr allocator, IntPtr values, IntPtr numValues, IntPtr callbacks); - + extern static IntPtr CFArrayCreate (IntPtr allocator, IntPtr values, /* CFIndex */ IntPtr numValues, IntPtr callbacks); + + // uint32_t public enum SecTrustResult { Invalid, Proceed, @@ -125,7 +126,7 @@ namespace System.Security.Cryptography.X509Certificates { return SecTrustResult.Deny; } certArray = FromIntPtrs (secCerts); - host = CFStringCreateWithCharacters (IntPtr.Zero, hostName, hostName.Length); + host = CFStringCreateWithCharacters (IntPtr.Zero, hostName, (IntPtr) hostName.Length); sslsecpolicy = SecPolicyCreateSSL (true, host); int code = SecTrustCreateWithCertificates (certArray, sslsecpolicy, out sectrust); diff --git a/mcs/class/SystemWebTestShim/SystemWebTestShim-net_4_5.csproj b/mcs/class/SystemWebTestShim/SystemWebTestShim-net_4_5.csproj index dad8c60651c..4757d762f80 100644 --- a/mcs/class/SystemWebTestShim/SystemWebTestShim-net_4_5.csproj +++ b/mcs/class/SystemWebTestShim/SystemWebTestShim-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -76,15 +77,15 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {B489C3DE-3ED3-4EDC-B42B-82B38E101857} - System.Web\System.Web-net_4_5 + System.Web-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 diff --git a/mcs/class/WebMatrix.Data/WebMatrix.Data-net_4_5.csproj b/mcs/class/WebMatrix.Data/WebMatrix.Data-net_4_5.csproj index 8c652ad6245..211e9cd6824 100644 --- a/mcs/class/WebMatrix.Data/WebMatrix.Data-net_4_5.csproj +++ b/mcs/class/WebMatrix.Data/WebMatrix.Data-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -75,23 +76,23 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {9A33954F-57A8-4D75-B1D8-0F81808A0DD4} - System.Data\System.Data-net_4_5 + System.Data-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 diff --git a/mcs/class/WindowsBase/WindowsBase-net_4_5.csproj b/mcs/class/WindowsBase/WindowsBase-net_4_5.csproj index fb0244d6eb9..59f1f11e325 100644 --- a/mcs/class/WindowsBase/WindowsBase-net_4_5.csproj +++ b/mcs/class/WindowsBase/WindowsBase-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -268,19 +269,19 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {F574F9BD-1838-4C13-8722-7D6D33DE1781} - System.Xaml\System.Xaml-net_4_5 + System.Xaml-net_4_5 diff --git a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentDictionary.cs b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentDictionary.cs index e5a26ce28d3..8098cdbc582 100644 --- a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentDictionary.cs +++ b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentDictionary.cs @@ -262,7 +262,11 @@ namespace System.Collections.Concurrent bool ICollection>.Contains (KeyValuePair pair) { - return ContainsKey (pair.Key); + TValue value; + if (!TryGetValue (pair.Key, out value)) + return false; + + return EqualityComparer.Default.Equals (value, pair.Value); } public KeyValuePair[] ToArray () diff --git a/mcs/class/corlib/System.IO/FileInfo.cs b/mcs/class/corlib/System.IO/FileInfo.cs index 0911f8152c4..cad54a4d553 100644 --- a/mcs/class/corlib/System.IO/FileInfo.cs +++ b/mcs/class/corlib/System.IO/FileInfo.cs @@ -37,7 +37,7 @@ using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Security; -#if !NET_2_1 +#if !MOBILE using System.Security.AccessControl; #endif @@ -93,7 +93,6 @@ namespace System.IO { } } -#if !NET_2_1 public bool IsReadOnly { get { if (!Exists) @@ -138,7 +137,6 @@ namespace System.IO { // handling this exception to work properly. throw new NotSupportedException (Locale.GetText ("File encryption isn't supported on any file system.")); } -#endif public long Length { get { @@ -265,15 +263,10 @@ namespace System.IO { public override string ToString () { -#if NET_2_1 - // for Moonlight we *never* return paths, since ToString is not [SecurityCritical] we simply return the Name - return Name; -#else return OriginalPath; -#endif } -#if !NET_2_1 +#if !MOBILE public FileSecurity GetAccessControl () { return File.GetAccessControl (FullPath); diff --git a/mcs/class/corlib/System.Security.Claims/ClaimsIdentity.cs b/mcs/class/corlib/System.Security.Claims/ClaimsIdentity.cs index 76dc9da4e4c..852e4f40085 100644 --- a/mcs/class/corlib/System.Security.Claims/ClaimsIdentity.cs +++ b/mcs/class/corlib/System.Security.Claims/ClaimsIdentity.cs @@ -43,6 +43,7 @@ namespace System.Security.Claims { List claims; ClaimsIdentity actor; + string auth_type; public ClaimsIdentity () : this (claims: null, authenticationType: null, nameType: null, roleType: null) @@ -69,12 +70,12 @@ namespace System.Security.Claims { { claims = claims == null ? new List (): new List (claims); - AuthenticationType = authenticationType; - // Special case: if empty, set to null. if (authenticationType == "") - AuthenticationType = null; - + auth_type = null; + else + auth_type = authenticationType; + NameClaimType = nameType == null ? DefaultNameClaimType : nameType; RoleClaimType = roleType == null ? DefaultRoleClaimType : roleType; } @@ -101,7 +102,7 @@ namespace System.Security.Claims { Label = ci.Label; NameClaimType = ci.NameClaimType; RoleClaimType = ci.RoleClaimType; - AuthenticationType = ci.AuthenticationType; + auth_type = ci.AuthenticationType; } } @@ -130,7 +131,11 @@ namespace System.Security.Claims { } } - public virtual string AuthenticationType { get; private set; } + public virtual string AuthenticationType { + get { + return auth_type; + } + } public object BootstrapContext { get; set; } public string Label { get; set; } public virtual string Name { diff --git a/mcs/class/corlib/System/Console.iOS.cs b/mcs/class/corlib/System/Console.iOS.cs index 6a5f7147128..d14271c623a 100644 --- a/mcs/class/corlib/System/Console.iOS.cs +++ b/mcs/class/corlib/System/Console.iOS.cs @@ -4,7 +4,7 @@ // Authors: // Sebastien Pouliot // -// Copyright 2012-2013 Xamarin Inc. All rights reserved. +// Copyright 2012-2014 Xamarin Inc. All rights reserved. // #if FULL_AOT_RUNTIME @@ -23,7 +23,7 @@ namespace System { extern static void monotouch_log (string s); [DllImport ("/usr/lib/libSystem.dylib")] - extern static int write (int fd, byte [] buffer, int n); + extern static /* ssize_t */ IntPtr write (int fd, byte [] buffer, /* size_t */ IntPtr n); StringBuilder sb; @@ -39,7 +39,8 @@ namespace System { static void direct_write_to_stdout (string s) { byte [] b = Encoding.Default.GetBytes (s); - while (write (1, b, b.Length) == -1 && Marshal.GetLastWin32Error () == /* EINTR*/ 4) + var len = (IntPtr) b.Length; + while ((int) write (1, b, len) == -1 && Marshal.GetLastWin32Error () == /* EINTR*/ 4) ; } diff --git a/mcs/class/corlib/System/Environment.cs b/mcs/class/corlib/System/Environment.cs index 13d63ccc129..12260621239 100644 --- a/mcs/class/corlib/System/Environment.cs +++ b/mcs/class/corlib/System/Environment.cs @@ -715,7 +715,7 @@ namespace System { return GetLogicalDrivesInternal (); } -#if !NET_2_1 +#if !MOBILE [MethodImplAttribute (MethodImplOptions.InternalCall)] private static extern void internalBroadcastSettingChange (); @@ -826,10 +826,24 @@ namespace System { throw new ArgumentException ("target"); } } +#else + public static void SetEnvironmentVariable (string variable, string value) + { + if (variable == null) + throw new ArgumentNullException ("variable"); + if (variable == String.Empty) + throw new ArgumentException ("String cannot be of zero length.", "variable"); + if (variable.IndexOf ('=') != -1) + throw new ArgumentException ("Environment variable name cannot contain an equal character.", "variable"); + if (variable[0] == '\0') + throw new ArgumentException ("The first char in the string is the null character.", "variable"); + InternalSetEnvironmentVariable (variable, value); + } +#endif [MethodImplAttribute (MethodImplOptions.InternalCall)] internal static extern void InternalSetEnvironmentVariable (string variable, string value); -#endif + [SecurityPermission (SecurityAction.LinkDemand, UnmanagedCode=true)] public static void FailFast (string message) { diff --git a/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentDictionaryTests.cs b/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentDictionaryTests.cs index 698a25588f6..e38c9045900 100644 --- a/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentDictionaryTests.cs +++ b/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentDictionaryTests.cs @@ -353,6 +353,19 @@ namespace MonoTests.System.Collections.Concurrent } catch (ArgumentNullException ex) { } } + + [Test] + public void ContainsKeyPairTest () + { + var validKeyPair = new KeyValuePair ("key", "validValue"); + var wrongKeyPair = new KeyValuePair ("key", "wrongValue"); + + IDictionary dict = new ConcurrentDictionary (); + dict.Add (validKeyPair); + + Assert.IsTrue (dict.Contains (validKeyPair)); + Assert.IsFalse (dict.Contains (wrongKeyPair)); + } } } #endif diff --git a/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs b/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs index 1f6be893342..9aa0d46510b 100644 --- a/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs +++ b/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs @@ -1928,6 +1928,7 @@ namespace MonoTests.System.Threading.Tasks } [Test] + [Category("MobileNotWorking")] public void TaskContinuationChainLeak() { // Start cranking out tasks, starting each new task upon completion of and from inside the prior task. diff --git a/mcs/class/corlib/corlib-net_4_5.csproj b/mcs/class/corlib/corlib-net_4_5.csproj index 20fc57d86ca..43e03fbfa33 100644 --- a/mcs/class/corlib/corlib-net_4_5.csproj +++ b/mcs/class/corlib/corlib-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full diff --git a/mcs/class/monodoc/monodoc-net_4_5.csproj b/mcs/class/monodoc/monodoc-net_4_5.csproj index 7b709f70f53..d412797a8ff 100644 --- a/mcs/class/monodoc/monodoc-net_4_5.csproj +++ b/mcs/class/monodoc/monodoc-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -542,31 +543,31 @@ {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 {0B587DBA-BA92-4B92-821A-AA200C612A7E} - ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5 + ICSharpCode.SharpZipLib-net_4_5 {FFAC0B73-D997-493B-9C62-27656CD858BB} - System\System-net_4_5 + System-net_4_5 {D92530F4-3F2B-4351-BD21-9D6BEE6D2A4E} - System.Core\System.Core-net_4_5 + System.Core-net_4_5 {2951DEC2-4393-4A78-83F9-42EB39CB708F} - System.XML\System.Xml-net_4_5 + System.Xml-net_4_5 {8328796E-8A15-4972-8F1E-2F15E7D57C42} - System.Xml.Linq\System.Xml.Linq-net_4_5 + System.Xml.Linq-net_4_5 {D52A2CEA-245E-4877-950E-3EAC5F541B8E} - System.Configuration\System.Configuration-net_4_5 + System.Configuration-net_4_5 diff --git a/mcs/errors/cs0545-2.cs b/mcs/errors/cs0545-2.cs new file mode 100644 index 00000000000..61d388762f9 --- /dev/null +++ b/mcs/errors/cs0545-2.cs @@ -0,0 +1,16 @@ +// CS0545: `B.Prop': cannot override because `A.Prop' does not have accessible get accessor +// Line: 13 + +public class A +{ + public virtual string Prop { + set; private get; + } +} + +public class B : A +{ + sealed override public string Prop { + set { } + } +} \ No newline at end of file diff --git a/mcs/errors/cs0546-2.cs b/mcs/errors/cs0546-2.cs new file mode 100644 index 00000000000..4cec44865f9 --- /dev/null +++ b/mcs/errors/cs0546-2.cs @@ -0,0 +1,16 @@ +// CS0546: `B.Prop': cannot override because `A.Prop' does not have accessible set accessor +// Line: 13 + +public class A +{ + public virtual string Prop { + get; private set; + } +} + +public class B : A +{ + sealed override public string Prop { + get { return ""; } + } +} \ No newline at end of file diff --git a/mcs/errors/cs1501-16.cs b/mcs/errors/cs1501-16.cs new file mode 100644 index 00000000000..4dcbe3efa59 --- /dev/null +++ b/mcs/errors/cs1501-16.cs @@ -0,0 +1,14 @@ +// CS1501: No overload for method `Block' takes `2' arguments +// Line: 12 + +class X +{ + public static void Block (object type, object variables, params object[] expressions) + { + } + + public static void Main () + { + Block (variables: null, expressions: null); + } +} \ No newline at end of file diff --git a/mcs/errors/cs1593-5.cs b/mcs/errors/cs1593-5.cs new file mode 100644 index 00000000000..6055feea811 --- /dev/null +++ b/mcs/errors/cs1593-5.cs @@ -0,0 +1,27 @@ +// CS1593: Delegate `System.Action' does not take `0' arguments +// Line: 17 + +using System; +using System.Threading.Tasks; +using System.Collections.Generic; + +namespace CrashRepro.Core +{ + public class X + { + async void Foo () + { + var pushes = await Run ().ContinueWith (l => + { + for (int i = 0; i < 1; ++i) + Run ().ContinueWith(() => { }); + }); + } + + Task Run () + { + return null; + } + } +} + diff --git a/mcs/errors/cs1617.cs b/mcs/errors/cs1617.cs index 6feb97925c7..88f9c12deca 100644 --- a/mcs/errors/cs1617.cs +++ b/mcs/errors/cs1617.cs @@ -1,3 +1,3 @@ -// CS1617: Invalid -langversion option `ISO'. It must be `ISO-1', `ISO-2', `3', `4', `5', `Default' or `Future' +// CS1617: Invalid -langversion option `ISO'. It must be `ISO-1', `ISO-2', Default or value in range 1 to 6 // Line: 0 // Compiler options: -langversion:ISO diff --git a/mcs/errors/cs1644-35.cs b/mcs/errors/cs1644-35.cs new file mode 100644 index 00000000000..c97b37d9dbc --- /dev/null +++ b/mcs/errors/cs1644-35.cs @@ -0,0 +1,17 @@ +// CS1644: Feature `exception filter' cannot be used because it is not part of the C# 5.0 language specification +// Line: 14 +// Compiler options: -langversion:5 + +using System; + +class X +{ + public static void Main () + { + int x = 4; + try { + throw null; + } catch (Exception) if (x > 0) { + } + } +} diff --git a/mcs/mcs/assembly.cs b/mcs/mcs/assembly.cs index 6c99245480b..cd77ac26226 100644 --- a/mcs/mcs/assembly.cs +++ b/mcs/mcs/assembly.cs @@ -357,6 +357,11 @@ namespace Mono.CSharp vi_product_version, a.Name); return; } + + // File version info decoding from blob is not supported + var cab = new CustomAttributeBuilder ((ConstructorInfo) ctor.GetMetaInfo (), new object[] { vi_product_version }); + Builder.SetCustomAttribute (cab); + return; } else if (a.Type == pa.AssemblyProduct) { vi_product = a.GetString (); } else if (a.Type == pa.AssemblyCompany) { diff --git a/mcs/mcs/codegen.cs b/mcs/mcs/codegen.cs index 84394c99edd..ff77e33340a 100644 --- a/mcs/mcs/codegen.cs +++ b/mcs/mcs/codegen.cs @@ -1036,7 +1036,7 @@ namespace Mono.CSharp } } - if (call_op == OpCodes.Callvirt && (InstanceExpression.Type.IsGenericParameter || InstanceExpression.Type.IsStruct)) { + if (call_op == OpCodes.Callvirt && (InstanceExpression.Type.IsGenericParameter || InstanceExpression.Type.IsStructOrEnum)) { ec.Emit (OpCodes.Constrained, InstanceExpression.Type); } @@ -1076,7 +1076,7 @@ namespace Mono.CSharp // // Push the instance expression // - if ((instance_type.IsStruct && (callOpcode == OpCodes.Callvirt || (callOpcode == OpCodes.Call && declaringType.IsStruct))) || + if ((instance_type.IsStructOrEnum && (callOpcode == OpCodes.Callvirt || (callOpcode == OpCodes.Call && declaringType.IsStruct))) || instance_type.IsGenericParameter || declaringType.IsNullableType) { // // If the expression implements IMemoryLocation, then @@ -1098,7 +1098,7 @@ namespace Mono.CSharp return ReferenceContainer.MakeType (ec.Module, instance_type); } - if (instance_type.IsEnum || instance_type.IsStruct) { + if (instance_type.IsStructOrEnum) { instance.Emit (ec); ec.Emit (OpCodes.Box, instance_type); return ec.BuiltinTypes.Object; diff --git a/mcs/mcs/cs-parser.jay b/mcs/mcs/cs-parser.jay index 7736532e07c..f93324f3060 100644 --- a/mcs/mcs/cs-parser.jay +++ b/mcs/mcs/cs-parser.jay @@ -6892,7 +6892,7 @@ doc_cref } | OPERATOR overloadable_operator opt_doc_method_sig { - var p = (List)$3 ?? new List (1); + var p = (List)$3; module.DocumentationBuilder.ParsedParameters = p; module.DocumentationBuilder.ParsedOperator = (Operator.OpType) $2; $$ = null; diff --git a/mcs/mcs/ecore.cs b/mcs/mcs/ecore.cs index f0386177bd4..86c7931f13a 100644 --- a/mcs/mcs/ecore.cs +++ b/mcs/mcs/ecore.cs @@ -4485,11 +4485,11 @@ namespace Mono.CSharp { // // LAMESPEC: // - // void Foo (params int[]) is better than void Foo (int i = 0) for Foo () + // void Foo (int i = 0) is better than void Foo (params int[]) for Foo () // void Foo (string[] s, string value = null) is better than Foo (string s, params string[]) for Foo (null) or Foo () // if (cand_param.HasDefaultValue != best_param.HasDefaultValue) - return !candidate_params; + return cand_param.HasDefaultValue; if (cand_param.HasDefaultValue) { ++j; @@ -4692,7 +4692,10 @@ namespace Mono.CSharp { ++arg_count; temp = null; } else { - temp = arguments[index]; + if (index == arg_count) + return (i + 1) * 3; + + temp = arguments [index]; // The slot has been taken by positional argument if (temp != null && !(temp is NamedArgument)) @@ -5442,8 +5445,7 @@ namespace Mono.CSharp { // For candidates which match on parameters count report more details about incorrect arguments // if (pm != null) { - int unexpanded_count = ((IParametersMember) best_candidate).Parameters.HasParams ? pm.Parameters.Count - 1 : pm.Parameters.Count; - if (pm.Parameters.Count == arg_count || params_expanded || unexpanded_count == arg_count) { + if (pm.Parameters.Count == arg_count || params_expanded || HasUnfilledParams (best_candidate, pm, args)) { // Reject any inaccessible member if (!best_candidate.IsAccessible (rc) || !best_candidate.DeclaringType.IsAccessible (rc)) { rc.Report.SymbolRelatedToPreviousError (best_candidate); @@ -5497,6 +5499,39 @@ namespace Mono.CSharp { } } + static bool HasUnfilledParams (MemberSpec best_candidate, IParametersMember pm, Arguments args) + { + var p = ((IParametersMember)best_candidate).Parameters; + if (!p.HasParams) + return false; + + string name = null; + for (int i = p.Count - 1; i != 0; --i) { + var fp = p.FixedParameters [i]; + if ((fp.ModFlags & Parameter.Modifier.PARAMS) == 0) + continue; + + name = fp.Name; + break; + } + + foreach (var arg in args) { + var na = arg as NamedArgument; + if (na == null) + continue; + + if (na.Name == name) { + name = null; + break; + } + } + + if (name == null) + return false; + + return args.Count + 1 == pm.Parameters.Count; + } + bool VerifyArguments (ResolveContext ec, ref Arguments args, MemberSpec member, IParametersMember pm, bool chose_params_expanded) { var pd = pm.Parameters; @@ -6259,7 +6294,6 @@ namespace Mono.CSharp { var temp = ec.GetTemporaryLocal (type); ec.Emit (OpCodes.Stloc, temp); ec.Emit (OpCodes.Ldloca, temp); - ec.FreeTemporaryLocal (temp, type); return; } diff --git a/mcs/mcs/eval.cs b/mcs/mcs/eval.cs index 766bb05696b..5bda9970625 100644 --- a/mcs/mcs/eval.cs +++ b/mcs/mcs/eval.cs @@ -1233,10 +1233,13 @@ namespace Mono.CSharp if (undo_actions == null) undo_actions = new List (); - var existing = current_container.Containers.FirstOrDefault (l => l.Basename == tc.Basename); - if (existing != null) { - current_container.RemoveContainer (existing); - undo_actions.Add (() => current_container.AddTypeContainer (existing)); + if (current_container.Containers != null) + { + var existing = current_container.Containers.FirstOrDefault (l => l.Basename == tc.Basename); + if (existing != null) { + current_container.RemoveContainer (existing); + undo_actions.Add (() => current_container.AddTypeContainer (existing)); + } } undo_actions.Add (() => current_container.RemoveContainer (tc)); diff --git a/mcs/mcs/expression.cs b/mcs/mcs/expression.cs index 28c2a117e15..01bbbafcf92 100644 --- a/mcs/mcs/expression.cs +++ b/mcs/mcs/expression.cs @@ -2610,8 +2610,14 @@ namespace Mono.CSharp public override void FlowAnalysis (FlowAnalysisContext fc) { if ((oper & Operator.LogicalMask) == 0) { + var fc_ontrue = fc.DefiniteAssignmentOnTrue; + var fc_onfalse = fc.DefiniteAssignmentOnFalse; + fc.DefiniteAssignmentOnTrue = fc.DefiniteAssignmentOnFalse = fc.DefiniteAssignment; left.FlowAnalysis (fc); + fc.DefiniteAssignmentOnTrue = fc.DefiniteAssignmentOnFalse = fc.DefiniteAssignment; right.FlowAnalysis (fc); + fc.DefiniteAssignmentOnTrue = fc_ontrue; + fc.DefiniteAssignmentOnFalse = fc_onfalse; return; } @@ -2962,8 +2968,8 @@ namespace Mono.CSharp } } - left = ConvertEnumOperandToUnderlyingType (rc, left); - right = ConvertEnumOperandToUnderlyingType (rc, right); + left = ConvertEnumOperandToUnderlyingType (rc, left, r.IsNullableType); + right = ConvertEnumOperandToUnderlyingType (rc, right, l.IsNullableType); return expr; } } else if ((oper == Operator.Addition || oper == Operator.Subtraction)) { @@ -2978,8 +2984,8 @@ namespace Mono.CSharp // which is not ambiguous with predefined enum operators // if (expr != null) { - left = ConvertEnumOperandToUnderlyingType (rc, left); - right = ConvertEnumOperandToUnderlyingType (rc, right); + left = ConvertEnumOperandToUnderlyingType (rc, left, false); + right = ConvertEnumOperandToUnderlyingType (rc, right, false); return expr; } @@ -3782,7 +3788,7 @@ namespace Mono.CSharp return null; } - static Expression ConvertEnumOperandToUnderlyingType (ResolveContext rc, Expression expr) + static Expression ConvertEnumOperandToUnderlyingType (ResolveContext rc, Expression expr, bool liftType) { TypeSpec underlying_type; if (expr.Type.IsNullableType) { @@ -3806,7 +3812,7 @@ namespace Mono.CSharp break; } - if (expr.Type.IsNullableType) + if (expr.Type.IsNullableType || liftType) underlying_type = rc.Module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (rc.Module, new[] { underlying_type }); if (expr.Type == underlying_type) diff --git a/mcs/mcs/field.cs b/mcs/mcs/field.cs index 4b0b2168599..278f71e0f18 100644 --- a/mcs/mcs/field.cs +++ b/mcs/mcs/field.cs @@ -223,7 +223,9 @@ namespace Mono.CSharp if (MemberType.IsStatic) Error_VariableOfStaticClass (Location, GetSignatureForError (), MemberType, Report); - CheckBase (); + if (!IsCompilerGenerated) + CheckBase (); + IsTypePermitted (); } diff --git a/mcs/mcs/mcs-net_4_5.csproj b/mcs/mcs/mcs-net_4_5.csproj index a440d0ca66f..daa76287565 100644 --- a/mcs/mcs/mcs-net_4_5.csproj +++ b/mcs/mcs/mcs-net_4_5.csproj @@ -19,6 +19,7 @@ v4.5 512 + true full @@ -136,7 +137,7 @@ $(ProjectDir)\..\jay\jay.exe -ct < $(ProjectDir)\..\jay\skeleton.cs $(Project {33BF0182-AC5C-464C-995B-C9CFE74E1A95} - corlib\corlib-net_4_5 + corlib-net_4_5 diff --git a/mcs/mcs/property.cs b/mcs/mcs/property.cs index 339d42d8f67..e8b3879f05a 100644 --- a/mcs/mcs/property.cs +++ b/mcs/mcs/property.cs @@ -512,7 +512,16 @@ namespace Mono.CSharp // Check base property accessors conflict // var base_prop = (PropertySpec) base_member; - if (Get != null) { + if (Get == null) { + if ((ModFlags & Modifiers.SEALED) != 0 && base_prop.HasGet && !base_prop.Get.IsAccessible (this)) { + // TODO: Should be different error code but csc uses for some reason same + Report.SymbolRelatedToPreviousError (base_prop); + Report.Error (545, Location, + "`{0}': cannot override because `{1}' does not have accessible get accessor", + GetSignatureForError (), base_prop.GetSignatureForError ()); + ok = false; + } + } else { if (!base_prop.HasGet) { if (ok) { Report.SymbolRelatedToPreviousError (base_prop); @@ -529,7 +538,16 @@ namespace Mono.CSharp } } - if (Set != null) { + if (Set == null) { + if ((ModFlags & Modifiers.SEALED) != 0 && base_prop.HasSet && !base_prop.Set.IsAccessible (this)) { + // TODO: Should be different error code but csc uses for some reason same + Report.SymbolRelatedToPreviousError (base_prop); + Report.Error (546, Location, + "`{0}': cannot override because `{1}' does not have accessible set accessor", + GetSignatureForError (), base_prop.GetSignatureForError ()); + ok = false; + } + } else { if (!base_prop.HasSet) { if (ok) { Report.SymbolRelatedToPreviousError (base_prop); diff --git a/mcs/mcs/settings.cs b/mcs/mcs/settings.cs index 5e56f614f23..3c7f13bdb13 100644 --- a/mcs/mcs/settings.cs +++ b/mcs/mcs/settings.cs @@ -28,6 +28,7 @@ namespace Mono.CSharp { V_3 = 3, V_4 = 4, V_5 = 5, + V_6 = 6, Future = 100, Default = LanguageVersion.Future, @@ -1136,11 +1137,13 @@ namespace Mono.CSharp { switch (value.ToLowerInvariant ()) { case "iso-1": + case "1": settings.Version = LanguageVersion.ISO_1; return ParseResult.Success; case "default": settings.Version = LanguageVersion.Default; return ParseResult.Success; + case "2": case "iso-2": settings.Version = LanguageVersion.ISO_2; return ParseResult.Success; @@ -1153,12 +1156,15 @@ namespace Mono.CSharp { case "5": settings.Version = LanguageVersion.V_5; return ParseResult.Success; + case "6": + settings.Version = LanguageVersion.V_6; + return ParseResult.Success; case "future": settings.Version = LanguageVersion.Future; return ParseResult.Success; } - report.Error (1617, "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', `3', `4', `5', `Default' or `Future'", value); + report.Error (1617, "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', Default or value in range 1 to 6", value); return ParseResult.Error; case "/codepage": diff --git a/mcs/mcs/statement.cs b/mcs/mcs/statement.cs index cbce03f2bc5..cfcf3341971 100644 --- a/mcs/mcs/statement.cs +++ b/mcs/mcs/statement.cs @@ -688,11 +688,7 @@ namespace Mono.CSharp { infinite = true; } - base.Resolve (bc); - - Iterator.Resolve (bc); - - return true; + return base.Resolve (bc) && Iterator.Resolve (bc); } protected override bool DoFlowAnalysis (FlowAnalysisContext fc) @@ -859,11 +855,11 @@ namespace Mono.CSharp { var prev_loop = bc.EnclosingLoop; var prev_los = bc.EnclosingLoopOrSwitch; bc.EnclosingLoopOrSwitch = bc.EnclosingLoop = this; - Statement.Resolve (bc); + var ok = Statement.Resolve (bc); bc.EnclosingLoopOrSwitch = prev_los; bc.EnclosingLoop = prev_loop; - return true; + return ok; } // @@ -3726,16 +3722,14 @@ namespace Mono.CSharp { var label = value as LabeledStatement; Block b = block; if (label != null) { - do { - if (label.Block == b) - return label; - b = b.Parent; - } while (b != null); + if (IsLabelVisible (label, b)) + return label; + } else { List list = (List) value; for (int i = 0; i < list.Count; ++i) { label = list[i]; - if (label.Block == b) + if (IsLabelVisible (label, b)) return label; } } @@ -3743,6 +3737,17 @@ namespace Mono.CSharp { return null; } + static bool IsLabelVisible (LabeledStatement label, Block b) + { + do { + if (label.Block == b) + return true; + b = b.Parent; + } while (b != null); + + return false; + } + public ParameterInfo GetParameterInfo (Parameter p) { for (int i = 0; i < parameters.Count; ++i) { @@ -7024,12 +7029,12 @@ namespace Mono.CSharp { } } - base.Resolve (ec); + var ok = base.Resolve (ec); if (vr != null) vr.IsLockedByStatement = vr_locked; - return true; + return ok; } protected override void CloneTo (CloneContext clonectx, Statement t) @@ -7590,8 +7595,7 @@ namespace Mono.CSharp { Statement = new CollectionForeach (this, variable, expr); } - base.Resolve (ec); - return true; + return base.Resolve (ec); } protected override void DoEmit (EmitContext ec) diff --git a/mcs/mcs/typespec.cs b/mcs/mcs/typespec.cs index 73d82b086f9..339addfd15e 100644 --- a/mcs/mcs/typespec.cs +++ b/mcs/mcs/typespec.cs @@ -295,6 +295,12 @@ namespace Mono.CSharp } } + public bool IsStructOrEnum { + get { + return (Kind & (MemberKind.Struct | MemberKind.Enum)) != 0; + } + } + public bool IsTypeBuilder { get { #if STATIC diff --git a/mcs/tests/gtest-etree-01.cs b/mcs/tests/gtest-etree-01.cs index 248d1452d2b..e538021cd0a 100644 --- a/mcs/tests/gtest-etree-01.cs +++ b/mcs/tests/gtest-etree-01.cs @@ -254,6 +254,12 @@ enum MyEnumUlong : ulong Value_1 = 1 } +enum EnumInt +{ + A, + B, + C +} class NewTest { @@ -1205,6 +1211,14 @@ class Tester Assert (true, e.Compile ().Invoke (4, 4)); } + void EqualTest_16 () + { + Expression> e = (x, y) => x == y; + AssertNodeType (e, ExpressionType.Convert); + Assert (false, e.Compile () (null, 0)); + Assert (true, e.Compile () (EnumInt.B, EnumInt.B)); + } + void EqualTestDelegate () { Expression> e1 = (a, b) => a == b; diff --git a/mcs/tests/gtest-optional-31.cs b/mcs/tests/gtest-optional-31.cs new file mode 100644 index 00000000000..9e7158ac248 --- /dev/null +++ b/mcs/tests/gtest-optional-31.cs @@ -0,0 +1,21 @@ +using System; + +class Test +{ + public static int M (bool b = false) + { + Console.WriteLine ("PASS"); + return 0; + } + + public static int M (params string[] args) + { + Console.WriteLine ("FAIL"); + return 1; + } + + public static int Main () + { + return M (); + } +} diff --git a/mcs/tests/test-833.cs b/mcs/tests/test-833.cs index 3b2fa888a96..e0e263d4359 100644 --- a/mcs/tests/test-833.cs +++ b/mcs/tests/test-833.cs @@ -4,7 +4,7 @@ class MainClass { public struct DC { - private readonly Guid m_Id; + public readonly Guid m_Id; public DC (Guid Id) { @@ -27,6 +27,10 @@ class MainClass if (dc.Id.Equals (default (Guid))) return 1; + if (dc.m_Id.Equals (default (Guid))) + return 2; + +Console.WriteLine ("ok"); return 0; } } diff --git a/mcs/tests/test-859.cs b/mcs/tests/test-859.cs new file mode 100644 index 00000000000..b86626332d2 --- /dev/null +++ b/mcs/tests/test-859.cs @@ -0,0 +1,20 @@ +class X +{ + public static void Main () + { + int i = 0; + if (i == 1) { + a: + switch (i) { + default: + goto a; + } + } else if (i == 2) { + a: + switch (i) { + default: + goto a; + } + } + } +} diff --git a/mcs/tests/test-892.cs b/mcs/tests/test-892.cs new file mode 100644 index 00000000000..b6492798125 --- /dev/null +++ b/mcs/tests/test-892.cs @@ -0,0 +1,19 @@ +using System.Reflection; +using System.Diagnostics; +using System; + +[assembly: AssemblyVersion ("2011.04.0.0")] +[assembly: AssemblyFileVersion ("2011.02.0.0")] + +class X +{ + public static int Main () + { + Assembly executingAssembly = Assembly.GetAssembly (typeof(X)); + FileVersionInfo fvi = FileVersionInfo.GetVersionInfo (executingAssembly.Location); + if (fvi.FileVersion != "2011.02.0.0") + return 1; + + return 0; + } +} \ No newline at end of file diff --git a/mcs/tests/test-893.cs b/mcs/tests/test-893.cs new file mode 100644 index 00000000000..97cfc0a7cca --- /dev/null +++ b/mcs/tests/test-893.cs @@ -0,0 +1,15 @@ +public class A +{ + public static bool TryAssign (out int x) + { + x = 0; + return true; + } + + public static void Main () + { + int x, y; + if ((!TryAssign (out x) || x == 0) & (!TryAssign (out y) || y == 0)) { + } + } +} diff --git a/mcs/tests/test-xml-063-ref.xml b/mcs/tests/test-xml-063-ref.xml index 5b4e0e1edcd..2db20c17d24 100644 --- a/mcs/tests/test-xml-063-ref.xml +++ b/mcs/tests/test-xml-063-ref.xml @@ -1,37 +1,40 @@ - - - - test-xml-063 - - - - Test A - - - - - - - - - - - Start - - - Comment - - - Comment 2 - - - Comment 3 - - - Comment 4 - - - Comment 5 - - - + + + + test-xml-063 + + + + Test A + + + + + + + + + + + + Start + + Comment + + Comment 2 + + Comment 3 + + Comment 4 + + Comment 5 + + Comment 6 + + Comment 7 + + Comment 61 + + Comment 72 + + diff --git a/mcs/tests/test-xml-063.cs b/mcs/tests/test-xml-063.cs index 7a63f013ad7..f9964180120 100644 --- a/mcs/tests/test-xml-063.cs +++ b/mcs/tests/test-xml-063.cs @@ -10,6 +10,8 @@ public class A /// /// /// +/// +/// /// public class Test { @@ -17,37 +19,61 @@ public class Test Test () { } - + /// Comment - public static explicit operator A(Test test) + public static explicit operator A (Test test) { return new A (); } - + /// Comment 2 - public static explicit operator long(Test test) + public static explicit operator long (Test test) { return 2; } - + /// Comment 3 - public static implicit operator Test(int test) + public static implicit operator Test (int test) { return new Test (); } - + /// Comment 4 - public static implicit operator Test(bool test) + public static implicit operator Test (bool test) { return new Test (); } - + /// Comment 5 public static bool operator !(Test test) { return false; } - + + /// Comment 6 + public static bool operator == (Test a, int b) + { + return true; + } + + /// Comment 7 + public static bool operator != (Test a, int b) + { + return false; + } + + /// Comment 61 + public static bool operator == (Test a, long b) + { + return true; + } + + /// Comment 72 + public static bool operator != (Test a, long b) + { + return false; + } + static void Main () { } diff --git a/mcs/tests/ver-il-net_4_5.xml b/mcs/tests/ver-il-net_4_5.xml index 19d9696f82c..e6ca47f73d7 100644 --- a/mcs/tests/ver-il-net_4_5.xml +++ b/mcs/tests/ver-il-net_4_5.xml @@ -14947,7 +14947,7 @@ - 38 + 42 7 @@ -15271,7 +15271,7 @@ 28 - 39 + 41 7 @@ -21198,6 +21198,11 @@ 0 + + + 185 + + @@ -21644,7 +21649,7 @@ 33 - 84 + 86 7 @@ -29332,6 +29337,22 @@ + + + + 20 + + + 20 + + + 15 + + + 7 + + + @@ -35759,7 +35780,7 @@ - 51 + 55 7 @@ -38218,7 +38239,7 @@ - 90 + 99 7 @@ -39623,7 +39644,7 @@ - 72 + 76 7 @@ -39875,7 +39896,7 @@ - 34 + 38 7 @@ -45088,7 +45109,7 @@ - 197 + 204 7 @@ -48654,7 +48675,7 @@ - 93 + 141 7 @@ -49126,6 +49147,16 @@ + + + + 40 + + + 7 + + + @@ -49849,6 +49880,29 @@ + + + + 66 + + + 7 + + + + + + + 13 + + + 48 + + + 7 + + + @@ -59133,7 +59187,7 @@ - 234 + 240 diff --git a/mcs/tools/msbuild/Main.cs b/mcs/tools/msbuild/Main.cs index 3f9965eeb41..2d20ebfc974 100644 --- a/mcs/tools/msbuild/Main.cs +++ b/mcs/tools/msbuild/Main.cs @@ -159,7 +159,7 @@ namespace Mono.XBuild.CommandLine { var projectInstances = new List (); if (string.Equals (Path.GetExtension (projectFile), ".sln", StringComparison.OrdinalIgnoreCase)) { var parser = new SolutionParser (); - var root = ProjectRootElement.Create (); + var root = ProjectRootElement.Create (project_collection); parser.ParseSolution (projectFile, project_collection, root, LogWarning); foreach (var p in project_collection.LoadedProjects) projectInstances.Add (p.CreateProjectInstance ()); diff --git a/mcs/tools/msbuild/Makefile b/mcs/tools/msbuild/Makefile index 069a78eed6b..61339b1a5cc 100644 --- a/mcs/tools/msbuild/Makefile +++ b/mcs/tools/msbuild/Makefile @@ -7,6 +7,8 @@ BUILD_FRAMEWORK = Microsoft.Build.Framework.dll BUILD_NEW_ENGINE = Microsoft.Build.dll INSTALL_FRAMEWORK_VERSION = $(FRAMEWORK_VERSION) +include ../xbuild/xbuild.make + ifeq (3.5, $(FRAMEWORK_VERSION)) NAME_SUFFIX = .v3.5 ASSEMBLY_VERSION = 3.5.0.0 @@ -30,3 +32,13 @@ XBUILD_FRAMEWORKS_DIR=$(mono_libdir)/mono/xbuild-frameworks/.NETFramework/ REDISTLIST_DIR=$(XBUILD_FRAMEWORKS_DIR)/v$(FRAMEWORK_VERSION)/RedistList #include $(XBUILD_DIR)/xbuild_targets.make +install-local: install-extras + +install-extras: install-bin-data + +install-bin-data: + $(INSTALL_DATA) data/msbuild.rsp $(DESTDIR)$(XBUILD_BIN_DIR) + +EXTRA_DISTFILES = \ + data/msbuild.rsp + diff --git a/mcs/tools/msbuild/SolutionParser.cs b/mcs/tools/msbuild/SolutionParser.cs index effba4bb8b6..7420a73f69a 100644 --- a/mcs/tools/msbuild/SolutionParser.cs +++ b/mcs/tools/msbuild/SolutionParser.cs @@ -123,7 +123,11 @@ namespace Mono.XBuild.CommandLine { StreamReader reader = new StreamReader (file); string slnVersion = GetSlnFileVersion (reader); if (slnVersion == "12.00") +#if XBUILD_12 projects.DefaultToolsVersion = "12.0"; +#else + projects.DefaultToolsVersion = "4.0"; +#endif else if (slnVersion == "11.00") projects.DefaultToolsVersion = "4.0"; else if (slnVersion == "10.00") @@ -206,7 +210,7 @@ namespace Mono.XBuild.CommandLine { if (!File.Exists (filename)) { RaiseWarning (0, String.Format ("Project file {0} referenced in the solution file, " + - "not found. Ignoring.", filename)); + " not found. Ignoring.", filename)); continue; } diff --git a/mcs/tools/msbuild/data/msbuild.rsp b/mcs/tools/msbuild/data/msbuild.rsp new file mode 100644 index 00000000000..9b9ce708701 --- /dev/null +++ b/mcs/tools/msbuild/data/msbuild.rsp @@ -0,0 +1,3 @@ +# xbuild command line options specified here will be used +# by xbuild on every build, unless /noautoresponse is passed +# on the command line. diff --git a/mono/io-layer/io.c b/mono/io-layer/io.c index 40c9591a897..9e2fb959697 100755 --- a/mono/io-layer/io.c +++ b/mono/io-layer/io.c @@ -705,7 +705,7 @@ static gboolean file_setendoffile(gpointer handle) } #ifdef FTRUNCATE_DOESNT_EXTEND - /* I haven't bothered to write the configure.in stuff for this + /* I haven't bothered to write the configure.ac stuff for this * because I don't know if any platform needs it. I'm leaving * this code just in case though */ diff --git a/mono/metadata/Makefile.am.in b/mono/metadata/Makefile.am.in index e4867a8a81a..fa622832634 100644 --- a/mono/metadata/Makefile.am.in +++ b/mono/metadata/Makefile.am.in @@ -75,7 +75,7 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CPPFLAGS) $(GLIB_CFLA # mono-config.c uses MONO_CFG_DIR # # This won't result in many more false positives than AC_DEFINEing them -# in configure.in. +# in configure.ac. # assembly.lo mono-config.lo: Makefile diff --git a/mono/metadata/boehm-gc.c b/mono/metadata/boehm-gc.c index 82bc43bace4..a27a004f7c6 100644 --- a/mono/metadata/boehm-gc.c +++ b/mono/metadata/boehm-gc.c @@ -59,6 +59,9 @@ boehm_thread_unregister (MonoThreadInfo *p); static void register_test_toggleref_callback (void); +#define BOEHM_GC_BIT_FINALIZER_AWARE 1 +static MonoGCFinalizerCallbacks fin_callbacks; + static void mono_gc_warning (char *msg, GC_word arg) { @@ -1259,6 +1262,10 @@ BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reser guint mono_gc_get_vtable_bits (MonoClass *class) { + if (fin_callbacks.is_class_finalization_aware) { + if (fin_callbacks.is_class_finalization_aware (class)) + return BOEHM_GC_BIT_FINALIZER_AWARE; + } return 0; } @@ -1338,4 +1345,29 @@ register_test_toggleref_callback (void) mono_gc_toggleref_register_callback (test_toggleref_callback); } +static gboolean +is_finalization_aware (MonoObject *obj) +{ + MonoVTable *vt = obj->vtable; + return (vt->gc_bits & BOEHM_GC_BIT_FINALIZER_AWARE) == BOEHM_GC_BIT_FINALIZER_AWARE; +} + +static void +fin_notifier (MonoObject *obj) +{ + if (is_finalization_aware (obj)) + fin_callbacks.object_queued_for_finalization (obj); +} + +void +mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *callbacks) +{ + if (callbacks->version != MONO_GC_FINALIZER_EXTENSION_VERSION) + g_error ("Invalid finalizer callback version. Expected %d but got %d\n", MONO_GC_FINALIZER_EXTENSION_VERSION, callbacks->version); + + fin_callbacks = *callbacks; + + GC_set_finalizer_notify_proc ((void (*) (GC_PTR))fin_notifier); +} + #endif /* no Boehm GC */ diff --git a/mono/metadata/gc-internal.h b/mono/metadata/gc-internal.h index 01f84352696..be2d0eecfdd 100644 --- a/mono/metadata/gc-internal.h +++ b/mono/metadata/gc-internal.h @@ -356,6 +356,19 @@ struct _MonoReferenceQueue { gboolean should_be_deleted; }; +enum { + MONO_GC_FINALIZER_EXTENSION_VERSION = 1, +}; + +typedef struct { + int version; + gboolean (*is_class_finalization_aware) (MonoClass *class); + void (*object_queued_for_finalization) (MonoObject *object); +} MonoGCFinalizerCallbacks; + +void mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *callbacks); + + #ifdef HOST_WIN32 BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reserved) MONO_INTERNAL; #endif diff --git a/mono/metadata/icall.c b/mono/metadata/icall.c index ee0e5cd8a36..f861ff581f9 100644 --- a/mono/metadata/icall.c +++ b/mono/metadata/icall.c @@ -1265,6 +1265,8 @@ get_caller_no_reflection (MonoMethod *m, gint32 no, gint32 ilo, gboolean managed static MonoReflectionType * type_from_name (const char *str, MonoBoolean ignoreCase) { + MonoMethod *m, *dest; + MonoType *type = NULL; MonoAssembly *assembly = NULL; MonoTypeNameParse info; @@ -1280,32 +1282,38 @@ type_from_name (const char *str, MonoBoolean ignoreCase) return NULL; } - if (info.assembly.name) { - assembly = mono_assembly_load (&info.assembly, NULL, NULL); - } else { - MonoMethod *m = mono_method_get_last_managed (); - MonoMethod *dest = m; - mono_stack_walk_no_il (get_caller_no_reflection, &dest); - if (!dest) - dest = m; + /* + * We must compute the calling assembly as type loading must happen under a metadata context. + * For example. The main assembly is a.exe and Type.GetType is called from dir/b.dll. Without + * the metadata context (basedir currently) set to dir/b.dll we won't be able to load a dir/c.dll. + */ + m = mono_method_get_last_managed (); + dest = m; - /* - * FIXME: mono_method_get_last_managed() sometimes returns NULL, thus - * causing ves_icall_System_Reflection_Assembly_GetCallingAssembly() - * to crash. This only seems to happen in some strange remoting - * scenarios and I was unable to figure out what's happening there. - * Dec 10, 2005 - Martin. - */ + mono_stack_walk_no_il (get_caller_no_reflection, &dest); + if (!dest) + dest = m; - if (dest) { - assembly = dest->klass->image->assembly; - type_resolve = TRUE; - } else { - g_warning (G_STRLOC); - } + /* + * FIXME: mono_method_get_last_managed() sometimes returns NULL, thus + * causing ves_icall_System_Reflection_Assembly_GetCallingAssembly() + * to crash. This only seems to happen in some strange remoting + * scenarios and I was unable to figure out what's happening there. + * Dec 10, 2005 - Martin. + */ + + if (dest) { + assembly = dest->klass->image->assembly; + type_resolve = TRUE; + } else { + g_warning (G_STRLOC); } + if (info.assembly.name) + assembly = mono_assembly_load (&info.assembly, assembly ? assembly->basedir : NULL, NULL); + + if (assembly) { /* When loading from the current assembly, AppDomain.TypeResolve will not be called yet */ type = mono_reflection_get_type (assembly->image, &info, ignoreCase, &type_resolve); diff --git a/mono/metadata/reflection.c b/mono/metadata/reflection.c index 9cb2b18f5ef..089867768b9 100644 --- a/mono/metadata/reflection.c +++ b/mono/metadata/reflection.c @@ -7458,7 +7458,7 @@ _mono_reflection_get_type_from_info (MonoTypeNameParse *info, MonoImage *image, assembly = image->assembly; if (!assembly) { /* then we must load the assembly ourselve - see #60439 */ - assembly = mono_assembly_load (&info->assembly, NULL, NULL); + assembly = mono_assembly_load (&info->assembly, image->assembly->basedir, NULL); if (!assembly) return NULL; } diff --git a/mono/metadata/sgen-alloc.c b/mono/metadata/sgen-alloc.c index 6f2909769ab..6eb71c13c34 100644 --- a/mono/metadata/sgen-alloc.c +++ b/mono/metadata/sgen-alloc.c @@ -454,12 +454,12 @@ void* mono_gc_alloc_obj (MonoVTable *vtable, size_t size) { void *res; + TLAB_ACCESS_INIT; if (!SGEN_CAN_ALIGN_UP (size)) return NULL; #ifndef DISABLE_CRITICAL_REGION - TLAB_ACCESS_INIT; if (G_UNLIKELY (has_per_allocation_action)) { static int alloc_count; @@ -498,12 +498,12 @@ void* mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_length) { MonoArray *arr; + TLAB_ACCESS_INIT; if (!SGEN_CAN_ALIGN_UP (size)) return NULL; #ifndef DISABLE_CRITICAL_REGION - TLAB_ACCESS_INIT; ENTER_CRITICAL_REGION; arr = mono_gc_try_alloc_obj_nolock (vtable, size); if (arr) { @@ -535,12 +535,12 @@ mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uint { MonoArray *arr; MonoArrayBounds *bounds; + TLAB_ACCESS_INIT; if (!SGEN_CAN_ALIGN_UP (size)) return NULL; #ifndef DISABLE_CRITICAL_REGION - TLAB_ACCESS_INIT; ENTER_CRITICAL_REGION; arr = mono_gc_try_alloc_obj_nolock (vtable, size); if (arr) { @@ -577,12 +577,12 @@ void* mono_gc_alloc_string (MonoVTable *vtable, size_t size, gint32 len) { MonoString *str; + TLAB_ACCESS_INIT; if (!SGEN_CAN_ALIGN_UP (size)) return NULL; #ifndef DISABLE_CRITICAL_REGION - TLAB_ACCESS_INIT; ENTER_CRITICAL_REGION; str = mono_gc_try_alloc_obj_nolock (vtable, size); if (str) { diff --git a/mono/metadata/sgen-gc.c b/mono/metadata/sgen-gc.c index 5900dc731a3..359ce01471d 100644 --- a/mono/metadata/sgen-gc.c +++ b/mono/metadata/sgen-gc.c @@ -353,6 +353,8 @@ static long long time_major_fragment_creation = 0; int gc_debug_level = 0; FILE* gc_debug_file; +static MonoGCFinalizerCallbacks fin_callbacks; + /* void mono_gc_flush_info (void) @@ -3352,6 +3354,13 @@ has_critical_finalizer (MonoObject *obj) return mono_class_has_parent_fast (class, mono_defaults.critical_finalizer_object); } +static gboolean +is_finalization_aware (MonoObject *obj) +{ + MonoVTable *vt = ((MonoVTable*)LOAD_VTABLE (obj)); + return (vt->gc_bits & SGEN_GC_BIT_FINALIZER_AWARE) == SGEN_GC_BIT_FINALIZER_AWARE; +} + void sgen_queue_finalization_entry (MonoObject *obj) { @@ -3366,6 +3375,9 @@ sgen_queue_finalization_entry (MonoObject *obj) fin_ready_list = entry; } + if (fin_callbacks.object_queued_for_finalization && is_finalization_aware (obj)) + fin_callbacks.object_queued_for_finalization (obj); + #ifdef ENABLE_DTRACE if (G_UNLIKELY (MONO_GC_FINALIZE_ENQUEUE_ENABLED ())) { int gen = sgen_ptr_in_nursery (obj) ? GENERATION_NURSERY : GENERATION_OLD; @@ -4750,7 +4762,7 @@ mono_gc_base_init (void) if (val < SGEN_MAX_NURSERY_WASTE) { sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using default value.", - "`nursery-size` must be at least %d bytes.\n", SGEN_MAX_NURSERY_WASTE); + "`nursery-size` must be at least %d bytes.", SGEN_MAX_NURSERY_WASTE); continue; } @@ -5320,17 +5332,24 @@ sgen_get_remset (void) guint mono_gc_get_vtable_bits (MonoClass *class) { + guint res = 0; /* FIXME move this to the bridge code */ - if (!sgen_need_bridge_processing ()) - return 0; - switch (sgen_bridge_class_kind (class)) { - case GC_BRIDGE_TRANSPARENT_BRIDGE_CLASS: - case GC_BRIDGE_OPAQUE_BRIDGE_CLASS: - return SGEN_GC_BIT_BRIDGE_OBJECT; - case GC_BRIDGE_OPAQUE_CLASS: - return SGEN_GC_BIT_BRIDGE_OPAQUE_OBJECT; + if (sgen_need_bridge_processing ()) { + switch (sgen_bridge_class_kind (class)) { + case GC_BRIDGE_TRANSPARENT_BRIDGE_CLASS: + case GC_BRIDGE_OPAQUE_BRIDGE_CLASS: + res = SGEN_GC_BIT_BRIDGE_OBJECT; + break; + case GC_BRIDGE_OPAQUE_CLASS: + res = SGEN_GC_BIT_BRIDGE_OPAQUE_OBJECT; + break; + } } - return 0; + if (fin_callbacks.is_class_finalization_aware) { + if (fin_callbacks.is_class_finalization_aware (class)) + res |= SGEN_GC_BIT_FINALIZER_AWARE; + } + return res; } void @@ -5366,4 +5385,13 @@ sgen_timestamp (void) return SGEN_TV_ELAPSED (sgen_init_timestamp, timestamp); } +void +mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *callbacks) +{ + if (callbacks->version != MONO_GC_FINALIZER_EXTENSION_VERSION) + g_error ("Invalid finalizer callback version. Expected %d but got %d\n", MONO_GC_FINALIZER_EXTENSION_VERSION, callbacks->version); + + fin_callbacks = *callbacks; +} + #endif /* HAVE_SGEN_GC */ diff --git a/mono/metadata/sgen-gc.h b/mono/metadata/sgen-gc.h index 7008cec2f74..0e37c90f430 100644 --- a/mono/metadata/sgen-gc.h +++ b/mono/metadata/sgen-gc.h @@ -367,6 +367,7 @@ List of what each bit on of the vtable gc bits means. enum { SGEN_GC_BIT_BRIDGE_OBJECT = 1, SGEN_GC_BIT_BRIDGE_OPAQUE_OBJECT = 2, + SGEN_GC_BIT_FINALIZER_AWARE = 4, }; /* the runtime can register areas of memory as roots: we keep two lists of roots, diff --git a/mono/metadata/sgen-new-bridge.c b/mono/metadata/sgen-new-bridge.c index 437f61a4d08..c322e649b75 100644 --- a/mono/metadata/sgen-new-bridge.c +++ b/mono/metadata/sgen-new-bridge.c @@ -441,8 +441,9 @@ dyn_array_int_contains (DynIntArray *da, int x) static void enable_accounting (void) { + SgenHashTable table = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_BRIDGE_HASH_TABLE, INTERNAL_MEM_BRIDGE_HASH_TABLE_ENTRY, sizeof (HashEntryWithAccounting), mono_aligned_addr_hash, NULL); bridge_accounting_enabled = TRUE; - hash_table = (SgenHashTable)SGEN_HASH_TABLE_INIT (INTERNAL_MEM_BRIDGE_HASH_TABLE, INTERNAL_MEM_BRIDGE_HASH_TABLE_ENTRY, sizeof (HashEntryWithAccounting), mono_aligned_addr_hash, NULL); + hash_table = table; } static MonoGCBridgeObjectKind @@ -881,7 +882,7 @@ dump_graph (void) MonoObject *obj; HashEntry *entry; int prefix_len = strlen (dump_prefix); - char filename [prefix_len + 64]; + char *filename = alloca(prefix_len + 64); FILE *file; int edge_id = 0; diff --git a/mono/metadata/sgen-nursery-allocator.c b/mono/metadata/sgen-nursery-allocator.c index 51b5bc6f8f5..189a60b5297 100644 --- a/mono/metadata/sgen-nursery-allocator.c +++ b/mono/metadata/sgen-nursery-allocator.c @@ -938,7 +938,12 @@ sgen_nursery_allocator_set_nursery_bounds (char *start, char *end) sgen_nursery_start = start; sgen_nursery_end = end; - sgen_space_bitmap_size = (end - start) / (SGEN_TO_SPACE_GRANULE_IN_BYTES * 8); + /* + * This will not divide evenly for tiny nurseries (<4kb), so we make sure to be on + * the right side of things and round up. We could just do a MIN(1,x) instead, + * since the nursery size must be a power of 2. + */ + sgen_space_bitmap_size = (end - start + SGEN_TO_SPACE_GRANULE_IN_BYTES * 8 - 1) / (SGEN_TO_SPACE_GRANULE_IN_BYTES * 8); sgen_space_bitmap = g_malloc0 (sgen_space_bitmap_size); /* Setup the single first large fragment */ diff --git a/mono/metadata/sgen-old-bridge.c b/mono/metadata/sgen-old-bridge.c index de2933f7795..42a588164df 100644 --- a/mono/metadata/sgen-old-bridge.c +++ b/mono/metadata/sgen-old-bridge.c @@ -396,8 +396,9 @@ dyn_array_int_merge_one (DynIntArray *array, int value) static void enable_accounting (void) { + SgenHashTable table = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_BRIDGE_HASH_TABLE, INTERNAL_MEM_BRIDGE_HASH_TABLE_ENTRY, sizeof (HashEntryWithAccounting), mono_aligned_addr_hash, NULL); bridge_accounting_enabled = TRUE; - hash_table = (SgenHashTable)SGEN_HASH_TABLE_INIT (INTERNAL_MEM_BRIDGE_HASH_TABLE, INTERNAL_MEM_BRIDGE_HASH_TABLE_ENTRY, sizeof (HashEntryWithAccounting), mono_aligned_addr_hash, NULL); + hash_table = table; } static MonoGCBridgeObjectKind diff --git a/mono/metadata/sgen-tarjan-bridge.c b/mono/metadata/sgen-tarjan-bridge.c index fec1d697ca2..1abcda6b2e1 100644 --- a/mono/metadata/sgen-tarjan-bridge.c +++ b/mono/metadata/sgen-tarjan-bridge.c @@ -390,10 +390,10 @@ retry: static void free_color_buckets (void) { - color_data_count = 0; - ColorBucket *cur, *tmp; + color_data_count = 0; + for (cur = root_color_bucket; cur; cur = tmp) { ColorData *cd; for (cd = &cur->data [0]; cd < cur->next_data; ++cd) { diff --git a/mono/metadata/threads.c b/mono/metadata/threads.c index 9eb952f18ce..689e4e29488 100755 --- a/mono/metadata/threads.c +++ b/mono/metadata/threads.c @@ -721,6 +721,12 @@ create_thread (MonoThread *thread, MonoInternalThread *internal, StartInfo *star MonoNativeThreadId tid; guint32 create_flags; + /* + * Join joinable threads to prevent running out of threads since the finalizer + * thread might be blocked/backlogged. + */ + mono_threads_join_threads (); + mono_threads_lock (); if (shutting_down) { g_free (start_info); diff --git a/mono/metadata/verify.c b/mono/metadata/verify.c index 3c29b116e4c..aa4435c8e85 100644 --- a/mono/metadata/verify.c +++ b/mono/metadata/verify.c @@ -3219,9 +3219,10 @@ do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual) if (constrained && virtual) { if (!stack_slot_is_managed_pointer (value)) CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Object is not a managed pointer for a constrained call at 0x%04x", ctx->ip_offset)); - if (!mono_metadata_type_equal_full (mono_type_get_type_byval (value->type), ctx->constrained_type, TRUE)) + if (!mono_metadata_type_equal_full (mono_type_get_type_byval (value->type), mono_type_get_underlying_type (ctx->constrained_type), TRUE)) CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Object not compatible with constrained type at 0x%04x", ctx->ip_offset)); copy.stype |= BOXED_MASK; + copy.type = ctx->constrained_type; } else { if (stack_slot_is_managed_pointer (value) && !mono_class_from_mono_type (value->type)->valuetype) CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot call a reference type using a managed pointer to the this arg at 0x%04x", ctx->ip_offset)); diff --git a/mono/mini/debugger-agent.c b/mono/mini/debugger-agent.c index 0c809062b86..d7a903adbed 100644 --- a/mono/mini/debugger-agent.c +++ b/mono/mini/debugger-agent.c @@ -356,7 +356,8 @@ typedef enum { MOD_KIND_STEP = 10, MOD_KIND_ASSEMBLY_ONLY = 11, MOD_KIND_SOURCE_FILE_ONLY = 12, - MOD_KIND_TYPE_NAME_ONLY = 13 + MOD_KIND_TYPE_NAME_ONLY = 13, + MOD_KIND_NONE = 14 } ModifierKind; typedef enum { @@ -4326,7 +4327,7 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo #endif } - DEBUG(1, fprintf (log_file, "[dbg] Inserted breakpoint at %s:0x%x.\n", mono_method_full_name (jinfo_get_method (ji), TRUE), (int)sp->il_offset)); + DEBUG(1, fprintf (log_file, "[dbg] Inserted breakpoint at %s:0x%x [%p](%d).\n", mono_method_full_name (jinfo_get_method (ji), TRUE), (int)sp->il_offset, inst->ip, count)); } static void @@ -4346,6 +4347,7 @@ remove_breakpoint (BreakpointInstance *inst) if (count == 1 && inst->native_offset != SEQ_POINT_NATIVE_OFFSET_DEAD_CODE) { mono_arch_clear_breakpoint (ji, ip); + DEBUG(1, fprintf (log_file, "[dbg] Clear breakpoint at %s [%p].\n", mono_method_full_name (jinfo_get_method (ji), TRUE), ip)); } #else NOT_IMPLEMENTED; @@ -5412,6 +5414,25 @@ ss_destroy (SingleStepReq *req) ss_req = NULL; } +static void +ss_clear_for_assembly (SingleStepReq *req, MonoAssembly *assembly) +{ + GSList *l; + gboolean found = TRUE; + + while (found) { + found = FALSE; + for (l = ss_req->bps; l; l = l->next) { + if (breakpoint_matches_assembly (l->data, assembly)) { + clear_breakpoint (l->data); + ss_req->bps = g_slist_delete_link (ss_req->bps, l); + found = TRUE; + break; + } + } + } +} + /* * Called from metadata by the icall for System.Diagnostics.Debugger:Log (). */ @@ -6311,28 +6332,47 @@ clear_event_request (int req_id, int etype) mono_loader_unlock (); } -static gboolean -event_req_matches_assembly (EventRequest *req, MonoAssembly *assembly) +static void +clear_assembly_from_modifier (EventRequest *req, Modifier *m, MonoAssembly *assembly) { - if (req->event_kind == EVENT_KIND_BREAKPOINT) - return breakpoint_matches_assembly (req->info, assembly); - else { - int i, j; + int i; - for (i = 0; i < req->nmodifiers; ++i) { - Modifier *m = &req->modifiers [i]; + if (m->kind == MOD_KIND_EXCEPTION_ONLY && m->data.exc_class && m->data.exc_class->image->assembly == assembly) + m->kind = MOD_KIND_NONE; + if (m->kind == MOD_KIND_ASSEMBLY_ONLY && m->data.assemblies) { + int count = 0, match_count = 0, pos; + MonoAssembly **newassemblies; - if (m->kind == MOD_KIND_EXCEPTION_ONLY && m->data.exc_class && m->data.exc_class->image->assembly == assembly) - return TRUE; - if (m->kind == MOD_KIND_ASSEMBLY_ONLY && m->data.assemblies) { - for (j = 0; m->data.assemblies [j]; ++j) - if (m->data.assemblies [j] == assembly) - return TRUE; - } + for (i = 0; m->data.assemblies [i]; ++i) { + count ++; + if (m->data.assemblies [i] == assembly) + match_count ++; + } + + if (match_count) { + newassemblies = g_new0 (MonoAssembly*, count - match_count); + + pos = 0; + for (i = 0; i < count; ++i) + if (m->data.assemblies [i] != assembly) + newassemblies [pos ++] = m->data.assemblies [i]; + g_assert (pos == count - match_count); + g_free (m->data.assemblies); + m->data.assemblies = newassemblies; } } +} - return FALSE; +static void +clear_assembly_from_modifiers (EventRequest *req, MonoAssembly *assembly) +{ + int i; + + for (i = 0; i < req->nmodifiers; ++i) { + Modifier *m = &req->modifiers [i]; + + clear_assembly_from_modifier (req, m, assembly); + } } /* @@ -6353,11 +6393,16 @@ clear_event_requests_for_assembly (MonoAssembly *assembly) for (i = 0; i < event_requests->len; ++i) { EventRequest *req = g_ptr_array_index (event_requests, i); - if (event_req_matches_assembly (req, assembly)) { + clear_assembly_from_modifiers (req, assembly); + + if (req->event_kind == EVENT_KIND_BREAKPOINT && breakpoint_matches_assembly (req->info, assembly)) { clear_event_request (req->id, req->event_kind); found = TRUE; break; } + + if (req->event_kind == EVENT_KIND_STEP) + ss_clear_for_assembly (req->info, assembly); } } mono_loader_unlock (); diff --git a/mono/mini/exceptions-amd64.c b/mono/mini/exceptions-amd64.c index b81a7dca3a3..bd9847c4172 100644 --- a/mono/mini/exceptions-amd64.c +++ b/mono/mini/exceptions-amd64.c @@ -19,6 +19,7 @@ #include #include #include + #ifdef HAVE_UCONTEXT_H #include #endif @@ -876,11 +877,11 @@ prepare_for_guard_pages (MonoContext *mctx) } static void -altstack_handle_and_restore (void *sigctx, gpointer obj, gboolean stack_ovf) +altstack_handle_and_restore (MonoContext *ctx, gpointer obj, gboolean stack_ovf) { MonoContext mctx; - mono_arch_sigctx_to_monoctx (sigctx, &mctx); + mctx = *ctx; mono_handle_exception (&mctx, obj); if (stack_ovf) @@ -893,11 +894,10 @@ mono_arch_handle_altstack_exception (void *sigctx, gpointer fault_addr, gboolean { #if defined(MONO_ARCH_USE_SIGACTION) MonoException *exc = NULL; - ucontext_t *ctx = (ucontext_t*)sigctx; MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (gpointer)UCONTEXT_REG_RIP (sigctx), NULL); gpointer *sp; int frame_size; - ucontext_t *copied_ctx; + MonoContext *copied_ctx; if (stack_ovf) exc = mono_domain_get ()->stack_overflow_ex; @@ -912,27 +912,15 @@ mono_arch_handle_altstack_exception (void *sigctx, gpointer fault_addr, gboolean * return ip * 128 is the size of the red zone */ - frame_size = sizeof (ucontext_t) + sizeof (gpointer) * 4 + 128; -#ifdef __APPLE__ - frame_size += sizeof (*ctx->uc_mcontext); -#endif + frame_size = sizeof (MonoContext) + sizeof (gpointer) * 4 + 128; frame_size += 15; frame_size &= ~15; sp = (gpointer)(UCONTEXT_REG_RSP (sigctx) & ~15); sp = (gpointer)((char*)sp - frame_size); - copied_ctx = (ucontext_t*)(sp + 4); + copied_ctx = (MonoContext*)(sp + 4); /* the arguments must be aligned */ sp [-1] = (gpointer)UCONTEXT_REG_RIP (sigctx); - /* may need to adjust pointers in the new struct copy, depending on the OS */ - memcpy (copied_ctx, ctx, sizeof (ucontext_t)); -#ifdef __APPLE__ - { - guint8 * copied_mcontext = (guint8*)copied_ctx + sizeof (ucontext_t); - /* uc_mcontext is a pointer, so make a copy which is stored after the ctx */ - memcpy (copied_mcontext, ctx->uc_mcontext, sizeof (*ctx->uc_mcontext)); - copied_ctx->uc_mcontext = (void*)copied_mcontext; - } -#endif + mono_sigctx_to_monoctx (sigctx, copied_ctx); /* at the return form the signal handler execution starts in altstack_handle_and_restore() */ UCONTEXT_REG_RIP (sigctx) = (unsigned long)altstack_handle_and_restore; UCONTEXT_REG_RSP (sigctx) = (unsigned long)(sp - 1); diff --git a/mono/mini/mini-codegen.c b/mono/mini/mini-codegen.c index 6e5bf2f8586..66eb8fcdcf2 100644 --- a/mono/mini/mini-codegen.c +++ b/mono/mini/mini-codegen.c @@ -1452,6 +1452,8 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb) if (k != j) sreg_masks [k] &= ~ (regmask (dest_sreg)); } + /* See below */ + dreg_mask &= ~ (regmask (dest_sreg)); } else { val = rs->vassign [sreg]; if (val == -1) { @@ -1471,7 +1473,7 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb) sreg_masks [k] &= ~ (regmask (dest_sreg)); } /* - * Prevent the dreg from being allocate to dest_sreg + * Prevent the dreg from being allocated to dest_sreg * too, since it could force sreg1 to be allocated to * the same reg on x86. */ diff --git a/mono/mini/mini-llvm.c b/mono/mini/mini-llvm.c index 9da527eaf35..d09863f709b 100644 --- a/mono/mini/mini-llvm.c +++ b/mono/mini/mini-llvm.c @@ -313,6 +313,8 @@ type_to_simd_type (int type) static LLVMTypeRef type_to_llvm_type (EmitContext *ctx, MonoType *t) { + t = mini_replace_type (t); + if (t->byref) return LLVMPointerType (LLVMInt8Type (), 0); switch (t->type) { diff --git a/mono/mini/mini.h b/mono/mini/mini.h index 702daa6b813..ff3d5537ad2 100644 --- a/mono/mini/mini.h +++ b/mono/mini/mini.h @@ -2656,7 +2656,7 @@ void mono_generic_sharing_cleanup (void) MONO_INTERNAL; MonoClass* mini_class_get_container_class (MonoClass *class) MONO_INTERNAL; MonoGenericContext* mini_class_get_context (MonoClass *class) MONO_INTERNAL; -MonoType* mini_replace_type (MonoType *type) MONO_INTERNAL; +MonoType* mini_replace_type (MonoType *type) MONO_LLVM_INTERNAL; MonoType* mini_get_basic_type_from_generic (MonoGenericSharingContext *gsctx, MonoType *type) MONO_INTERNAL; MonoType* mini_type_get_underlying_type (MonoGenericSharingContext *gsctx, MonoType *type) MONO_INTERNAL; MonoMethod* mini_get_shared_method (MonoMethod *method) MONO_INTERNAL; diff --git a/mono/profiler/decode.c b/mono/profiler/decode.c index 96c79ef2712..eea1dbf5db5 100644 --- a/mono/profiler/decode.c +++ b/mono/profiler/decode.c @@ -2403,13 +2403,14 @@ decode_buffer (ProfContext *ctx) } else if (subtype == TYPE_SAMPLE_COUNTERS_DESC) { uint64_t i, len = decode_uleb128 (p + 1, &p); for (i = 0; i < len; i++) { + uint64_t type, unit, variance, index; uint64_t section = decode_uleb128 (p, &p); char *name = pstrdup ((char*)p); while (*p++); - uint64_t type = decode_uleb128 (p, &p); - uint64_t unit = decode_uleb128 (p, &p); - uint64_t variance = decode_uleb128 (p, &p); - uint64_t index = decode_uleb128 (p, &p); + type = decode_uleb128 (p, &p); + unit = decode_uleb128 (p, &p); + variance = decode_uleb128 (p, &p); + index = decode_uleb128 (p, &p); add_counter ((int)section, name, (int)type, (int)unit, (int)variance, (int)index); } } else if (subtype == TYPE_SAMPLE_COUNTERS) { @@ -2419,7 +2420,7 @@ decode_buffer (ProfContext *ctx) uint64_t timestamp = decode_uleb128 (p + 1, &p); uint64_t time_between = timestamp / 1000 * 1000 * 1000 * 1000 + startup_time; while (1) { - uint64_t index = decode_uleb128 (p, &p); + uint64_t type, index = decode_uleb128 (p, &p); if (index == 0) break; @@ -2430,7 +2431,7 @@ decode_buffer (ProfContext *ctx) } } - uint64_t type = decode_uleb128 (p, &p); + type = decode_uleb128 (p, &p); value = calloc (1, sizeof (CounterValue)); value->timestamp = timestamp; diff --git a/mono/profiler/proflog.c b/mono/profiler/proflog.c index 16b9b781ae5..438c0ec3803 100644 --- a/mono/profiler/proflog.c +++ b/mono/profiler/proflog.c @@ -1937,12 +1937,12 @@ counters_init_add_counter (MonoCounter *counter, gpointer data) static void counters_init (MonoProfiler *profiler) { - mono_counters_foreach (counters_init_add_counter, NULL); - MonoCounterAgent *agent; LogBuffer *logbuffer; int size = 1 + 5, len = 0; + mono_counters_foreach (counters_init_add_counter, NULL); + for (agent = counters; agent; agent = agent->next) { size += strlen (mono_counter_get_name (agent->counter)) + 1 + 5 * 5; len += 1; @@ -1994,9 +1994,11 @@ counters_sample (MonoProfiler *profiler, uint64_t timestamp) emit_byte (logbuffer, TYPE_SAMPLE_COUNTERS | TYPE_SAMPLE); emit_uvalue (logbuffer, timestamp); for (agent = counters; agent; agent = agent->next) { + size_t size; + counter = agent->counter; - size_t size = mono_counter_get_size (counter); + size = mono_counter_get_size (counter); if (size < 0) { continue; // FIXME error } else if (size > buffer_size) { diff --git a/mono/tests/Makefile.am b/mono/tests/Makefile.am index 79c6f919324..ab18c9bdf08 100644 --- a/mono/tests/Makefile.am +++ b/mono/tests/Makefile.am @@ -1,6 +1,6 @@ SUBDIRS = cas assemblyresolve gc-descriptors -check-local: assemblyresolve/test/asm.dll testjit test-generic-sharing test-type-load test-cattr-type-load test_platform test-process-exit test-messages rm-empty-logs +check-local: assemblyresolve/test/asm.dll testjit test-generic-sharing test-type-load test-cattr-type-load test-reflection-load-with-context test_platform test-process-exit test-messages rm-empty-logs check-full: test-sgen check-local check-parallel: compile-tests check-full @@ -892,6 +892,16 @@ test-cattr-type-load: TestDriver.dll custom-attr-errors.cs custom-attr-errors-li @echo "Testing custom-attribute-load-exceptions.exe..." @$(RUNTIME) custom-attr-errors.exe > custom-attr-errors.exe.stdout 2> custom-attr-errors.exe.stderr +EXTRA_DIST += reflection-load-with-context-lib.cs reflection-load-with-context-second-lib.cs reflection-load-with-context.cs +test-reflection-load-with-context: TestDriver.dll reflection-load-with-context-lib.cs reflection-load-with-context-second-lib.cs reflection-load-with-context.cs + rm -rf reflection-load-dir + mkdir reflection-load-dir + $(MCS) /t:library $(srcdir)/reflection-load-with-context-second-lib.cs -out:reflection-load-dir/reflection-load-with-context-second-lib.dll + $(MCS) /t:library -r:reflection-load-dir/reflection-load-with-context-second-lib.dll $(srcdir)/reflection-load-with-context-lib.cs -out:reflection-load-dir/reflection-load-with-context-lib.dll + $(MCS) reflection-load-with-context.cs + @echo "Testing reflection-load-with-context.cs.exe..." + @$(RUNTIME) reflection-load-with-context.exe > reflection-load-with-context.exe.stdout 2> reflection-load-with-context.exe.stderr + EXTRA_DIST += debug-casts.cs # This depends on TLS, so its not ran by default diff --git a/mono/tests/reflection-load-with-context-lib.cs b/mono/tests/reflection-load-with-context-lib.cs new file mode 100644 index 00000000000..9aca41fe3e5 --- /dev/null +++ b/mono/tests/reflection-load-with-context-lib.cs @@ -0,0 +1,29 @@ +using System; + +namespace B +{ + public class MyAttribute : Attribute { + public Type Type { get; set; } + public MyAttribute (Type t) { + Type = t; + } + public override string ToString () { + return "My " + Type; + } + } + + [My (typeof (A.ClassA))] + public class ClassB { // A.AnotherClassA + + public ClassB () { + Console.WriteLine ("IN B"); + Console.WriteLine (typeof (ClassB).AssemblyQualifiedName); + var t = Type.GetType ("B.ClassB, reflection-load-with-context-lib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"); + Console.WriteLine (t); + t = Type.GetType ("A.ClassA, reflection-load-with-context-second-lib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"); + Console.WriteLine ("class a: {0}", t); + if (t == null) + throw new Exception ("FAIL"); + } + } +} \ No newline at end of file diff --git a/mono/tests/reflection-load-with-context-second-lib.cs b/mono/tests/reflection-load-with-context-second-lib.cs new file mode 100644 index 00000000000..4458aad50ea --- /dev/null +++ b/mono/tests/reflection-load-with-context-second-lib.cs @@ -0,0 +1,7 @@ +using System; + +namespace A +{ + public class ClassA {} + public class AnotherClassA {} +} \ No newline at end of file diff --git a/mono/tests/reflection-load-with-context.cs b/mono/tests/reflection-load-with-context.cs new file mode 100644 index 00000000000..4c791e752a7 --- /dev/null +++ b/mono/tests/reflection-load-with-context.cs @@ -0,0 +1,26 @@ +using System; +using System.Reflection; +using System.IO; + +class Driver { + static int Main () { + var src = Path.Combine (Path.GetDirectoryName (typeof (Driver).Assembly.Location), "reflection-load-dir"); + var dep_asm = Assembly.UnsafeLoadFrom (Path.Combine (src, "reflection-load-with-context-lib.dll")); + var type = dep_asm.GetType ("B.ClassB"); + var attr_type = dep_asm.GetType ("B.MyAttribute"); + + try { + Activator.CreateInstance (type); + } catch (Exception) { + return 1; + } + + try { + type.GetCustomAttributes (attr_type, false); + } catch (Exception) { + return 2; + } + return 0; + } +} + diff --git a/mono/utils/atomic.h b/mono/utils/atomic.h index c8c70007bc7..c1a1a94b475 100755 --- a/mono/utils/atomic.h +++ b/mono/utils/atomic.h @@ -167,7 +167,7 @@ static inline void InterlockedWrite16(volatile gint16 *dst, gint16 val) mono_memory_barrier (); } -/* Prefer GCC atomic ops if the target supports it (see configure.in). */ +/* Prefer GCC atomic ops if the target supports it (see configure.ac). */ #elif defined(USE_GCC_ATOMIC_OPS) static inline gint32 InterlockedCompareExchange(volatile gint32 *dest, diff --git a/mono/utils/gc_wrapper.h b/mono/utils/gc_wrapper.h index b4ea3770ad2..6da0fb2fc8d 100644 --- a/mono/utils/gc_wrapper.h +++ b/mono/utils/gc_wrapper.h @@ -27,10 +27,10 @@ # if defined(HAVE_KW_THREAD) && defined(USE_INCLUDED_LIBGC) && !defined(__powerpc__) /* The local alloc stuff is in pthread_support.c, but solaris uses solaris_threads.c */ - /* It is also disabled on solaris/x86 by libgc/configure.in */ + /* It is also disabled on solaris/x86 by libgc/configure.ac */ /* * ARM has no definition for some atomic functions in gc_locks.h and - * support is also disabled in libgc/configure.in. + * support is also disabled in libgc/configure.ac. */ # if !defined(__sparc__) && !defined(__sun) && !defined(__arm__) && !defined(__mips__) # define GC_REDIRECT_TO_LOCAL diff --git a/mono/utils/mono-context.h b/mono/utils/mono-context.h index 8c813453f6e..258199018b3 100755 --- a/mono/utils/mono-context.h +++ b/mono/utils/mono-context.h @@ -118,7 +118,8 @@ typedef struct { __asm mov [eax+0x14], esp \ __asm mov [eax+0x18], esi \ __asm mov [eax+0x1c], edi \ - __asm call $+5 \ + __asm call __mono_context_get_ip \ + __asm __mono_context_get_ip: \ __asm pop dword ptr [eax+0x20] \ } \ } while (0) diff --git a/mono/utils/mono-counters.c b/mono/utils/mono-counters.c index 9d72ba2dcd3..2f642bb3ec1 100644 --- a/mono/utils/mono-counters.c +++ b/mono/utils/mono-counters.c @@ -273,43 +273,43 @@ dump_counter (MonoCounter *counter, FILE *outfile) { } static gint64 -user_time () +user_time (void) { return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_USER_TIME); } static gint64 -system_time () +system_time (void) { return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_SYSTEM_TIME); } static gint64 -total_time () +total_time (void) { return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_TOTAL_TIME); } static gint64 -working_set () +working_set (void) { return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_WORKING_SET); } static gint64 -private_bytes () +private_bytes (void) { return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_PRIVATE_BYTES); } static gint64 -virtual_bytes () +virtual_bytes (void) { return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_VIRTUAL_BYTES); } static gint64 -page_faults () +page_faults (void) { return mono_process_get_data (GINT_TO_POINTER (mono_process_current_pid ()), MONO_PROCESS_FAULTS); } @@ -349,19 +349,19 @@ cpu_load (int kind) } static double -cpu_load_1min () +cpu_load_1min (void) { return cpu_load (0); } static double -cpu_load_5min () +cpu_load_5min (void) { return cpu_load (1); } static double -cpu_load_15min () +cpu_load_15min (void) { return cpu_load (2); } @@ -374,7 +374,7 @@ static gboolean system_counters_initialized = FALSE; #define SYSCOUNTER_LOAD (MONO_COUNTER_SYSTEM | MONO_COUNTER_DOUBLE | MONO_COUNTER_PERCENTAGE | MONO_COUNTER_VARIABLE | MONO_COUNTER_CALLBACK) static void -initialize_system_counters () +initialize_system_counters (void) { mono_counters_register ("User Time", SYSCOUNTER_TIME, &user_time); mono_counters_register ("System Time", SYSCOUNTER_TIME, &system_time); @@ -417,8 +417,7 @@ mono_counters_foreach (CountersEnumCallback cb, gpointer user_data) size = sizeof (type); \ if (buffer_size < size) \ return -1; \ - type __var = cb ? ((functype)counter->addr) () : *(type*)counter->addr; \ - memcpy (buffer, &__var, size); \ + *(type*)buffer = cb ? ((functype)counter->addr) () : *(type*)counter->addr; \ } while (0); int diff --git a/mono/utils/mono-semaphore.c b/mono/utils/mono-semaphore.c index 74be0028245..4ac92196e07 100644 --- a/mono/utils/mono-semaphore.c +++ b/mono/utils/mono-semaphore.c @@ -25,9 +25,6 @@ # elif defined(__native_client__) && defined(USE_NEWLIB) # define TIMESPEC struct timespec # define WAIT_BLOCK(a, b) sem_trywait(a) -# elif defined(__OpenBSD__) -# define TIMESPEC struct timespec -# define WAIT_BLOCK(a) sem_trywait(a) # else # define TIMESPEC struct timespec # define WAIT_BLOCK(a,b) sem_timedwait (a, b) @@ -43,9 +40,6 @@ mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable) TIMESPEC ts, copy; struct timeval t; int res = 0; -#if defined(__OpenBSD__) - int timeout; -#endif #ifndef USE_MACH_SEMA if (timeout_ms == 0) @@ -65,19 +59,7 @@ mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable) ts.tv_nsec -= NSEC_PER_SEC; ts.tv_sec++; } -#if defined(__OpenBSD__) - timeout = ts.tv_sec; - while (timeout) { - if ((res = WAIT_BLOCK (sem)) == 0) - return res; - - if (alertable) - return -1; - usleep (ts.tv_nsec / 1000); - timeout--; - } -#else copy = ts; while ((res = WAIT_BLOCK (sem, &ts)) == -1 && errno == EINTR) { struct timeval current; @@ -104,7 +86,7 @@ mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable) ts.tv_nsec = 0; } } -#endif + /* OSX might return > 0 for error */ if (res != 0) res = -1; diff --git a/mono/utils/mono-threads-mach-helper.c b/mono/utils/mono-threads-mach-helper.c index 0e95d4e878e..cafb3fe96d0 100644 --- a/mono/utils/mono-threads-mach-helper.c +++ b/mono/utils/mono-threads-mach-helper.c @@ -66,25 +66,24 @@ mono_threads_install_dead_letter (void) { id cur, dict; + /* + * See the 'Dispatch Objective-C Messages Using the Method Function’s Prototype' section in + * the '64-Bit Transition Guide for Cocoa Touch' as to why this is required. + * + * It doesn't hurt on other architectures either, so no need to #ifdef it only for ARM64. + */ + + id (*id_objc_msgSend_id)(id, SEL, id) = (id (*)(id, SEL, id)) objc_msgSend; + void (*objc_msgSend_id_id)(id, SEL, id, id) = (void (*)(id, SEL, id, id)) objc_msgSend; + cur = objc_msgSend ((id)nsthread, currentThread); if (!cur) return; dict = objc_msgSend (cur, threadDictionary); - if (dict && objc_msgSend (dict, objectForKey, mono_dead_letter_key) == nil) { + if (dict && id_objc_msgSend_id (dict, objectForKey, mono_dead_letter_key) == nil) { id value = objc_msgSend (objc_msgSend ((id)mono_dead_letter_class, alloc), init); -#ifdef TARGET_ARM64 - /* - * See the 'Dispatch Objective-C Messages Using the Method Function’s Prototype' section in - * the '64-Bit Transition Guide for Cocoa Touch' as to why this is required. - */ - { - void (*action)(id, SEL, id, id) = (void (*)(id, SEL, id, id)) objc_msgSend; - action (dict, setObjectForKey, value, mono_dead_letter_key); - } -#else - objc_msgSend (dict, setObjectForKey, value, mono_dead_letter_key); -#endif + objc_msgSend_id_id (dict, setObjectForKey, value, mono_dead_letter_key); objc_msgSend (value, release); } @@ -93,8 +92,8 @@ mono_threads_install_dead_letter (void) void mono_threads_init_dead_letter (void) { - id nsstring = objc_getClass ("NSString"); - id nsautoreleasepool = objc_getClass ("NSAutoreleasePool"); + id nsstring = (id) objc_getClass ("NSString"); + id nsautoreleasepool = (id) objc_getClass ("NSAutoreleasePool"); SEL stringWithUTF8String = sel_registerName ("stringWithUTF8String:"); SEL retain = sel_registerName ("retain"); id pool; @@ -121,14 +120,8 @@ mono_threads_init_dead_letter (void) // create the dict key pool = objc_msgSend (objc_msgSend (nsautoreleasepool, alloc), init); -#ifdef TARGET_ARM64 - { - id (*action)(id, SEL, char*) = (id (*)(id, SEL, char*)) objc_msgSend; - mono_dead_letter_key = action(nsstring, stringWithUTF8String, "mono-dead-letter"); - } -#else - mono_dead_letter_key = objc_msgSend (nsstring, stringWithUTF8String, "mono-dead-letter"); -#endif + id (*objc_msgSend_char)(id, SEL, const char*) = (id (*)(id, SEL, const char*)) objc_msgSend; + mono_dead_letter_key = objc_msgSend_char (nsstring, stringWithUTF8String, "mono-dead-letter"); objc_msgSend (mono_dead_letter_key, retain); objc_msgSend (pool, release); diff --git a/mono/utils/strtod.c b/mono/utils/strtod.c index d7b99340999..f20acdc2498 100644 --- a/mono/utils/strtod.c +++ b/mono/utils/strtod.c @@ -173,7 +173,7 @@ * #define NO_ERRNO if strtod should not assign errno = ERANGE when * the result overflows to +-Infinity or underflows to 0. */ -#if defined(TARGET_X86) || defined(mips) && defined(MIPSEL) || defined (__arm__) +#if defined(TARGET_X86) || defined(mips) && defined(MIPSEL) || defined (__arm__) || defined(__aarch64__) # define IEEE_8087 diff --git a/msvc/scripts/csproj.tmpl b/msvc/scripts/csproj.tmpl index 4e0e44e5915..872748e7f47 100644 --- a/msvc/scripts/csproj.tmpl +++ b/msvc/scripts/csproj.tmpl @@ -19,6 +19,7 @@ v@FX_VERSION 512 + @SIGNATURE@ true full diff --git a/msvc/scripts/genproj.cs b/msvc/scripts/genproj.cs index 5fa1a75ec78..b3e6b0d6715 100644 --- a/msvc/scripts/genproj.cs +++ b/msvc/scripts/genproj.cs @@ -861,7 +861,19 @@ class MsbuildGenerator { // Replace the template values // + string strongNameSection = ""; + if (StrongNameKeyFile != null){ + strongNameSection = String.Format ( + " \n" + + " true\n" + + "{1}" + + " \n" + + " \n" + + " {0}\n" + + " ", StrongNameKeyFile, StrongNameDelaySign ? " true\n" : ""); + } Csproj.output = template. + Replace ("@SIGNATURE@", strongNameSection). Replace ("@PROJECTGUID@", Csproj.projectGuid). Replace ("@DEFINES@", defines.ToString ()). Replace ("@DISABLEDWARNINGS@", string.Join (",", (from i in ignore_warning select i.ToString ()).ToArray ())). diff --git a/support/stdio.c b/support/stdio.c index 78c900e9d9b..e5b54da47b9 100644 --- a/support/stdio.c +++ b/support/stdio.c @@ -26,7 +26,7 @@ Mono_Posix_Syscall_L_ctermid (void) gint32 Mono_Posix_Syscall_L_cuserid (void) { -#ifdef __APPLE__ +#if defined(__APPLE__) || defined (__OpenBSD__) return -1; #else return L_cuserid; diff --git a/winconfig.h b/winconfig.h index 1084339a44f..427e21f35a8 100644 --- a/winconfig.h +++ b/winconfig.h @@ -1,5 +1,5 @@ /* config.h. Generated from config.h.in by configure. */ -/* config.h.in. Generated from configure.in by autoheader. */ +/* config.h.in. Generated from configure.ac by autoheader. */ /* The architecture this is running on */ #if defined(_M_IA64)