>From 2afc250c6fae929b95e8b8915b17379cd9f2e450 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 13 May 2018 16:13:27 +0200 Subject: [PATCH 5/9] ffs: Fix compilation error on Android. * m4/ffs.m4 (gl_FUNC_FFS): Use AC_LINK_IFELSE instead of AC_CHECK_FUNC. --- ChangeLog | 5 +++++ m4/ffs.m4 | 19 ++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 181a08c..3943da8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2018-05-13 Bruno Haible + 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 + mkfifo: Fix compilation error on Android. * m4/mkfifo.m4 (gl_FUNC_MKFIFO): Use AC_LINK_IFELSE instead of AC_CHECK_FUNC. diff --git a/m4/ffs.m4 b/m4/ffs.m4 index 252e6f6..78b13ee 100644 --- 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 + 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 ]) -- 2.7.4