Add a check for sys/sysctrl.h, which has been declared deprecated,

and which may not be available (in the future) on some systems.
This commit is contained in:
Holger Vogt 2021-08-25 11:48:21 +02:00
parent 3b245ddd82
commit 3f322e1954
3 changed files with 7 additions and 5 deletions

View File

@ -1304,6 +1304,8 @@ fi
# Use AC_CHECK_HEADERS so the HAVE_*_H symbol gets defined
AC_CHECK_HEADERS([ncurses/termcap.h termcap.h])
AC_CHECK_HEADERS([sys/sysctl.h])
# --enable-openmp: Use OpenMP on multi-core processors
AC_ARG_ENABLE([openmp],

View File

@ -15,7 +15,7 @@
#include <unistd.h>
#include <sys/types.h>
#include <sys/param.h>
#if defined(BSD)
#if defined(BSD) && defined(HAVE_SYS_SYSCTL_H)
#include <sys/sysctl.h>
#endif
#if defined(__APPLE__) && defined(__MACH__)
@ -91,7 +91,7 @@ unsigned long long getAvailableMemorySize(void)
/* Linux/UNIX variants. ------------------------------------------- */
/* Prefer sysctl() over sysconf() except sysctl() HW_REALMEM and HW_PHYSMEM */
#if defined(CTL_HW) && (defined(HW_MEMSIZE) || defined(HW_PHYSMEM64))
#if defined(CTL_HW) && (defined(HW_MEMSIZE) || defined(HW_PHYSMEM64)) && defined(HAVE_SYS_SYSCTL_H)
int mib[2];
mib[0] = CTL_HW;
#if defined(HW_MEMSIZE)
@ -119,7 +119,7 @@ unsigned long long getAvailableMemorySize(void)
return (size_t)sysconf( _SC_PHYS_PAGES ) *
(size_t)sysconf( _SC_PAGE_SIZE );
#elif defined(CTL_HW) && (defined(HW_PHYSMEM) || defined(HW_REALMEM))
#elif defined(CTL_HW) && (defined(HW_PHYSMEM) || defined(HW_REALMEM)) && defined(HAVE_SYS_SYSCTL_H)
/* DragonFly BSD, FreeBSD, NetBSD, OpenBSD, and OSX. -------- */
int mib[2];
mib[0] = CTL_HW;

View File

@ -17,7 +17,7 @@
#include <unistd.h>
#include <sys/types.h>
#include <sys/param.h>
#if defined(BSD)
#if defined(BSD) && defined(HAVE_SYS_SYSCTL_H)
#include <sys/sysctl.h>
#endif
@ -98,7 +98,7 @@ unsigned long long getMemorySize(void)
return (unsigned long long) sysconf(_SC_PHYS_PAGES) *
(unsigned long long) sysconf(_SC_PAGE_SIZE);
#elif defined(CTL_HW) && (defined(HW_PHYSMEM) || defined(HW_REALMEM))
#elif defined(CTL_HW) && (defined(HW_PHYSMEM) || defined(HW_REALMEM)) && defined(HAVE_SYS_SYSCTL_H)
/* DragonFly BSD, FreeBSD, NetBSD, OpenBSD, and OSX. -------- */
int mib[2];
mib[0] = CTL_HW;