mkfifo: Fix compilation error on Android.
authorBruno Haible <bruno@clisp.org>
Sun, 13 May 2018 14:08:56 +0000 (16:08 +0200)
committerBruno Haible <bruno@clisp.org>
Sun, 13 May 2018 14:35:54 +0000 (16:35 +0200)
* m4/mkfifo.m4 (gl_FUNC_MKFIFO): Use AC_LINK_IFELSE instead of
AC_CHECK_FUNC.

ChangeLog
m4/mkfifo.m4

index bb1f4c29736e489dffbacda7564612a13d10d961..181a08c2da00a855c716990e1b689245b41f5b81 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-05-13  Bruno Haible  <bruno@clisp.org>
+
+       mkfifo: Fix compilation error on Android.
+       * m4/mkfifo.m4 (gl_FUNC_MKFIFO): Use AC_LINK_IFELSE instead of
+       AC_CHECK_FUNC.
+
 2018-05-13  Bruno Haible  <bruno@clisp.org>
 
        c-strtod: Fix configure test for Android.
index 13c516429687b3d9ca5f161097b49ff846f81f42..5dda67c38973e10be0bb9c096ce0c26e09123b0e 100644 (file)
@@ -1,4 +1,4 @@
-# serial 5
+# serial 6
 # See if we need to provide mkfifo replacement.
 
 dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
@@ -12,8 +12,19 @@ AC_DEFUN([gl_FUNC_MKFIFO],
 [
   AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CHECK_FUNCS_ONCE([mkfifo])
-  if test $ac_cv_func_mkfifo = no; then
+
+  dnl We can't use AC_CHECK_FUNC here, because mkfifo() is defined as a
+  dnl static inline function when compiling for Android 4.4 or older.
+  AC_CACHE_CHECK([for mkfifo], [gl_cv_func_mkfifo],
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <sys/stat.h>]],
+          [[return mkfifo("/",0);]])
+       ],
+       [gl_cv_func_mkfifo=yes],
+       [gl_cv_func_mkfifo=no])
+    ])
+  if test $gl_cv_func_mkfifo = no; then
     HAVE_MKFIFO=0
   else
     dnl Check for Solaris 9 and FreeBSD bug with trailing slash.