From: Eric Blake Date: Fri, 7 Nov 2008 14:11:01 +0000 (-0700) Subject: Avoid some regex uses. X-Git-Tag: v2.63b~116 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=40f1a994e2fd550f18d1dddb1fb4f53eb3cdaecc;p=thirdparty%2Fautoconf.git Avoid some regex uses. * lib/autoconf/general.m4 (_AC_DEFINE_Q): Use m4_format rather than m4_bpatsubst to grab string prefix. * lib/autoconf/status.m4 (_AC_CONFIG_REGISTER) (_AC_CONFIG_REGISTER_DEST, AC_CONFIG_SUBDIRS): Likewise. (_AC_FILE_DEPENDENCY_TRACE_COLON): Use m4_translit instead of m4_bpatsubst to change bytes. (_AC_CONFIG_DEPENDENCY_DEFAULT): Use m4_index rather than m4_bmatch to find byte. (_AC_CONFIG_COMPUTE_DEST): New helper macro. Signed-off-by: Eric Blake --- diff --git a/ChangeLog b/ChangeLog index 35c0c656e..d8c6c42f1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2008-11-10 Eric Blake + Avoid some regex uses. + * lib/autoconf/general.m4 (_AC_DEFINE_Q): Use m4_format rather + than m4_bpatsubst to grab string prefix. + * lib/autoconf/status.m4 (_AC_CONFIG_REGISTER) + (_AC_CONFIG_REGISTER_DEST, AC_CONFIG_SUBDIRS): Likewise. + (_AC_FILE_DEPENDENCY_TRACE_COLON): Use m4_translit instead of + m4_bpatsubst to change bytes. + (_AC_CONFIG_DEPENDENCY_DEFAULT): Use m4_index rather than + m4_bmatch to find byte. + (_AC_CONFIG_COMPUTE_DEST): New helper macro. + Use more efficient macros in AC_CONFIG_SUBDIRS. * lib/autoconf/status.m4 (_AC_CONFIG_FOOS, AC_CONFIG_SUBDIRS): Use m4_map_args_w. diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4 index 6fdff9dfd..2c184fc4d 100644 --- a/lib/autoconf/general.m4 +++ b/lib/autoconf/general.m4 @@ -2073,22 +2073,22 @@ m4_define([AC_DEFINE_UNQUOTED], [_AC_DEFINE_Q([], $@)]) # ----------------------------------------------------- # Internal function that performs common elements of AC_DEFINE{,_UNQUOTED}. # -# m4_index is roughly 5 to 8 times faster than m4_bpatsubst, so only -# use the regex when necessary. AC_name is defined with over-quotation, -# so that we can avoid m4_defn. +# m4_index is roughly 5 to 8 times faster than m4_bpatsubst, so we use +# m4_format rather than regex to grab prefix up to first (). AC_name +# is defined with over-quotation, so that we can avoid m4_defn; this +# is only safe because the name should not contain $. m4_define([_AC_DEFINE_Q], -[m4_pushdef([AC_name], m4_if(m4_index([$2], [(]), [-1], [[[$2]]], - [m4_bpatsubst([[[$2]]], [(.*)])]))dnl -AC_DEFINE_TRACE(AC_name)dnl -m4_cond([m4_index([$3], [ +[m4_pushdef([AC_name], m4_format([[[%.*s]]], m4_index([$2], [(]), [$2]))]dnl +[AC_DEFINE_TRACE(AC_name)]dnl +[m4_cond([m4_index([$3], [ ])], [-1], [], [AS_LITERAL_IF([$3], [m4_bregexp([[$3]], [[^\\] ], [-])])], [], [], [m4_warn([syntax], [AC_DEFINE]m4_ifval([$1], [], [[_UNQUOTED]])dnl -[: `$3' is not a valid preprocessor define value])])dnl -m4_ifval([$4], [AH_TEMPLATE(AC_name, [$4])])dnl -m4_popdef([AC_name])dnl -cat >>confdefs.h <<$1_ACEOF +[: `$3' is not a valid preprocessor define value])])]dnl +[m4_ifval([$4], [AH_TEMPLATE(AC_name, [$4])])]dnl +[_m4_popdef([AC_name])]dnl +[cat >>confdefs.h <<$1_ACEOF [@%:@define] $2 m4_if([$#], 2, 1, [$3], [], [/**/], [$3]) _ACEOF ]) diff --git a/lib/autoconf/status.m4 b/lib/autoconf/status.m4 index f8e046f88..388b90f26 100644 --- a/lib/autoconf/status.m4 +++ b/lib/autoconf/status.m4 @@ -176,8 +176,7 @@ m4_define([AC_FILE_DEPENDENCY_TRACE], []) # Declare that DEST depends upon SOURCE1 etc. # m4_define([_AC_FILE_DEPENDENCY_TRACE_COLON], -[AC_FILE_DEPENDENCY_TRACE(m4_bpatsubst([$1], [:], [,]))dnl -]) +[AC_FILE_DEPENDENCY_TRACE(m4_translit([$1], [:], [,]))]) # _AC_CONFIG_DEPENDENCY(MODE, DEST[:SOURCE1...]) @@ -205,12 +204,11 @@ m4_define([_AC_CONFIG_DEPENDENCY], # (We get to this case from the obsolete AC_LINK_FILES, for example.) # m4_define([_AC_CONFIG_DEPENDENCY_DEFAULT], -[m4_bmatch([$2], [:], [], +[m4_if(m4_index([$2], [:]), [-1], [m4_if([$1], [LINKS], [AS_LITERAL_IF([$2], [m4_fatal([Invalid AC_CONFIG_LINKS tag: `$2'])])], - [:$2.in])])dnl -]) + [:$2.in])])]) # _AC_CONFIG_UNIQUE(MODE, DEST) @@ -246,6 +244,12 @@ m4_define([_AC_CONFIG_FOOS], [m4_if([$1], [COMMANDS], [$2], [m4_normalize([$2])])" ]) +# _AC_CONFIG_COMPUTE_DEST(STRING) +# ------------------------------- +# Compute the DEST from STRING by stripping any : and following +# characters. +m4_define([_AC_CONFIG_COMPUTE_DEST], +[m4_format([[%.*s]], m4_index([$1], [:]), [$1])]) # _AC_CONFIG_REGISTER(MODE, TAG, [COMMANDS]) # ------------------------------------------ @@ -254,9 +258,9 @@ m4_define([_AC_CONFIG_FOOS], m4_define([_AC_CONFIG_REGISTER], [m4_if([$1], [COMMANDS], [], - [_AC_CONFIG_DEPENDENCY([$1], [$2])])dnl -_AC_CONFIG_REGISTER_DEST([$1], [$2], m4_bpatsubst([[$2]], [:.*\(.\)$], [\1]), [$3])dnl -]) + [_AC_CONFIG_DEPENDENCY([$1], [$2])])]dnl +[_AC_CONFIG_REGISTER_DEST([$1], [$2], + _AC_CONFIG_COMPUTE_DEST([$2]), [$3])]) # _AC_CONFIG_REGISTER_DEST(MODE, TAG, DEST, [COMMANDS]) @@ -281,15 +285,14 @@ dnl Recognize TAG as an argument to config.status: dnl [m4_append([_AC_LIST_TAGS], [ "$3") CONFIG_$1="$CONFIG_$1 $2" ;; -])dnl +])]dnl dnl dnl Register the associated commands, if any: dnl -m4_ifval([$4], +[m4_ifval([$4], [m4_append([_AC_LIST_TAG_COMMANDS], -[ "$3":]m4_bpatsubst([$1], [^\(.\).*$], [\1])[) $4 ;; -])])dnl -])# _AC_CONFIG_REGISTER_DEST +[ "$3":]m4_format([[%.1s]], [$1])[) $4 ;; +])])])# _AC_CONFIG_REGISTER_DEST @@ -1101,7 +1104,7 @@ AC_DEFUN([AC_CONFIG_SUBDIRS], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])]dnl [AC_REQUIRE([AC_DISABLE_OPTION_CHECKING])]dnl [m4_map_args_w([$1], [_AC_CONFIG_UNIQUE([SUBDIRS], - m4_bpatsubst(], [, [:.*]))])]dnl + _AC_CONFIG_COMPUTE_DEST(], [))])]dnl [m4_append([_AC_LIST_SUBDIRS], [$1], [ ])]dnl [AS_LITERAL_IF([$1], [],