summaryrefslogtreecommitdiffstats
path: root/m4/fdatasync.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/fdatasync.m4')
-rw-r--r--m4/fdatasync.m457
1 files changed, 57 insertions, 0 deletions
diff --git a/m4/fdatasync.m4 b/m4/fdatasync.m4
new file mode 100644
index 0000000..17cf64c
--- /dev/null
+++ b/m4/fdatasync.m4
@@ -0,0 +1,57 @@
+# fdatasync.m4 serial 9
+dnl Copyright (C) 2008-2023 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FDATASYNC],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ dnl Using AC_CHECK_FUNCS_ONCE would break our subsequent AC_SEARCH_LIBS
+ AC_CHECK_DECLS_ONCE([fdatasync])
+ FDATASYNC_LIB=
+ AC_SUBST([FDATASYNC_LIB])
+
+ if test $ac_cv_have_decl_fdatasync = no; then
+ HAVE_DECL_FDATASYNC=0
+ dnl Mac OS X 10.7 has fdatasync but does not declare it.
+ dnl Likewise Android with API level < 9.
+ gl_CHECK_FUNCS_ANDROID([fdatasync], [[#include <unistd.h>]])
+ if test $ac_cv_func_fdatasync = no; then
+ HAVE_FDATASYNC=0
+ case "$gl_cv_onwards_func_fdatasync" in
+ future*) REPLACE_FDATASYNC=1 ;;
+ esac
+ fi
+ else
+ case "$host_os" in
+ solaris*)
+ dnl Solaris <= 2.6 has fdatasync() in libposix4.
+ dnl Solaris 7..9 has it in librt.
+ dnl Solaris 10 sometimes has it in librt <https://bugs.gnu.org/21059>.
+ gl_saved_libs=$LIBS
+ AC_SEARCH_LIBS([fdatasync], [rt posix4],
+ [test "$ac_cv_search_fdatasync" = "none required" ||
+ FDATASYNC_LIB=$ac_cv_search_fdatasync])
+ LIBS=$gl_saved_libs
+ ;;
+ *)
+ dnl Android 4.3 does not have fdatasync but declares it, and future
+ dnl Android versions have it.
+ gl_CHECK_FUNCS_ANDROID([fdatasync], [[#include <unistd.h>]])
+ if test $ac_cv_func_fdatasync = no; then
+ HAVE_FDATASYNC=0
+ case "$gl_cv_onwards_func_fdatasync" in
+ future*) REPLACE_FDATASYNC=1 ;;
+ esac
+ fi
+ ;;
+ esac
+ fi
+
+ dnl For backward compatibility.
+ LIB_FDATASYNC="$FDATASYNC_LIB"
+ AC_SUBST([LIB_FDATASYNC])
+])