diff options
-rw-r--r-- | lib/replace/libreplace.m4 | 1 | ||||
-rw-r--r-- | lib/replace/replace.h | 2 | ||||
-rw-r--r-- | lib/replace/wscript | 5 |
3 files changed, 7 insertions, 1 deletions
diff --git a/lib/replace/libreplace.m4 b/lib/replace/libreplace.m4 index 0d716e0abe..3dd64ef8b8 100644 --- a/lib/replace/libreplace.m4 +++ b/lib/replace/libreplace.m4 @@ -115,6 +115,7 @@ AC_CHECK_FUNCS(fdatasync,,[ [libreplace_cv_HAVE_FDATASYNC_IN_LIBRT=yes AC_DEFINE(HAVE_FDATASYNC, 1, Define to 1 if there is support for fdatasync)]) ]) +AC_HAVE_DECL(fdatasync, [#include <unistd.h>]) AC_CHECK_FUNCS(clock_gettime,libreplace_cv_have_clock_gettime=yes,[ AC_CHECK_LIB(rt, clock_gettime, [libreplace_cv_HAVE_CLOCK_GETTIME_IN_LIBRT=yes diff --git a/lib/replace/replace.h b/lib/replace/replace.h index 8fde16c52d..10c7ee701c 100644 --- a/lib/replace/replace.h +++ b/lib/replace/replace.h @@ -756,6 +756,8 @@ char *ufc_crypt(const char *key, const char *salt); #ifndef HAVE_FDATASYNC #define fdatasync(fd) fsync(fd) +#elif !defined(HAVE_DECL_FDATASYNC) +int fdatasync(int ); #endif /* these are used to mark symbols as local to a shared lib, or diff --git a/lib/replace/wscript b/lib/replace/wscript index fef366317c..a3cde2bcc8 100644 --- a/lib/replace/wscript +++ b/lib/replace/wscript @@ -173,7 +173,10 @@ def configure(conf): conf.CHECK_C_PROTOTYPE('dlopen', 'void *dlopen(const char* filename, unsigned int flags)', define='DLOPEN_TAKES_UNSIGNED_FLAGS', headers='dlfcn.h dl.h') - conf.CHECK_FUNCS_IN('fdatasync', 'rt', checklibc=True) + if conf.CHECK_FUNCS_IN('fdatasync', 'rt', checklibc=True): + # some systems are missing the declaration + conf.CHECK_DECLS('fdatasync') + conf.CHECK_FUNCS_IN('clock_gettime', 'rt', checklibc=True) # these headers need to be tested as a group on freebsd |