build: work around lack of MacOS fdatasync

Mingw lacks fsync, but gnulib provides that.  Meanwhile, gnulib does
not (yet) provide fdatasync, so this is a quick hack to fake that
function on MacOS X; we can revert this configure change once gnulib
gives us a real module.

We have been implicitly relying on gnulib's largefile module being
pulled in by other modules, but it's better to make that explicit.

* bootstrap.conf (gnulib_modules): Add fsync.  Make largefile use
explicit.
* configure.ac (AC_CHECK_FUNCS_ONCE): Check for fdatasync, and
fake it with fsync when not present.
This commit is contained in:
Eric Blake 2011-09-16 09:12:07 -06:00
parent 8e44e5593e
commit 1726a736fb
2 changed files with 6 additions and 1 deletions

View File

@ -42,6 +42,7 @@ fcntl
fcntl-h fcntl-h
ffs ffs
fnmatch fnmatch
fsync
func func
getaddrinfo getaddrinfo
getcwd-lgpl getcwd-lgpl
@ -57,6 +58,7 @@ ignore-value
inet_pton inet_pton
intprops intprops
ioctl ioctl
largefile
listen listen
maintainer-makefile maintainer-makefile
manywarnings manywarnings

View File

@ -135,9 +135,12 @@ AC_CHECK_SIZEOF([long])
dnl Availability of various common functions (non-fatal if missing), dnl Availability of various common functions (non-fatal if missing),
dnl and various less common threadsafe functions dnl and various less common threadsafe functions
AC_CHECK_FUNCS_ONCE([cfmakeraw geteuid getgid getgrnam_r getmntent_r \ AC_CHECK_FUNCS_ONCE([cfmakeraw fdatasync geteuid getgid getgrnam_r getmntent_r \
getpwuid_r getuid initgroups kill mmap posix_fallocate posix_memalign \ getpwuid_r getuid initgroups kill mmap posix_fallocate posix_memalign \
regexec sched_getaffinity]) regexec sched_getaffinity])
if test $ac_cv_func_fdatasync = no; then
AC_DEFINE([fdatasync], [fsync], [Define to fsync if you lack fdatasync])
fi
dnl Availability of pthread functions (if missing, win32 threading is dnl Availability of pthread functions (if missing, win32 threading is
dnl assumed). Because of $LIB_PTHREAD, we cannot use AC_CHECK_FUNCS_ONCE. dnl assumed). Because of $LIB_PTHREAD, we cannot use AC_CHECK_FUNCS_ONCE.