git: ed11420d6b20 - main - lang/mono6.8: Invoke CPU_COUNT properly

From: Cy Schubert <cy_at_FreeBSD.org>
Date: Thu, 09 Dec 2021 21:20:19 UTC
The branch main has been updated by cy:

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

commit ed11420d6b20eb3d10774633f70eae87c1b6e1e9
Author:     Cy Schubert <cy@FreeBSD.org>
AuthorDate: 2021-12-09 20:33:07 +0000
Commit:     Cy Schubert <cy@FreeBSD.org>
CommitDate: 2021-12-09 20:37:13 +0000

    lang/mono6.8: Invoke CPU_COUNT properly
    
    9e02e52115e43c5c5ec3d971c9100c3cf322b726 did not include a patch to
    configure.ac that allowed it to properly detect CPU_COUNT.
    
    Fixes:          2e52115e43c5c5ec3d971c9100c3cf322b726
    MFH:            2021Q4
---
 lang/mono6.8/files/patch-mono_configure.ac | 407 ++---------------------------
 1 file changed, 25 insertions(+), 382 deletions(-)

diff --git a/lang/mono6.8/files/patch-mono_configure.ac b/lang/mono6.8/files/patch-mono_configure.ac
index a16f27f313d5..26a1b2863413 100644
--- a/lang/mono6.8/files/patch-mono_configure.ac
+++ b/lang/mono6.8/files/patch-mono_configure.ac
@@ -1,56 +1,28 @@
-# Upstreamed for next release
-# PR#19234
-# PR#18578
---- configure.ac.orig	2020-03-15 16:11:23.394519000 -0400
-+++ configure.ac	2020-03-16 14:50:08.458816000 -0400
-@@ -2299,108 +2299,100 @@
+--- configure.ac.orig	2020-05-11 11:05:34.000000000 -0700
++++ configure.ac	2021-12-09 11:17:20.499137000 -0800
+@@ -2279,7 +2279,8 @@
+ 	dnl *** won't always indicate the interface sched_affinity has.  ***
+ 	dnl ****************************************************************
+ 	AC_MSG_CHECKING(for sched_setaffinity from glibc < 2.3.4)
+-	AC_TRY_COMPILE([#include <sched.h>], [
++	AC_TRY_COMPILE([#define _WITH_CPU_SET_T
++#include <sched.h>], [
+             int mask = 1; 
+             sched_setaffinity(0, &mask);
+ 	], [
+@@ -2290,8 +2291,9 @@
  		# We have the new, three-parameter version
  		AC_MSG_RESULT(no)
  	])
- 
- 	dnl ******************************************************************
- 	dnl *** Check for large file support                               ***
- 	dnl *** (If we were using autoconf 2.50 we'd use AC_SYS_LARGEFILE) ***
- 	dnl ******************************************************************
- 	
- 	# Check that off_t can represent 2**63 - 1 correctly, working around
- 	# potential compiler bugs.  Defines LARGE_FILE_SUPPORT, adds $1 to
- 	# CPPFLAGS and sets $large_offt to yes if the test succeeds
- 	large_offt=no
- 	AC_DEFUN([LARGE_FILES], [
- 		large_CPPFLAGS=$CPPFLAGS
- 		CPPFLAGS="$CPPFLAGS $1"
- 		AC_TRY_COMPILE([
- 			#include <sys/types.h>
- 			#include <limits.h>
- 		], [
- 			/* Lifted this compile time assert method from: http://www.jaggersoft.com/pubs/CVu11_3.html */
- 			#define COMPILE_TIME_ASSERT(pred) \
- 				switch(0){case 0:case pred:;}
- 			COMPILE_TIME_ASSERT(sizeof(off_t) * CHAR_BIT == 64);
- 		], [
- 			AC_MSG_RESULT(ok)
- 			AC_DEFINE(HAVE_LARGE_FILE_SUPPORT, 1, [Have large file support])
- 			large_CPPFLAGS="$large_CPPFLAGS $1"
- 			large_offt=yes
- 		], [
- 			AC_MSG_RESULT(no)
- 		])
- 		CPPFLAGS=$large_CPPFLAGS
- 	])
- 
- 	AC_MSG_CHECKING(if off_t is 64 bits wide)
- 	LARGE_FILES("")
- 	if test $large_offt = no; then
- 		AC_MSG_CHECKING(if _FILE_OFFSET_BITS=64 gives 64 bit off_t)
- 		LARGE_FILES("-D_FILE_OFFSET_BITS=64")
- 	fi
- 	if test $large_offt = no; then
- 		AC_MSG_WARN([No 64 bit file size support available])
- 	fi
- 	
- 	dnl *****************************
- 	dnl *** Checks for libsocket  ***
+-	AC_TRY_COMPILE([#include <sched.h>], [
+-	     CPU_COUNT((void *) 0);
++	AC_TRY_COMPILE([#define _WITH_CPU_SET_T
++#include <sched.h>], [
++	     CPU_COUNT((cpuset_t *) 0);
+ 	], [
+ 		AC_MSG_RESULT(yes)
+ 		AC_DEFINE(GLIBC_HAS_CPU_COUNT, 1, [GLIBC has CPU_COUNT macro in sched.h])
+@@ -2346,14 +2348,6 @@
  	dnl *****************************
  	AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket")
  
@@ -65,101 +37,7 @@
  	dnl *******************************
  	dnl *** Checks for MSG_NOSIGNAL ***
  	dnl *******************************
- 	AC_MSG_CHECKING(for MSG_NOSIGNAL)
- 	AC_TRY_COMPILE([#include <sys/socket.h>], [
- 		int f = MSG_NOSIGNAL;
- 	], [
- 		# Yes, we have it...
- 		AC_MSG_RESULT(yes)
- 		AC_DEFINE(HAVE_MSG_NOSIGNAL, 1, [Have MSG_NOSIGNAL])
- 	], [
- 		# We'll have to use signals
- 		AC_MSG_RESULT(no)
- 	])
- 
- 	dnl *****************************
- 	dnl *** Checks for IPPROTO_IP ***
- 	dnl *****************************
- 	AC_MSG_CHECKING(for IPPROTO_IP)
- 	AC_TRY_COMPILE([#include <netinet/in.h>], [
- 		int level = IPPROTO_IP;
- 	], [
- 		# Yes, we have it...
- 		AC_MSG_RESULT(yes)
- 		AC_DEFINE(HAVE_IPPROTO_IP, 1, [Have IPPROTO_IP])
- 	], [
- 		# We'll have to use getprotobyname
- 		AC_MSG_RESULT(no)
- 	])
- 
- 	dnl *******************************
- 	dnl *** Checks for IPPROTO_IPV6 ***
- 	dnl *******************************
- 	AC_MSG_CHECKING(for IPPROTO_IPV6)
- 	AC_TRY_COMPILE([#include <netinet/in.h>], [
- 		int level = IPPROTO_IPV6;
- 	], [
- 		# Yes, we have it...
- 		AC_MSG_RESULT(yes)
- 		AC_DEFINE(HAVE_IPPROTO_IPV6, 1, [Have IPPROTO_IPV6])
- 	], [
- 		# We'll have to use getprotobyname
- 		AC_MSG_RESULT(no)
- 	])
- 
- 	dnl ******************************
- 	dnl *** Checks for IPPROTO_TCP ***
- 	dnl ******************************
- 	AC_MSG_CHECKING(for IPPROTO_TCP)
- 	AC_TRY_COMPILE([#include <netinet/in.h>], [
-@@ -3572,100 +3564,131 @@
- 	# HAVE_MACH_TIMEBASE_INFO check already done above
- 	# HAVE_FUTIMES check already done above
- 	# HAVE_FUTIMENS check already done above
- 
- 	ORIG_CFLAGS="$CFLAGS"
- 	CFLAGS="$CFLAGS -Werror=sign-conversion"
- 
- 	AC_MSG_CHECKING(for bind with unsigned addrlen)
- 	AC_TRY_LINK([
- 		#include <sys/socket.h>
- 	], [
- 		int fd;
- 		struct sockaddr* addr;
- 		socklen_t addrLen;
- 		bind(fd, addr, addrLen);
- 	],[
- 		AC_MSG_RESULT(yes)
- 		AC_DEFINE(BIND_ADDRLEN_UNSIGNED, 1, [bind with unsigned addrlen])
- 	], [
- 		AC_MSG_RESULT(no)
- 	])
- 
- 	AC_MSG_CHECKING(for struct ipv6_mreq with unsigned ipv6mr_interface)
- 	AC_TRY_LINK([
- 		#include <netinet/in.h>
- 		#include <netinet/tcp.h>
- 	], [
- 		struct ipv6_mreq opt;
- 		unsigned int index = 0;
- 		opt.ipv6mr_interface = index;
- 	],[
- 		AC_MSG_RESULT(yes)
- 		AC_DEFINE(IPV6MR_INTERFACE_UNSIGNED, 1, [struct ipv6_mreq with unsigned ipv6mr_interface])
- 	], [
- 		AC_MSG_RESULT(no)
- 	])
- 
- 	AC_MSG_CHECKING(for inotify_rm_watch with unsigned wd)
- 	AC_TRY_LINK([
- 		#include <sys/inotify.h>
- 	], [
- 		intptr_t fd;
- 		uint32_t wd;
- 		int result = inotify_rm_watch(fd, wd);
- 	],[
- 		AC_MSG_RESULT(yes)
- 		AC_DEFINE(INOTIFY_RM_WATCH_WD_UNSIGNED, 1, [inotify_rm_watch with unsigned wd])
+@@ -3619,6 +3613,37 @@
  	], [
  		AC_MSG_RESULT(no)
  	])
@@ -197,101 +75,7 @@
  
  	CFLAGS="$ORIG_CFLAGS"
  
- 	AC_MSG_CHECKING(for shm_open that works well enough with mmap)
- 	if test "x$ac_cv_func_shm_open" = "xno" -o "x$ac_cv_func_shm_open_working_with_mmap" = "xno" ; then
- 		AC_MSG_RESULT(no)
- 	elif test "x$cross_compiling" = "xyes"; then
- 		AC_MSG_RESULT(cross compiling, assuming yes)
- 		AC_DEFINE(HAVE_SHM_OPEN_THAT_WORKS_WELL_ENOUGH_WITH_MMAP, 1, [shm_open that works well enough with mmap])
- 	else
- 		AC_TRY_RUN([
- 			#include <sys/mman.h>
- 			#include <fcntl.h>
- 			#include <unistd.h>
- 
- 			int main ()
- 			{
- 			#ifdef __PASE__
- 				/* IBM i doesn't implement this and returns SIGILL */
- 				return -1;
- 			#endif
- 				int fd = shm_open("/mono_configure_shm_open", O_CREAT | O_RDWR, 0777);
- 				if (fd == -1)
- 					return -1;
- 
- 				shm_unlink("/mono_configure_shm_open");
- 
- 				// NOTE: PROT_EXEC and MAP_PRIVATE don't work well with shm_open
- 				//       on at least the current version of Mac OS X
- 
- 				if (mmap(NULL, 1, PROT_EXEC, MAP_PRIVATE, fd, 0) == MAP_FAILED)
- 					return -1;
- 
- 				return 0;
- 			}
- 		],[
- 			AC_MSG_RESULT(yes)
- 			AC_DEFINE(HAVE_SHM_OPEN_THAT_WORKS_WELL_ENOUGH_WITH_MMAP, 1, [shm_open that works well enough with mmap])
- 		], [
- 			AC_MSG_RESULT(no)
- 		])
- 	fi
- 
- 	AC_MSG_CHECKING(for getpriority with int who)
- 	AC_TRY_LINK([
- 		#include <sys/resource.h>
- 	], [
- 		int which;
- 		int who;
- 		int result = getpriority(which, who);
-@@ -4418,107 +4441,121 @@
- 			BTLS_PLATFORM=x86_64
- 			boehm_supported=false
- 			;;
- 		  openbsd*|freebsd*|kfreebsd-gnu*)
- 			AOT_SUPPORTED="yes"
- 			BTLS_SUPPORTED=yes
- 			BTLS_PLATFORM=x86_64
- 			;;
- 		  mingw*|cygwin*)
- 			BTLS_SUPPORTED=no
- 			BTLS_PLATFORM=x86_64
- 			;;
- 		esac
- 		;;
- 	sparc*-*-*)
- 		if test "x$ac_cv_sizeof_void_p" = "x8"; then
- 		   TARGET=SPARC64
- 		else
- 			TARGET=SPARC
- 		fi
- 		arch_target=sparc;
- 		ACCESS_UNALIGNED="no"
- 		case $host_os in
- 		  linux*) ;;
- 		  *)
- 			LIBC="libc.so"
- 			INTL="libintl.so"
- 		esac
- 		if test x"$GCC" = xyes; then
- 			# We don't support v8 cpus
- 			CFLAGS="$CFLAGS -Wno-cast-align -mcpu=v9"
- 		fi
- 		if test x"$AR" = xfalse; then
- 			AC_MSG_ERROR([The required utility 'ar' is not found in your PATH. Usually it can be found in /usr/ccs/bin.])
- 		fi
- 		;;
- 	*-mingw*|*-*-cygwin*)
- 		# When this is enabled, it leads to very strange crashes at runtime (gcc-3.4.4)
- 		have_visibility_hidden=no
- 		INTL="intl"
- 		case "$host" in
- 			x86_64*mingw*)
- 				# Old Boehm fails to compile for x86_64-mingw.
- 				# It is trivial to fix, but just silently drop it.
- 				boehm_supported=false
- 				;;
- 		esac
+@@ -4465,13 +4490,27 @@
  		;;
  	macppc-*-openbsd* | powerpc*-*-linux* | powerpc-*-openbsd* | \
          powerpc-*-sysv* | powerpc-*-darwin* | powerpc-*-netbsd* | \
@@ -323,101 +107,7 @@
  		else
  			TARGET=POWERPC;
  			CPPFLAGS="$CPPFLAGS -D__mono_ppc__"
- 		fi
- 		arch_target=ppc;
- 		case $host_os in
- 		  aix*|os400*)
- 			BTLS_SUPPORTED=yes
- 			BTLS_PLATFORM=powerpc
- 			;;
- 		  linux*)
- 			BTLS_SUPPORTED=yes
- 			BTLS_PLATFORM=powerpc
- 			;;
- 		esac
- 		;;
- 	armv7k-*-darwin*)
- 		TARGET=ARM;
- 		TARGET_SYS=WATCHOS
- 		arch_target=arm;
- 		arm_fpu=VFP_HARD
- 		ACCESS_UNALIGNED="no"
- 		CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
- 		;;
- 
- 	arm*-darwin*)
- 		TARGET=ARM;
- 		arch_target=arm;
- 		ACCESS_UNALIGNED="no"
- 		CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
- 		;;
- 	arm*-linux*)
- 		TARGET=ARM;
- 		arch_target=arm;
- 		ACCESS_UNALIGNED="no"
- 		AOT_SUPPORTED="yes"
- 		CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
- 		BTLS_SUPPORTED=yes
- 		BTLS_PLATFORM=arm
- 		AC_CHECK_HEADER(stdalign.h,[],[BTLS_SUPPORTED=no])
- 		case "$target" in
- 		arm*-linux*-gnueabi)
- 			BTLS_PLATFORM=armsoft
- 			;;
- 		esac
- 		;;
- 	arm*-netbsd*-eabi*)
- 		TARGET=ARM;
- 		arch_target=arm;
- 		ACCESS_UNALIGNED="no"
-@@ -6441,103 +6478,103 @@
- 	MONO_NATIVE_CC=$CC
- 	MONO_NATIVE_CXX=$CXX
- 	MONO_NATIVE_CCASFLAGS=$CCASFLAGS
- 	# The system.native code uses _WASM_ to check for wasm
- 	MONO_NATIVE_CPPFLAGS="$CPPFLAGS -D_WASM_"
- 	MONO_NATIVE_CXXFLAGS=$CXXFLAGS
- 	MONO_NATIVE_CFLAGS=$CFLAGS
- 	MONO_NATIVE_LDFLAGS=$LDFLAGS
- 
- 	mono_native=yes
- 	mono_native_compat=no
- 	MONO_NATIVE_PLATFORM=linux
- 
- 	MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_LINUX"
- elif case $host_os in aix*|os400*) true;; *) false;; esac; then
- 	mono_native_text="AIX"
- 	MONO_NATIVE_CC=$CC
- 	MONO_NATIVE_CXX=$CXX
- 	MONO_NATIVE_CCASFLAGS=$CCASFLAGS
- 	MONO_NATIVE_CPPFLAGS=$CPPFLAGS
- 	MONO_NATIVE_CXXFLAGS=$CXXFLAGS
- 	MONO_NATIVE_CFLAGS=$CFLAGS
- 	dnl nosymbolic- is a hack in case -G for linking is used, as -G seems
- 	dnl to change the way unresolved symbols work on library load in an
- 	dnl incompatible manner. (as references to runtime functions are
- 	dnl resolved later) Default params otherwise are that, so seems OK.
- 	dnl Likewise, we don't seem to need to cover the entire runtime with
- 	dnl it either, on both AIX and PASE. -brtl from -G does seem to spew
- 	dnl Big Scary TOC Warnings (tm) from the linker, but it doesn't seem
- 	dnl problematic with gcc's -mminimal-toc.
- 	dnl ----
- 	dnl flock in AIX exists in libbsd (not the same as freedesktop.org
- 	dnl libbsd) which Mono.Native needs.
- 	dnl Because of the way that the library is built by default, unresolved
- 	dnl references are kept and resolved at runtime. Often, the dependency
- 	dnl chain means libbsd is loaded anyways, but not necessarily. It's
- 	dnl better to explicitly link it, even though it has it shadows libc's
- 	dnl ioctl with its own. (As for the other unresolved imports, those
- 	dnl should be provided by the Mono runtime loaded.)
- 	MONO_NATIVE_LDFLAGS="$LDFLAGS -lbsd -Wl,-bnosymbolic-"
- 
- 	mono_native=yes
- 	mono_native_compat=no
- 	MONO_NATIVE_PLATFORM=aix
- 
- 	MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_AIX"
- elif case $host_os in freebsd*) true;; *) false;; esac; then
+@@ -6488,9 +6527,9 @@
  	mono_native_text="FreeBSD"
  	MONO_NATIVE_CC=$CC
  	MONO_NATIVE_CXX=$CXX
@@ -429,50 +119,3 @@
  	MONO_NATIVE_LDFLAGS=$LDFLAGS
  
  	mono_native=yes
- 	mono_native_compat=no
- 	MONO_NATIVE_PLATFORM=freebsd
- 	AC_MSG_CHECKING([Mono.Native support])
- 	AC_MSG_RESULT(freebsd)
- 
- 	MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_FREEBSD"
- elif case $host_os in netbsd*) true;; *) false;; esac; then
- 	mono_native_text="NetBSD"
- 	MONO_NATIVE_CC=$CC
- 	MONO_NATIVE_CXX=$CXX
- 	MONO_NATIVE_CPPFLAGS=$CPPFLAGS
- 	MONO_NATIVE_CXXFLAGS=$CXXFLAGS
- 	MONO_NATIVE_CFLAGS=$CFLAGS
- 	MONO_NATIVE_LDFLAGS=$LDFLAGS
- 
- 	mono_native=yes
- 	mono_native_compat=no
- 	MONO_NATIVE_PLATFORM=netbsd
- 	AC_MSG_CHECKING([Mono.Native support])
- 	AC_MSG_RESULT(netbsd)
- 
- 	MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_NETBSD"
- elif case $host_os in haiku*) true;; *) false;; esac; then
- 	mono_native_text="Haiku"
- 	MONO_NATIVE_CC=$CC
- 	MONO_NATIVE_CXX=$CXX
- 	MONO_NATIVE_CPPFLAGS=$CPPFLAGS
- 	MONO_NATIVE_CXXFLAGS=$CXXFLAGS
- 	MONO_NATIVE_CFLAGS=$CFLAGS
- 	MONO_NATIVE_LDFLAGS=$LDFLAGS
- 
- 	mono_native=yes
- 	mono_native_compat=no
- 	MONO_NATIVE_PLATFORM=haiku
- 	AC_MSG_CHECKING([Mono.Native support])
- 	AC_MSG_RESULT(haiku)
- 
- 	MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_HAIKU"
- elif test x$platform_android = xyes; then
- 	mono_native_text="Android"
- 	MONO_NATIVE_CC=$CC
- 	MONO_NATIVE_CXX=$CXX
- 	MONO_NATIVE_CPPFLAGS=$CPPFLAGS
- 	MONO_NATIVE_CXXFLAGS=$CXXFLAGS
- 	MONO_NATIVE_CFLAGS=$CFLAGS
- 	MONO_NATIVE_LDFLAGS=$LDFLAGS
- 	MONO_NATIVE_LIBADD="../mini/$LIBMONO_LA"