diff --git a/lang/mono5.20/Makefile b/lang/mono5.20/Makefile index 19e3b733e85c..ec4d8be92ad9 100644 --- a/lang/mono5.20/Makefile +++ b/lang/mono5.20/Makefile @@ -1,105 +1,111 @@ # Created by: Yukihiro Nakai PORTNAME= mono PORTVERSION= 5.20.1.34 CATEGORIES= lang MASTER_SITES= https://download.mono-project.com/sources/mono/ PKGNAMESUFFIX= 5.20 DISTFILES= ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX} MAINTAINER= mono@FreeBSD.org COMMENT= Open source implementation of .NET Development Framework LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE -ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc +ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc powerpc64 BUILD_DEPENDS= p5-XML-Parser>=0:textproc/p5-XML-Parser \ bash:shells/bash \ cmake>0:devel/cmake LIB_DEPENDS= libinotify.so:devel/libinotify RUN_DEPENDS= ca_root_nss>=0:security/ca_root_nss CONFLICTS_INSTALL= mono5.10 mono6.8 OPTIONS_DEFINE= MONOLITE NLS X11 HEAPVIZ OPTIONS_DEFAULT= MONOLITE X11 OPTIONS_SUB= yes HEAPVIZ_DESC= Install mono-heapviz debug tool (requires py-pillow) HEAPVIZ_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pillow>=0:graphics/py-pillow@${PY_FLAVOR} MONOLITE_DESC= Use monolite to bootstrap mcs (otherwise use installed mcs) MONOLITE_DISTFILES= monolite-linux-${MONOLITE_VERSION}-latest.tar.gz:monolite MONOLITE_MASTER_SITES= http://download.mono-project.com/monolite/:monolite MONOLITE_VERSION= 1051000004 NLS_CONFIGURE_OFF= --disable-nls NLS_USES= gettext X11_USES= display:test USES= autoreconf bison compiler:c11 cpe gmake iconv libtool \ pathfix perl5 python shebangfix tar:bzip2 USE_PERL5= build GNU_CONFIGURE= yes USE_LDCONFIG= yes SHEBANG_FILES= scripts/mono-heapviz mono/mini/genmdesc.py mono/tests/test_lldb.py BINARY_ALIAS= python=${PYTHON_CMD} CONFIGURE_ARGS= --disable-dtrace --enable-btls CPPFLAGS+= -I${LOCALBASE}/include MAKE_ENV= MONO_SHARED_DIR="${WRKDIR}" \ INSTALL_STRIP_FLAG="${STRIP}" \ TZ=UTC TEST_ARGS= -k TEST_TARGET= check PORTSCOUT= limit:^\d+\.\d+\.[1-9]\d* #LOCALBASE?= /usr/local .if !exists(${LOCALBASE}/bin/mcs) OPTIONS_SLAVE= MONOLITE .endif +.include + +.if ${ARCH:Mpowerpc*} +PLIST+= ${.CURDIR}/pkg-plist.powerpc +.endif + .include .if ${ARCH} == "aarch64" EXTRA_PATCHES= ${FILESDIR}/extra-patch-aarch64-race-workaround PLIST_SUB+= BOEHM="@comment " .else PLIST_SUB+= BOEHM="" .endif post-extract-MONOLITE-on: ${MKDIR} ${WRKSRC}/mcs/class/lib/monolite-linux ${MV} ${WRKDIR}/monolite-linux-${MONOLITE_VERSION}-latest ${WRKSRC}/mcs/class/lib/monolite-linux/${MONOLITE_VERSION} post-patch: ${REINPLACE_CMD} -e 's|^#!/bin/bash|#!/usr/bin/env bash|g' \ ${WRKSRC}/scripts/mono-find-provides.in \ ${WRKSRC}/scripts/mono-find-requires.in \ ${WRKSRC}/scripts/mono-test-install ${FIND} ${WRKSRC} -name '*.sh' | ${XARGS} ${REINPLACE_CMD} \ -e 's|^#!/bin/bash|#!/bin/sh|g' ${SED} 's/tarball/${PORTVERSION}/' ${WRKSRC}/mono/mini/Makefile.am.in \ > ${WRKSRC}/mono/mini/Makefile.am ${REINPLACE_CMD} -e 's|/usr/share|${PREFIX}|g' \ ${WRKSRC}/mcs/class/corlib/System/Environment.cs \ ${WRKSRC}/external/corefx/src/System.Runtime.Extensions/src/System/Environment.Unix.cs ${REINPLACE_CMD} -e 's|/usr/share/.mono|${PREFIX}/share/mono|g' \ ${WRKSRC}/man/mono-configuration-crypto.1 \ ${WRKSRC}/man/mono.1 \ ${WRKSRC}/man/mozroots.1 post-configure: ${REINPLACE_CMD} -e 's|share\/man|man|g' \ ${WRKSRC}/mcs/jay/Makefile post-install: ${MKDIR} ${STAGEDIR}${PREFIX}/mono .include diff --git a/lang/mono5.20/files/patch-configure.ac b/lang/mono5.20/files/patch-configure.ac index 6e81b846c43a..b03bd39eca31 100644 --- a/lang/mono5.20/files/patch-configure.ac +++ b/lang/mono5.20/files/patch-configure.ac @@ -1,15 +1,41 @@ --- configure.ac.orig 2021-01-07 15:31:48 UTC +++ configure.ac -@@ -203,6 +203,12 @@ case "$host" in +@@ -203,6 +203,12 @@ libdl= libgc_threads=pthreads use_sigposix=yes + case "$host" in + aarch64-*) + support_boehm=no + with_gc=sgen + ;; + esac has_dtrace=yes with_sgen_default_concurrent=yes ;; +@@ -4001,13 +4007,10 @@ + ;; + macppc-*-openbsd* | powerpc*-*-linux* | powerpc-*-openbsd* | \ + powerpc-*-sysv* | powerpc-*-darwin* | powerpc-*-netbsd* | \ +- powerpc-*-freebsd* | powerpc*-*-aix* | powerpc*-*-os400* ) ++ powerpc*-*-freebsd* | powerpc*-*-aix* | powerpc*-*-os400* ) + if test "x$ac_cv_sizeof_void_p" = "x8"; then + TARGET=POWERPC64; + CPPFLAGS="$CPPFLAGS -D__mono_ppc__ -D__mono_ppc64__" +- if ! (echo $CC | grep -q -- 'clang'); then +- CFLAGS="$CFLAGS -mminimal-toc" +- fi + else + TARGET=POWERPC; + CPPFLAGS="$CPPFLAGS -D__mono_ppc__" +@@ -4022,6 +4025,10 @@ + dnl we may hardcode 64-bit names at times, but we don't do 32-bit AIX, so + LIBC="libc.a(shr_64.o)" + INTL="libintl.a(libintl.so.8)" ++ ;; ++ freebsd*) ++ BTLS_SUPPORTED=yes ++ BTLS_PLATFORM=powerpc + ;; + linux*) + BTLS_SUPPORTED=yes diff --git a/lang/mono5.20/files/patch-mono_utils_mono-sigcontext.h b/lang/mono5.20/files/patch-mono_utils_mono-sigcontext.h index d021fe548ad4..a91a78ec32f8 100644 --- a/lang/mono5.20/files/patch-mono_utils_mono-sigcontext.h +++ b/lang/mono5.20/files/patch-mono_utils_mono-sigcontext.h @@ -1,16 +1,31 @@ --- mono/utils/mono-sigcontext.h.orig 2018-07-11 23:51:16 UTC +++ mono/utils/mono-sigcontext.h -@@ -460,6 +460,13 @@ typedef struct ucontext { - #define UCONTEXT_REG_SP(ctx) (((ucontext64_t*)(ctx))->uc_mcontext64->__ss.__sp) - #define UCONTEXT_REG_R0(ctx) (((ucontext64_t*)(ctx))->uc_mcontext64->__ss.__x [ARMREG_R0]) - #define UCONTEXT_GREGS(ctx) (&(((ucontext64_t*)(ctx))->uc_mcontext64->__ss.__x)) +@@ -363,10 +363,10 @@ + #elif defined(__FreeBSD__) + typedef ucontext_t os_ucontext; + +- #define UCONTEXT_REG_Rn(ctx, n) ((ctx)->uc_mcontext.mc_gpr [(n)]) +- #define UCONTEXT_REG_FPRn(ctx, n) ((ctx)->uc_mcontext.mc_fpreg [(n)]) +- #define UCONTEXT_REG_NIP(ctx) ((ctx)->uc_mcontext.mc_srr0) +- #define UCONTEXT_REG_LNK(ctx) ((ctx)->uc_mcontext.mc_lr) ++ #define UCONTEXT_REG_Rn(ctx, n) (((os_ucontext*)(ctx))->uc_mcontext.mc_gpr [(n)]) ++ #define UCONTEXT_REG_FPRn(ctx, n) (((os_ucontext*)(ctx))->uc_mcontext.mc_fpreg [(n)]) ++ #define UCONTEXT_REG_NIP(ctx) (((os_ucontext*)(ctx))->uc_mcontext.mc_srr0) ++ #define UCONTEXT_REG_LNK(ctx) (((os_ucontext*)(ctx))->uc_mcontext.mc_lr) + #elif defined(_AIX) + typedef ucontext_t os_ucontext; + +@@ -467,6 +467,13 @@ + #define UCONTEXT_REG_SP(ctx) (((ucontext64_t*)(ctx))->uc_mcontext64->__ss.__sp) + #define UCONTEXT_REG_R0(ctx) (((ucontext64_t*)(ctx))->uc_mcontext64->__ss.__x [ARMREG_R0]) + #define UCONTEXT_GREGS(ctx) (&(((ucontext64_t*)(ctx))->uc_mcontext64->__ss.__x)) +#elif defined(__FreeBSD__) +#include + /* https://lists.freebsd.org/pipermail/freebsd-arm/2017-February/015611.html */ + #define UCONTEXT_REG_PC(ctx) (((ucontext_t*)(ctx))->uc_mcontext.mc_gpregs.gp_elr) + #define UCONTEXT_REG_SP(ctx) (((ucontext_t*)(ctx))->uc_mcontext.mc_gpregs.gp_sp) + #define UCONTEXT_REG_R0(ctx) (((ucontext_t*)(ctx))->uc_mcontext.mc_gpregs.gp_x [ARMREG_R0]) + #define UCONTEXT_GREGS(ctx) (&(((ucontext_t*)(ctx))->uc_mcontext.mc_gpregs.gp_x)) #else #include - #define UCONTEXT_REG_PC(ctx) (((ucontext_t*)(ctx))->uc_mcontext.pc) + #define UCONTEXT_REG_PC(ctx) (((ucontext_t*)(ctx))->uc_mcontext.pc)