aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarcus <marcus@FreeBSD.org>2003-10-07 11:33:38 +0800
committermarcus <marcus@FreeBSD.org>2003-10-07 11:33:38 +0800
commit058cd89d00ae2d3f5524918d2343119fc5478035 (patch)
tree30ea0f7169cd0530ecdd7aba3385f5ce24647dcb
parent795db0ee503f9bdd34b3b81a7993ff7b7802c66d (diff)
downloadfreebsd-ports-gnome-058cd89d00ae2d3f5524918d2343119fc5478035.tar.gz
freebsd-ports-gnome-058cd89d00ae2d3f5524918d2343119fc5478035.tar.zst
freebsd-ports-gnome-058cd89d00ae2d3f5524918d2343119fc5478035.zip
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.
-rw-r--r--lang/mono/Makefile19
-rw-r--r--lang/mono/files/extra-patch-signbit35
-rw-r--r--lang/mono/files/patch-configure15
-rw-r--r--lang/mono/files/patch-libgc_configure10
-rw-r--r--lang/mono/files/patch-libgc_include_private_gcconfig.h24
5 files changed, 96 insertions, 7 deletions
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 <bsd.port.mk>
+.include <bsd.port.pre.mk>
+
+.if ${OSVERSION} < 500000
+EXTRA_PATCHES= ${FILESDIR}/extra-patch-signbit
+.endif
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|g' \
+ ${WRKSRC}/configure
+
+.include <bsd.port.post.mk>
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