git: 756e364d8611 - main - lang/mono5.20: port to powerpc64

From: Piotr Kubaj <pkubaj_at_FreeBSD.org>
Date: Wed, 06 Oct 2021 21:07:27 UTC
The branch main has been updated by pkubaj:

URL: https://cgit.FreeBSD.org/ports/commit/?id=756e364d86114622cbb1b3b9e572e4c2e85f6cb6

commit 756e364d86114622cbb1b3b9e572e4c2e85f6cb6
Author:     Piotr Kubaj <pkubaj@FreeBSD.org>
AuthorDate: 2021-10-06 20:52:48 +0000
Commit:     Piotr Kubaj <pkubaj@FreeBSD.org>
CommitDate: 2021-10-06 20:52:48 +0000

    lang/mono5.20: port to powerpc64
    
    Same as lang/mono, except that BTLS is enabled.
---
 lang/mono5.20/Makefile                             |  8 ++++++-
 lang/mono5.20/files/patch-configure.ac             | 28 +++++++++++++++++++++-
 .../files/patch-mono_utils_mono-sigcontext.h       | 25 +++++++++++++++----
 3 files changed, 54 insertions(+), 7 deletions(-)

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
@@ -13,7 +13,7 @@ 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 \
@@ -65,6 +65,12 @@ PORTSCOUT=	limit:^\d+\.\d+\.[1-9]\d*
 OPTIONS_SLAVE=	MONOLITE
 .endif
 
+.include <bsd.port.options.mk>
+
+.if ${ARCH:Mpowerpc*}
+PLIST+=	${.CURDIR}/pkg-plist.powerpc
+.endif
+
 .include <bsd.port.pre.mk>
 
 .if ${ARCH} == "aarch64"
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,6 +1,6 @@
 --- 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
@@ -13,3 +13,29 @@
  		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,9 +1,24 @@
 --- 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 <ucontext.h>
 +	/* https://lists.freebsd.org/pipermail/freebsd-arm/2017-February/015611.html */
@@ -13,4 +28,4 @@
 +	#define UCONTEXT_GREGS(ctx) (&(((ucontext_t*)(ctx))->uc_mcontext.mc_gpregs.gp_x))
  #else
  #include <ucontext.h>
-	#define UCONTEXT_REG_PC(ctx) (((ucontext_t*)(ctx))->uc_mcontext.pc)
+ 	#define UCONTEXT_REG_PC(ctx) (((ucontext_t*)(ctx))->uc_mcontext.pc)