MFH: r560789

lang/mono5.20: fix build on aarch64

PR:		229710
Submitted by:	Greg V greg@unrelenting.technology
Approved by:	portmgr (tier-2 blanket)
This commit is contained in:
Mikael Urankar 2021-01-08 16:23:35 +00:00
parent 4ad695943a
commit c946b172f4
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/branches/2021Q1/; revision=560790
7 changed files with 156 additions and 39 deletions

View File

@ -14,7 +14,7 @@ COMMENT= Open source implementation of .NET Development Framework
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
ONLY_FOR_ARCHS= amd64 armv6 armv7 i386 powerpc
ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc
BUILD_DEPENDS= p5-XML-Parser>=0:textproc/p5-XML-Parser \
bash:shells/bash \
@ -66,6 +66,15 @@ PORTSCOUT= limit:^\d+\.\d+\.[1-9]\d*
OPTIONS_SLAVE= MONOLITE
.endif
.include <bsd.port.pre.mk>
.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}
@ -94,4 +103,4 @@ post-configure:
post-install:
${MKDIR} ${STAGEDIR}${PREFIX}/mono
.include <bsd.port.mk>
.include <bsd.port.post.mk>

View File

@ -0,0 +1,24 @@
Workaround for Roslyn crash: https://github.com/mono/mono/issues/7017
--- mcs/build/profiles/basic.make.orig 2018-07-12 00:08:27 UTC
+++ mcs/build/profiles/basic.make
@@ -47,7 +47,7 @@ LIBRARY_COMPILE = $(BOOT_COMPILE)
#
# Copy from rules.make because I don't know how to unset MCS_FLAGS
#
-USE_MCS_FLAGS = /codepage:$(CODEPAGE) /nologo /noconfig /deterministic $(LOCAL_MCS_FLAGS) $(PLATFORM_MCS_FLAGS) $(PROFILE_MCS_FLAGS) $(MCS_FLAGS)
+USE_MCS_FLAGS = /codepage:$(CODEPAGE) /parallel- /nologo /noconfig /deterministic $(LOCAL_MCS_FLAGS) $(PLATFORM_MCS_FLAGS) $(PROFILE_MCS_FLAGS) $(MCS_FLAGS)
.PHONY: profile-check do-profile-check
profile-check:
--- mcs/build/rules.make.orig 2018-07-12 00:09:18.508196000 +0000
+++ mcs/build/rules.make 2018-07-12 00:12:13.875877000 +0000
@@ -34,7 +34,7 @@
endif
endif
-USE_MCS_FLAGS = /codepage:$(CODEPAGE) /nologo /noconfig /deterministic $(LOCAL_MCS_FLAGS) $(PLATFORM_MCS_FLAGS) $(PROFILE_MCS_FLAGS) $(MCS_FLAGS)
+USE_MCS_FLAGS = /codepage:$(CODEPAGE) /parallel- /nologo /noconfig /deterministic $(LOCAL_MCS_FLAGS) $(PLATFORM_MCS_FLAGS) $(PROFILE_MCS_FLAGS) $(MCS_FLAGS)
USE_MBAS_FLAGS = /codepage:$(CODEPAGE) $(LOCAL_MBAS_FLAGS) $(PLATFORM_MBAS_FLAGS) $(PROFILE_MBAS_FLAGS) $(MBAS_FLAGS)
USE_CFLAGS = $(LOCAL_CFLAGS) $(CFLAGS) $(CPPFLAGS)
CSCOMPILE = $(Q_MCS) $(MCS) $(USE_MCS_FLAGS)

View File

@ -0,0 +1,15 @@
--- configure.ac.orig 2021-01-07 15:31:48 UTC
+++ configure.ac
@@ -203,6 +203,12 @@ case "$host" in
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
;;

View File

@ -0,0 +1,42 @@
--- external/boringssl/crypto/cpu-aarch64-linux.c.orig 2018-08-24 17:17:16 UTC
+++ external/boringssl/crypto/cpu-aarch64-linux.c
@@ -25,7 +25,32 @@
extern uint32_t OPENSSL_armcap_P;
+#if defined(__FreeBSD__)
+#include <sys/types.h>
+#include <machine/armreg.h>
+
void OPENSSL_cpuid_setup(void) {
+ uint64_t id_aa64isar0;
+
+ id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1);
+
+ OPENSSL_armcap_P |= ARMV7_NEON;
+
+ if (ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_BASE) {
+ OPENSSL_armcap_P |= ARMV8_AES;
+ }
+ if (ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) {
+ OPENSSL_armcap_P |= ARMV8_PMULL;
+ }
+ if (ID_AA64ISAR0_SHA1_VAL(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE) {
+ OPENSSL_armcap_P |= ARMV8_SHA1;
+ }
+ if(ID_AA64ISAR0_SHA2_VAL(id_aa64isar0) == ID_AA64ISAR0_SHA2_BASE) {
+ OPENSSL_armcap_P |= ARMV8_SHA256;
+ }
+}
+#else // linux
+void OPENSSL_cpuid_setup(void) {
unsigned long hwcap = getauxval(AT_HWCAP);
/* See /usr/include/asm/hwcap.h on an aarch64 installation for the source of
@@ -57,5 +82,6 @@ void OPENSSL_cpuid_setup(void) {
OPENSSL_armcap_P |= ARMV8_SHA256;
}
}
+#endif
#endif /* OPENSSL_AARCH64 && !OPENSSL_STATIC_ARMCAP */

View File

@ -0,0 +1,11 @@
--- mono/sgen/sgen-archdep.h.orig 2018-07-11 23:55:34 UTC
+++ mono/sgen/sgen-archdep.h
@@ -45,7 +45,7 @@
#elif defined(TARGET_ARM64)
-#ifdef __linux__
+#if defined(__linux__) || defined(__FreeBSD__)
#define REDZONE_SIZE 0
#elif defined(__APPLE__)
#define REDZONE_SIZE 128

View File

@ -0,0 +1,16 @@
--- 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))
+#elif defined(__FreeBSD__)
+#include <ucontext.h>
+ /* 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 <ucontext.h>
#define UCONTEXT_REG_PC(ctx) (((ucontext_t*)(ctx))->uc_mcontext.pc)

View File

@ -43,7 +43,7 @@ bin/mod
bin/mono
bin/mono-api-html
bin/mono-api-info
bin/mono-boehm
%%BOEHM%%bin/mono-boehm
bin/mono-cil-strip
bin/mono-configuration-crypto
bin/mono-find-provides
@ -172,10 +172,10 @@ lib/libmono-profiler-log.a
lib/libmono-profiler-log.so
lib/libmono-profiler-log.so.0
lib/libmono-profiler-log.so.0.0.0
lib/libmonoboehm-2.0.a
lib/libmonoboehm-2.0.so
lib/libmonoboehm-2.0.so.1
lib/libmonoboehm-2.0.so.1.0.0
%%BOEHM%%lib/libmonoboehm-2.0.a
%%BOEHM%%lib/libmonoboehm-2.0.so
%%BOEHM%%lib/libmonoboehm-2.0.so.1
%%BOEHM%%lib/libmonoboehm-2.0.so.1.0.0
lib/libmonosgen-2.0.a
lib/libmonosgen-2.0.so
lib/libmonosgen-2.0.so.1
@ -3198,38 +3198,38 @@ man/man1/xbuild.1.gz
man/man1/xsd.1.gz
man/man5/mdoc.5.gz
man/man5/mono-config.5.gz
share/libgc-mono/README
share/libgc-mono/README.DGUX386
share/libgc-mono/README.Mac
share/libgc-mono/README.MacOSX
share/libgc-mono/README.OS2
share/libgc-mono/README.amiga
share/libgc-mono/README.arm.cross
share/libgc-mono/README.autoconf
share/libgc-mono/README.changes
share/libgc-mono/README.contributors
share/libgc-mono/README.cords
share/libgc-mono/README.darwin
share/libgc-mono/README.dj
share/libgc-mono/README.environment
share/libgc-mono/README.ews4800
share/libgc-mono/README.hp
share/libgc-mono/README.linux
share/libgc-mono/README.macros
share/libgc-mono/README.rs6000
share/libgc-mono/README.sgi
share/libgc-mono/README.solaris2
share/libgc-mono/README.uts
share/libgc-mono/README.win32
share/libgc-mono/barrett_diagram
share/libgc-mono/debugging.html
share/libgc-mono/gc.man
share/libgc-mono/gcdescr.html
share/libgc-mono/gcinterface.html
share/libgc-mono/leak.html
share/libgc-mono/scale.html
share/libgc-mono/simple_example.html
share/libgc-mono/tree.html
%%BOEHM%%share/libgc-mono/README
%%BOEHM%%share/libgc-mono/README.DGUX386
%%BOEHM%%share/libgc-mono/README.Mac
%%BOEHM%%share/libgc-mono/README.MacOSX
%%BOEHM%%share/libgc-mono/README.OS2
%%BOEHM%%share/libgc-mono/README.amiga
%%BOEHM%%share/libgc-mono/README.arm.cross
%%BOEHM%%share/libgc-mono/README.autoconf
%%BOEHM%%share/libgc-mono/README.changes
%%BOEHM%%share/libgc-mono/README.contributors
%%BOEHM%%share/libgc-mono/README.cords
%%BOEHM%%share/libgc-mono/README.darwin
%%BOEHM%%share/libgc-mono/README.dj
%%BOEHM%%share/libgc-mono/README.environment
%%BOEHM%%share/libgc-mono/README.ews4800
%%BOEHM%%share/libgc-mono/README.hp
%%BOEHM%%share/libgc-mono/README.linux
%%BOEHM%%share/libgc-mono/README.macros
%%BOEHM%%share/libgc-mono/README.rs6000
%%BOEHM%%share/libgc-mono/README.sgi
%%BOEHM%%share/libgc-mono/README.solaris2
%%BOEHM%%share/libgc-mono/README.uts
%%BOEHM%%share/libgc-mono/README.win32
%%BOEHM%%share/libgc-mono/barrett_diagram
%%BOEHM%%share/libgc-mono/debugging.html
%%BOEHM%%share/libgc-mono/gc.man
%%BOEHM%%share/libgc-mono/gcdescr.html
%%BOEHM%%share/libgc-mono/gcinterface.html
%%BOEHM%%share/libgc-mono/leak.html
%%BOEHM%%share/libgc-mono/scale.html
%%BOEHM%%share/libgc-mono/simple_example.html
%%BOEHM%%share/libgc-mono/tree.html
%%NLS%%share/locale/de/LC_MESSAGES/mcs.mo
%%NLS%%share/locale/es/LC_MESSAGES/mcs.mo
%%NLS%%share/locale/ja/LC_MESSAGES/mcs.mo