bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Add optional silent-rules support


From: Sergey Poznyakoff
Subject: [PATCH] Add optional silent-rules support
Date: Thu, 21 May 2009 12:07:53 +0300

Hello,

How about the following patch, which adds support for `silent-rules'
mode introduced in Automake 1.11:

* build-aux/bootstrap (slurp): Add silent rule support to $gnulib_mk,
if required by the configure.ac.
---
 build-aux/bootstrap |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/build-aux/bootstrap b/build-aux/bootstrap
index 2087bab..054ad38 100755
--- a/build-aux/bootstrap
+++ b/build-aux/bootstrap
@@ -471,6 +471,51 @@ version_controlled_file() {
   test $found = yes
 }
 
+# AWK program to convert a Makefile(.am) file rules to Automake 1.11
+# silent mode.
+silent_rules_prog='
+# state = 0 - outside rules
+# state = 1 - first line inside a rule
+# state = 2 - subsequent lines inside a rule
+# cont  = 1 - this line is a continuation of the previous one
+
+# Print comment lines
+/^[ \t]*#/ { print; next }
+# Start of a rule
+/^[^ \t].*:/ { print; state = 1; cont = 0; next }
+# First action within the rule
+state == 1 && /^\t/ {
+       # Print silent rules without changes.  The second match
+       # is necessary to handle @VAR@ substitutions.
+       if (match($1, /^@/) && !match($1, /@$/))
+               print
+       else {
+               sub(/^\t[\t ]*/,"")
+               print "\t$(AM_V_GEN)" $0
+       }
+       cont = match($0, /\\$/)
+       state = 2
+       next
+}
+# All non-continuation lines within the rule are prefixed
+# with $(AM_V_at).
+state == 2 && /^\t/ && NF > 0 {
+       if (!cont) {
+               sub(/^\t[\t ]*/,"")
+               print "\t$(AM_V_at)" $0
+       } else
+               print
+       cont = match($0, /\\$/)
+       next
+}
+# Everything else is output verbatim
+{ print }'
+
+silent_rules=yes
+grep 'AM_SILENT_RULES' configure.ac > /dev/null ||
+  grep '^[     ]*AM_INIT_AUTOMAKE([^)][^)]*silent-rules' configure.ac > 
/dev/null ||
+  silent_rules=no
+
 slurp() {
   for dir in . `(cd $1 && find * -type d -print)`; do
     copied=
@@ -492,6 +537,10 @@ slurp() {
          rm -f $dir/$gnulib_mk &&
          sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
        }
+       if test "$silent_rules" = yes; then
+         awk "$silent_rules_prog" $dir/$gnulib_mk > $dir/${gnulib_mk}-t &&
+         mv $dir/${gnulib_mk}-t $dir/${gnulib_mk}
+       fi
       elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
           version_controlled_file $dir $file; then
        echo "$0: $dir/$file overrides $1/$dir/$file"
-- 
1.6.0





reply via email to

[Prev in Thread] Current Thread [Next in Thread]