From b892cda2b10b204a6e3126b748ba295d2abf20ea Mon Sep 17 00:00:00 2001 From: Joe Marcus Clarke Date: Tue, 7 Oct 2003 03:33:38 +0000 Subject: I believe this works now. I am able to compile and run some C# apps included in the mono/tests/ subdirectory, and it no longer hangs or dies with weird errors. (And, yes, I do have garbage collecting enabled). I'll let the C# user community be my judge. There still may be some issues since boehm-gc isn't fully functional in its multi-threaded state on FreeBSD. --- lang/mono/Makefile | 19 +++++++++--- lang/mono/files/extra-patch-signbit | 35 ++++++++++++++++++++++ lang/mono/files/patch-configure | 15 ++++++++-- lang/mono/files/patch-libgc_configure | 10 +++++++ .../files/patch-libgc_include_private_gcconfig.h | 24 +++++++++++++++ 5 files changed, 96 insertions(+), 7 deletions(-) create mode 100644 lang/mono/files/extra-patch-signbit create mode 100644 lang/mono/files/patch-libgc_configure create mode 100644 lang/mono/files/patch-libgc_include_private_gcconfig.h (limited to 'lang') diff --git a/lang/mono/Makefile b/lang/mono/Makefile index 2dfb03d75b95..efe9f46c1260 100644 --- a/lang/mono/Makefile +++ b/lang/mono/Makefile @@ -7,21 +7,22 @@ PORTNAME= mono PORTVERSION= 0.28 +PORTREVISION= 1 CATEGORIES= lang MASTER_SITES= http://www.go-mono.com/archive/ MAINTAINER= gnome@FreeBSD.org COMMENT= An open source implementation of .NET Development Framework -LIB_DEPENDS= gc.1:${PORTSDIR}/devel/boehm-gc - USE_LIBTOOL= yes USE_REINPLACE= yes USE_BISON= yes USE_GNOME= gnomehack glib20 pkgconfig USE_GMAKE= yes +LIBTOOLFILES= configure libgc/configure INSTALLS_SHLIB= yes -CONFIGURE_ARGS= --program-transform-name=\'\' +CONFIGURE_ARGS= --program-transform-name=\'\' \ + --with-gc=included CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \ LDFLAGS="-L${LOCALBASE}/lib" @@ -32,4 +33,14 @@ MAN5= mono-config.5 ONLY_FOR_ARCHS= i386 -.include +.include + +.if ${OSVERSION} < 500000 +EXTRA_PATCHES= ${FILESDIR}/extra-patch-signbit +.endif + +post-patch: + @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|g' \ + ${WRKSRC}/configure + +.include diff --git a/lang/mono/files/extra-patch-signbit b/lang/mono/files/extra-patch-signbit new file mode 100644 index 000000000000..1d0ecf273bdf --- /dev/null +++ b/lang/mono/files/extra-patch-signbit @@ -0,0 +1,35 @@ +--- mono/mini/mini-x86.c Mon Sep 29 05:28:49 2003 ++++ mono/mini/mini-x86.c Sat Aug 30 04:01:27 2003 +@@ -40,6 +40,32 @@ + guint8 pad; + } MonoJitArgumentInfo; + ++union IEEEd2bits { ++ double d; ++ struct { ++#if _BYTE_ORDER == _LITTLE_ENDIAN ++ unsigned int manl :32; ++ unsigned int manh :20; ++ unsigned int exp :11; ++ unsigned int sign :1; ++#else ++ unsigned int sign :1; ++ unsigned int exp :11; ++ unsigned int manh :20; ++ unsigned int manl :32; ++#endif ++ } bits; ++}; ++ ++int ++signbit(double d) ++{ ++ union IEEEd2bits u; ++ ++ u.d = d; ++ return (u.bits.sign); ++} ++ + /* + * arch_get_argument_info: + * @csig: a method signature diff --git a/lang/mono/files/patch-configure b/lang/mono/files/patch-configure index 892e154a52eb..ecbc7f13a941 100644 --- a/lang/mono/files/patch-configure +++ b/lang/mono/files/patch-configure @@ -1,6 +1,15 @@ ---- configure.orig Thu Dec 26 13:09:19 2002 -+++ configure Thu Dec 26 13:09:37 2002 -@@ -7501,6 +7501,7 @@ +--- configure.orig Wed Oct 1 12:59:06 2003 ++++ configure Mon Oct 6 23:25:13 2003 +@@ -2005,7 +2005,7 @@ + _ACEOF + + libdl= +- libgc_threads=pthreads ++ libgc_threads=no + ;; + *-*-linux*) + platform_win32=no +@@ -8257,6 +8257,7 @@ # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" diff --git a/lang/mono/files/patch-libgc_configure b/lang/mono/files/patch-libgc_configure new file mode 100644 index 000000000000..3b6e949b324f --- /dev/null +++ b/lang/mono/files/patch-libgc_configure @@ -0,0 +1,10 @@ +--- libgc/configure.orig Thu Dec 26 13:09:19 2002 ++++ libgc/configure Thu Dec 26 13:09:37 2002 +@@ -7501,6 +7501,7 @@ + + # This can be used to rebuild libtool when needed + LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" ++$ac_aux_dir/ltconfig $LIBTOOL_DEPS + + # Always use our own libtool. + LIBTOOL='$(SHELL) $(top_builddir)/libtool' diff --git a/lang/mono/files/patch-libgc_include_private_gcconfig.h b/lang/mono/files/patch-libgc_include_private_gcconfig.h new file mode 100644 index 000000000000..d43a3a5cc8f0 --- /dev/null +++ b/lang/mono/files/patch-libgc_include_private_gcconfig.h @@ -0,0 +1,24 @@ +--- libgc/include/private/gcconfig.h.orig Mon Oct 6 22:38:35 2003 ++++ libgc/include/private/gcconfig.h Mon Oct 6 22:38:56 2003 +@@ -1151,8 +1151,8 @@ + # ifndef GC_FREEBSD_THREADS + # define MPROTECT_VDB + # endif +-# define SIG_SUSPEND SIGUSR1 +-# define SIG_THR_RESTART SIGUSR2 ++# define SIG_SUSPEND SIGTSTP ++# define SIG_THR_RESTART SIGCONT + # define FREEBSD_STACKBOTTOM + # ifdef __ELF__ + # define DYNAMIC_LOADING +@@ -1466,8 +1466,8 @@ + # ifdef FREEBSD + # define OS_TYPE "FREEBSD" + /* MPROTECT_VDB is not yet supported at all on FreeBSD/alpha. */ +-# define SIG_SUSPEND SIGUSR1 +-# define SIG_THR_RESTART SIGUSR2 ++# define SIG_SUSPEND SIGTSTP ++# define SIG_THR_RESTART SIGCONT + # define FREEBSD_STACKBOTTOM + # ifdef __ELF__ + # define DYNAMIC_LOADING -- cgit v1.2.3