summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2016-11-03 20:03:06 -0500
committerEric Blake <eblake@redhat.com>2016-12-21 08:32:41 -0600
commitd068c0a5ac8ef095fe39b17fefe576b17fc3ab4a (patch)
tree5da1d9032c11e62575d05f65dc3ceb599022d45e /lib
parent76183791a41bf8777cbce94e1b899529dc98e124 (diff)
downloadautoconf-d068c0a5ac8ef095fe39b17fefe576b17fc3ab4a.tar.gz
AC_CHECK_FUNCS_ONCE: hoist cache name computation to m4 time
Rather than perform a sed script on each element of the $ac_func_c_list to compute the corresponding cache name, we can inline enough of AC_CHECK_FUNC to bypass the normal polymorphic code, and instead directly use the literal function name that we are consuming from the list. While at it, we can use echo instead of cat to append to confdefs.h, for another process shaved. The resulting configure script is roughly unchanged in size, but performs slightly faster. * lib/autoconf/functions.m4 (AC_CHECK_FUNC): Split out shell function registration... (_AC_CHECK_FUNC_FN): ...to here. (_AC_FUNCS_EXPANSION): Use it to inline enough of AC_CHECK_FUNC to operate on a literal rather than a shell variable, for fewer sed calls. Signed-off-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/autoconf/functions.m424
1 files changed, 17 insertions, 7 deletions
diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index b937b2cc..76824a26 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -51,17 +51,20 @@ m4_define([_AC_CHECK_FUNC_BODY],
])# _AC_CHECK_FUNC_BODY
+m4_define([_AC_CHECK_FUNC_FN],
+[AC_REQUIRE_SHELL_FN([ac_fn_]_AC_LANG_ABBREV[_check_func],
+ [AS_FUNCTION_DESCRIBE([ac_fn_]_AC_LANG_ABBREV[_check_func],
+ [LINENO FUNC VAR],
+ [Tests whether FUNC exists, setting the cache variable VAR accordingly])],
+ [_AC_CHECK_FUNC_BODY])])
+
# AC_CHECK_FUNC(FUNCTION, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
# -----------------------------------------------------------------
# Check whether FUNCTION links in the current language. Set the cache
# variable ac_cv_func_FUNCTION accordingly, then execute
# ACTION-IF-FOUND or ACTION-IF-NOT-FOUND.
AC_DEFUN([AC_CHECK_FUNC],
-[AC_REQUIRE_SHELL_FN([ac_fn_]_AC_LANG_ABBREV[_check_func],
- [AS_FUNCTION_DESCRIBE([ac_fn_]_AC_LANG_ABBREV[_check_func],
- [LINENO FUNC VAR],
- [Tests whether FUNC exists, setting the cache variable VAR accordingly])],
- [_$0_BODY])]dnl
+[_AC_CHECK_FUNC_FN()]dnl
[AS_VAR_PUSHDEF([ac_var], [ac_cv_func_$1])]dnl
[ac_fn_[]_AC_LANG_ABBREV[]_check_func "$LINENO" "$1" "ac_var"
AS_VAR_IF([ac_var], [yes], [$2], [$3])
@@ -111,14 +114,21 @@ AC_DEFUN([AC_CHECK_FUNCS_ONCE],
# _AC_FUNCS_EXPANSION(LANG)
# -------------------------
# One-shot code per language LANG for checking all functions registered by
-# AC_CHECK_FUNCS_ONCE while that language was active.
+# AC_CHECK_FUNCS_ONCE while that language was active. We have to inline
+# portions of AC_CHECK_FUNC, because although we operate on shell
+# variables, we know they represent literals at that point in time,
+# where we don't want to trigger normal AS_VAR_PUSHDEF shell code.
m4_define([_AC_FUNCS_EXPANSION],
[m4_ifndef([$0($1)], [m4_define([$0($1)])m4_divert_text([DEFAULTS],
[ac_func_$1_list=])ac_func=
for ac_item in $ac_func_$1_list
do
if test $ac_func; then
- AC_CHECK_FUNC([$ac_func], [AC_DEFINE_UNQUOTED([$ac_item])])
+ _AC_CHECK_FUNC_FN()ac_fn_$1_check_func "$LINENO" ]dnl
+[$ac_func ac_cv_func_$ac_func
+ if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then
+ echo "[#]define $ac_item 1" >> confdefs.h
+ fi
ac_func=
else
ac_func=$ac_item