aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac16
-rw-r--r--m4/tuklib_cpucores.m431
-rw-r--r--m4/tuklib_physmem.m450
3 files changed, 61 insertions, 36 deletions
diff --git a/configure.ac b/configure.ac
index 82a7b1f9..aa05ba4c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -681,3 +681,19 @@ AC_CONFIG_FILES([
])
AC_OUTPUT
+
+# Some warnings
+if test x$tuklib_cv_physmem_method = xunknown; then
+ echo
+ echo "WARNING:"
+ echo "No supported method to detect the amount of RAM."
+ echo "Consider using --enable-assume-ram (if you didn't already)"
+ echo "or make a patch to add support for this operating system."
+fi
+
+# Not threading yet so don't warn.
+#if test x$tuklib_cv_cpucores_method = xunknown; then
+# echo
+# echo "WARNING:"
+# echo "No supported method to detect the number of CPU cores."
+#fi
diff --git a/m4/tuklib_cpucores.m4 b/m4/tuklib_cpucores.m4
index 9058d445..bb33c6f4 100644
--- a/m4/tuklib_cpucores.m4
+++ b/m4/tuklib_cpucores.m4
@@ -25,7 +25,8 @@ AC_REQUIRE([TUKLIB_COMMON])
# sys/param.h might be needed by sys/sysctl.h.
AC_CHECK_HEADERS([sys/param.h])
-AC_MSG_CHECKING([how to detect the number of available CPU cores])
+AC_CACHE_CHECK([how to detect the number of available CPU cores],
+ [tuklib_cv_cpucores_method], [
# Look for sysctl() solution first, because on OS/2, both sysconf()
# and sysctl() pass the tests in this file, but only sysctl()
@@ -45,12 +46,7 @@ main(void)
sysctl(name, 2, &cpus, &cpus_size, NULL, 0);
return 0;
}
-]])], [
- AC_DEFINE([TUKLIB_CPUCORES_SYSCTL], [1],
- [Define to 1 if the number of available CPU cores can be
- detected with sysctl().])
- AC_MSG_RESULT([sysctl])
-], [
+]])], [tuklib_cv_cpucores_method=sysctl], [
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#include <unistd.h>
@@ -62,11 +58,20 @@ main(void)
return 0;
}
]])], [
- AC_DEFINE([TUKLIB_CPUCORES_SYSCONF], [1],
- [Define to 1 if the number of available CPU cores can be
- detected with sysconf(_SC_NPROCESSORS_ONLN).])
- AC_MSG_RESULT([sysconf])
+ tuklib_cv_cpucores_method=sysconf
], [
- AC_MSG_RESULT([unknown])
-])])
+ tuklib_cv_cpucores_method=unknown
+])])])
+case $tuklib_cv_cpucores_method in
+ sysctl)
+ AC_DEFINE([TUKLIB_CPUCORES_SYSCTL], [1],
+ [Define to 1 if the number of available CPU cores
+ can be detected with sysctl().])
+ ;;
+ sysconf)
+ AC_DEFINE([TUKLIB_CPUCORES_SYSCONF], [1],
+ [Define to 1 if the number of available CPU cores
+ can be detected with sysconf(_SC_NPROCESSORS_ONLN).])
+ ;;
+esac
])dnl
diff --git a/m4/tuklib_physmem.m4 b/m4/tuklib_physmem.m4
index 91e3dc56..59a645a4 100644
--- a/m4/tuklib_physmem.m4
+++ b/m4/tuklib_physmem.m4
@@ -35,7 +35,8 @@ AC_REQUIRE([TUKLIB_COMMON])
# sys/param.h might be needed by sys/sysctl.h.
AC_CHECK_HEADERS([sys/param.h])
-AC_MSG_CHECKING([how to detect the amount of physical memory])
+AC_CACHE_CHECK([how to detect the amount of physical memory],
+ [tuklib_cv_physmem_method], [
# Maybe checking $host_os would be enough but this matches what
# tuklib_physmem.c does.
@@ -46,9 +47,7 @@ int main(void) { return 0; }
#else
#error
#endif
-]])], [
- AC_MSG_RESULT([special])
-], [
+]])], [tuklib_cv_physmem_method=special], [
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#include <unistd.h>
@@ -60,12 +59,7 @@ main(void)
i = sysconf(_SC_PHYS_PAGES);
return 0;
}
-]])], [
- AC_DEFINE([TUKLIB_PHYSMEM_SYSCONF], [1],
- [Define to 1 if the amount of physical memory can be detected
- with sysconf(_SC_PAGESIZE) and sysconf(_SC_PHYS_PAGES).])
- AC_MSG_RESULT([sysconf])
-], [
+]])], [tuklib_cv_physmem_method=sysconf], [
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#include <sys/types.h>
@@ -82,12 +76,7 @@ main(void)
sysctl(name, 2, &mem, &mem_ptr_size, NULL, 0);
return 0;
}
-]])], [
- AC_DEFINE([TUKLIB_PHYSMEM_SYSCTL], [1],
- [Define to 1 if the amount of physical memory can be detected
- with sysctl().])
- AC_MSG_RESULT([sysctl])
-], [
+]])], [tuklib_cv_physmem_method=sysctl], [
# This version of sysinfo() is Linux-specific. Some non-Linux systems have
# different sysinfo() so we must check $host_os.
@@ -103,17 +92,32 @@ main(void)
return 0;
}
]])], [
- AC_DEFINE([TUKLIB_PHYSMEM_SYSINFO], [1],
- [Define to 1 if the amount of physical memory
- can be detected with Linux sysinfo().])
- AC_MSG_RESULT([sysinfo])
+ tuklib_cv_physmem_method=sysinfo
], [
- AC_MSG_RESULT([unknown])
+ tuklib_cv_physmem_method=unknown
])
;;
*)
- AC_MSG_RESULT([unknown])
+ tuklib_cv_physmem_method=unknown
+ ;;
+esac
+])])])])
+case $tuklib_cv_physmem_method in
+ sysconf)
+ AC_DEFINE([TUKLIB_PHYSMEM_SYSCONF], [1],
+ [Define to 1 if the amount of physical memory can
+ be detected with sysconf(_SC_PAGESIZE) and
+ sysconf(_SC_PHYS_PAGES).])
+ ;;
+ sysctl)
+ AC_DEFINE([TUKLIB_PHYSMEM_SYSCTL], [1],
+ [Define to 1 if the amount of physical memory can
+ be detected with sysctl().])
+ ;;
+ sysinfo)
+ AC_DEFINE([TUKLIB_PHYSMEM_SYSINFO], [1],
+ [Define to 1 if the amount of physical memory
+ can be detected with Linux sysinfo().])
;;
esac
-])])])
])dnl