Improve detection of `fdatasync(2)`
authorHerbert Valerio Riedel <hvr@gnu.org>
Wed, 16 Dec 2015 16:28:40 +0000 (17:28 +0100)
committerHerbert Valerio Riedel <hvr@gnu.org>
Wed, 16 Dec 2015 16:33:53 +0000 (17:33 +0100)
This attempts a simpler and hopefully more robust test for `fdatasync(2)`

See 94d8824bae10c9d91f56c1aee9c45a90136a1770 / #42 for the previous attempt.

This hopefully addresses #52 in a better way than #53

changelog.md
configure.ac

index e5733c2..e9c4ece 100644 (file)
@@ -9,6 +9,8 @@
   * Turn build error into compile warnings for exotic `struct stat`
     configurations (GHC #8859).
 
+  * Improve detection of `fdatasync(2)` (GHC #11137)
+
 ## 2.7.1.0  *Dec 2014*
 
   * Bundled with GHC 7.10.1
index c363e10..24ea3a5 100644 (file)
@@ -71,23 +71,12 @@ AC_CHECK_FUNCS([mkstemps mkdtemp])
 # Functions for file synchronization and allocation control
 AC_CHECK_FUNCS([fsync])
 
-# A more comprehensive check that fdatasync exits
-# Necessary for platforms that have fdatasync in headers but have no
-# implementation
-dnl Originally provided by user copiousfreetime for the beanstalkd project
-dnl {{{ make sure that fdatasync exits
-AC_CACHE_CHECK([for fdatasync],[ac_cv_func_fdatasync],[
-  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#include <unistd.h>
-]],[[
-fdatasync(4);
-]])],
-[ac_cv_func_fdatasync=yes],
-[ac_cv_func_fdatasync=no])
-])
-AS_IF([test "x${ac_cv_func_fdatasync}" = "xyes"],
- [AC_DEFINE([HAVE_FDATASYNC],[1],[If the system defines fdatasync])])
-dnl }}}
+# On OSX linking against 'fdatasync' succeeds, but that doesn't pick
+# the expected the POSIX 'fdatasync' function.  So make sure that we
+# also have a function declaration in scope, in addition to being able
+# to link against 'fdatasync'.
+AC_CHECK_DECLS([fdatasync],[AC_CHECK_FUNCS([fdatasync])])
+
 
 AC_CHECK_FUNCS([posix_fadvise posix_fallocate])