diff --git a/configure.ac b/configure.ac index ac737f6cc8..da65b16ccc 100644 --- a/configure.ac +++ b/configure.ac @@ -2732,14 +2732,11 @@ main(int argc, char *argv[]) test x$rb_cv_fork_with_pthread = xyes || AC_DEFINE(CANNOT_FORK_WITH_PTHREAD) ]) -AS_CASE([$target_os], - [darwin*], [ac_cv_header_sys_user_h=no], dnl LIST_HEAD conflicts with sys/queue.h - [AC_CHECK_HEADERS([sys/user.h])] -) -AS_IF([test "x$ac_cv_func_mmap:$ac_cv_header_sys_user_h" = xyes:yes], [ +AC_CHECK_HEADERS([sys/user.h]) +AS_IF([test "x$ac_cv_func_mmap" = xyes], [ AC_CACHE_CHECK([whether PAGE_SIZE is compile-time const], rb_cv_const_page_size, - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - @%:@include + [malloc_headers=`sed -n '/MALLOC_HEADERS_BEGIN/,/MALLOC_HEADERS_END/p' ${srcdir}/gc.c` + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$malloc_headers typedef char conftest_page[PAGE_SIZE]; ]], [[]])], [rb_cv_const_page_size=yes], diff --git a/gc.c b/gc.c index 365210b377..8b36b6c2f1 100644 --- a/gc.c +++ b/gc.c @@ -32,6 +32,7 @@ #include #include +/* MALLOC_HEADERS_BEGIN */ #ifndef HAVE_MALLOC_USABLE_SIZE # ifdef _WIN32 # define HAVE_MALLOC_USABLE_SIZE @@ -54,6 +55,12 @@ # endif #endif +#if !defined(PAGE_SIZE) && defined(HAVE_SYS_USER_H) +/* LIST_HEAD conflicts with sys/queue.h on macOS */ +# include +#endif +/* MALLOC_HEADERS_END */ + #ifdef HAVE_SYS_TIME_H # include #endif @@ -71,10 +78,6 @@ #include -#ifdef HAVE_SYS_USER_H -# include -#endif - #ifdef __EMSCRIPTEN__ #include #endif