summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac9
-rw-r--r--cont.c3
2 files changed, 10 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index 4b495371d4..7ec11478f5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1108,6 +1108,15 @@ main()
])
])
AC_CHECK_TYPES([caddr_t],[],[],[@%:@include <sys/types.h>])
+ RUBY_WERROR_FLAG([AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ @%:@if defined(HAVE_CADDR_T) && (defined(MADV_FREE) || defined(MADV_DONTNEED))
+ @%:@include <sys/unistd.h>
+ @%:@include <sys/mman.h>
+ @%:@include <sys/types.h>
+ extern int madvise(caddr_t, size_t, int);
+ ]], [[]])],
+ [AC_DEFINE(NEED_MADVICE_PROTOTYPE_USING_CADDR_T, 1)], [])
+ ])
],
[haiku*], [
LIBS="$LIBS" # m lib is include in root
diff --git a/cont.c b/cont.c
index 2af7971a9a..290be43012 100644
--- a/cont.c
+++ b/cont.c
@@ -18,8 +18,7 @@
// On Solaris, madvise() is NOT declared for SUS (XPG4v2) or later,
// but MADV_* macros are defined when __EXTENSIONS__ is defined.
-#if defined(__sun) && defined(HAVE_CADDR_T) && \
- (defined(MADV_FREE) || defined(MADV_DONTNEED))
+#ifdef NEED_MADVICE_PROTOTYPE_USING_CADDR_T
#include <sys/types.h>
extern int madvise(caddr_t, size_t, int);
#endif