lang/mono6.8: Invoke CPU_COUNT properly

9e02e52115 did not include a patch to
configure.ac that allowed it to properly detect CPU_COUNT.

Fixes:		2e52115e43c5c5ec3d971c9100c3cf322b726

(cherry picked from commit ed11420d6b)
This commit is contained in:
Cy Schubert 2021-12-09 12:33:07 -08:00
parent 34d37f1862
commit cd1015b4d9

View File

@ -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"