]> Savannah Git Hosting - gnulib.git/commitdiff
ffs: Fix compilation error on Android.
authorBruno Haible <bruno@clisp.org>
Sun, 13 May 2018 14:13:27 +0000 (16:13 +0200)
committerBruno Haible <bruno@clisp.org>
Sun, 13 May 2018 14:35:55 +0000 (16:35 +0200)
* m4/ffs.m4 (gl_FUNC_FFS): Use AC_LINK_IFELSE instead of AC_CHECK_FUNC.

ChangeLog
m4/ffs.m4

index 181a08c2da00a855c716990e1b689245b41f5b81..3943da8e69b645321c9510081e1276d1381e9686 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-05-13  Bruno Haible  <bruno@clisp.org>
+
+       ffs: Fix compilation error on Android.
+       * m4/ffs.m4 (gl_FUNC_FFS): Use AC_LINK_IFELSE instead of AC_CHECK_FUNC.
+
 2018-05-13  Bruno Haible  <bruno@clisp.org>
 
        mkfifo: Fix compilation error on Android.
index 252e6f665ec41856bcf641254a8301111d064a05..78b13ee685f10f41caa21e4dd39aadae9b71d8bf 100644 (file)
--- a/m4/ffs.m4
+++ b/m4/ffs.m4
@@ -1,4 +1,4 @@
-# ffs.m4 serial 2
+# ffs.m4 serial 3
 dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -7,8 +7,21 @@ dnl with or without modifications, as long as this notice is preserved.
 AC_DEFUN([gl_FUNC_FFS],
 [
   AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
-  AC_CHECK_FUNCS_ONCE([ffs])
-  if test $ac_cv_func_ffs = no; then
+
+  dnl We can't use AC_CHECK_FUNC here, because ffs() is defined as a
+  dnl static inline function when compiling for Android 4.2 or older.
+  AC_CACHE_CHECK([for ffs], [gl_cv_func_ffs],
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <strings.h>
+            int x;
+          ]],
+          [[return ffs(x);]])
+       ],
+       [gl_cv_func_ffs=yes],
+       [gl_cv_func_ffs=no])
+    ])
+  if test $gl_cv_func_ffs = no; then
     HAVE_FFS=0
   fi
 ])