Quoting Ralf Wildenhues <Ralf.Wildenhues@xxxxxx>:
sed alternation \| is not portable.
I've replaced it now with a pair of substitutions. I also fixed
the ',' substitution to give yield on opening bracket for the next cast,
and to apply for all commas.
+ $[]as_decl_type
What is this variable? It doesn't seem to be defined anywhere.
Oops, that's a remnant from a previous implementation approach - I
originally intended of declaring a variable with the type of the
argument. That might work for more cases than casting 0 to the desired
type, but supporting multiple arguments would be much messier.
Attached is the updated patch. Bootstrapped & regtested on i686-pc-linux-gnu.
2010-02-17 Joern Rennecke <joern.rennecke@xxxxxxxxxxxx>
libcpp:
* aclocal (_AC_CHECK_PROTO_BODY): New shell function.
(AC_CHECK_PROTO, _AC_CHECK_PROTOS, AC_CHECK_PROTOS): New macros.
* configure.ac: Use AC_CHECK_PROTOS instead of AC_CHECK_DECLS.
* configure: Regenerate.
Index: libcpp/configure.ac
===================================================================
--- libcpp/configure.ac (revision 156598)
+++ libcpp/configure.ac (working copy)
@@ -81,8 +81,8 @@ define(libcpp_UNLOCKED_FUNCS, clearerr_u
fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
putchar_unlocked putc_unlocked)
AC_CHECK_FUNCS(libcpp_UNLOCKED_FUNCS)
-AC_CHECK_DECLS(m4_split(m4_normalize(abort asprintf basename errno getopt \
- libcpp_UNLOCKED_FUNCS vasprintf)))
+AC_CHECK_PROTOS(m4_split(m4_normalize(abort asprintf basename(char*) errno \
+ getopt libcpp_UNLOCKED_FUNCS vasprintf)))
# Checks for library functions.
AC_FUNC_ALLOCA
Index: libcpp/aclocal.m4
===================================================================
--- libcpp/aclocal.m4 (revision 156598)
+++ libcpp/aclocal.m4 (working copy)
@@ -22,3 +22,74 @@ m4_include([../config/lib-link.m4])
m4_include([../config/lib-prefix.m4])
m4_include([../config/override.m4])
m4_include([../config/warnings.m4])
+
+## ---------------------------------------------------------------- ##
+## Checking for declared symbols. ##
+## This is like *AC_CHECK_DECL*, except that for c++, we may use a ##
+## prototype to check for a (possibly overloaded) function. ##
+## ---------------------------------------------------------------- ##
+
+
+# _AC_CHECK_PROTO_BODY
+# -------------------
+# Shell function body for AC_CHECK_PROTO.
+m4_define([_AC_CHECK_PROTO_BODY],
+[ AS_LINENO_PUSH([$[]1])
+ [as_decl_name=`echo $][2|sed 's/(.*//'`]
+ [as_decl_use=`echo $][2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`]
+ AC_CACHE_CHECK([whether $as_decl_name is declared], [$[]3],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$[]4],
+[@%:@ifndef $[]as_decl_name
+@%:@ifdef __cplusplus
+ (void) $[]as_decl_use;
+@%:@else
+ (void) $[]as_decl_name;
+@%:@endif
+@%:@endif
+])],
+ [AS_VAR_SET([$[]3], [yes])],
+ [AS_VAR_SET([$[]3], [no])])])
+ AS_LINENO_POP
+])# _AC_CHECK_PROTO_BODY
+
+# AC_CHECK_PROTO(SYMBOL,
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
+# [INCLUDES = DEFAULT-INCLUDES])
+# -------------------------------------------------------
+# Check whether SYMBOL (a function, variable, or constant) is declared.
+AC_DEFUN([AC_CHECK_PROTO],
+[AC_REQUIRE_SHELL_FN([ac_fn_]_AC_LANG_ABBREV[_check_proto],
+ [AS_FUNCTION_DESCRIBE([ac_fn_]_AC_LANG_ABBREV[_check_proto],
+ [LINENO SYMBOL VAR],
+ [Tests whether SYMBOL is declared, setting cache variable VAR accordingly.])],
+ [_$0_BODY])]dnl
+[AS_VAR_PUSHDEF([ac_Symbol], [ac_cv_have_decl_$1])]dnl
+[ac_fn_[]_AC_LANG_ABBREV[]_check_proto ]dnl
+["$LINENO" "$1" "ac_Symbol" "AS_ESCAPE([AC_INCLUDES_DEFAULT([$4])], [""])"
+AS_VAR_IF([ac_Symbol], [yes], [$2], [$3])
+AS_VAR_POPDEF([ac_Symbol])dnl
+])# AC_CHECK_PROTO
+
+
+# _AC_CHECK_PROTOS(SYMBOL, ACTION-IF_FOUND, ACTION-IF-NOT-FOUND,
+# INCLUDES)
+# -------------------------------------------------------------
+# Helper to AC_CHECK_PROTOS, which generates the check for a single
+# SYMBOL with INCLUDES, performs the AC_DEFINE, then expands
+# ACTION-IF-FOUND or ACTION-IF-NOT-FOUND.
+m4_define([_AC_CHECK_PROTOS],
+[AC_CHECK_PROTO([$1], [ac_have_decl=1], [ac_have_decl=0], [$4])]dnl
+[AC_DEFINE_UNQUOTED(AS_TR_CPP(patsubst(HAVE_DECL_[$1],[(.*])), [$ac_have_decl],
+ [Define to 1 if you have the declaration of `$1',
+ and to 0 if you don't.])]dnl
+[m4_ifvaln([$2$3], [AS_IF([test $ac_have_decl = 1], [$2], [$3])])])
+
+# AC_CHECK_PROTOS(SYMBOLS,
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
+# [INCLUDES = DEFAULT-INCLUDES])
+# --------------------------------------------------------
+# Defines HAVE_DECL_SYMBOL to 1 if declared, 0 otherwise. See the
+# documentation for a detailed explanation of this difference with
+# other AC_CHECK_*S macros. SYMBOLS is an m4 list.
+AC_DEFUN([AC_CHECK_PROTOS],
+[m4_map_args_sep([_$0(], [, [$2], [$3], [$4])], [], $1)])
_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
http://lists.gnu.org/mailman/listinfo/autoconf