* Karl Berry wrote on Sat, Apr 18, 2009 at 08:57:36PM CEST:
>     Try `make SHELL="/bin/bash -vx"', that should help for all rules that
> 
> Good suggestion.  Perhaps it should be added to the manual, if you
> didn't already.

You mean like this?

Thanks,
Ralf

2009-04-18  Ralf Wildenhues  <ralf.wildenh...@gmx.de>

        manual: add FAQ `Debugging Make Rules'.
        * doc/automake.texi (Debugging Make Rules): New FAQ section.
        (Top, FAQ): Adjust menus.
        (Multiple Outputs): Add comment to restore font-lock for vim.
        Suggestion by Karl Berry.

diff --git a/doc/automake.texi b/doc/automake.texi
index 0094fa0..a931327 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -337,6 +337,7 @@ Frequently Asked Questions about Automake
 * Per-Object Flags::            How to simulate per-object flags?
 * Multiple Outputs::            Writing rules for tools with many output files
 * Hard-Coded Install Paths::    Installing to Hard-Coded Locations
+* Debugging Make Rules::        Strategies when things don't work as expected
 
 History of Automake
 
@@ -10236,6 +10237,7 @@ lists.
 * Per-Object Flags::            How to simulate per-object flags?
 * Multiple Outputs::            Writing rules for tools with many output files
 * Hard-Coded Install Paths::    Installing to Hard-Coded Locations
+* Debugging Make Rules::        Strategies when things don't work as expected
 @end menu
 
 @node CVS
@@ -11379,6 +11381,7 @@ $(ELCFILES): elc-stamp
           fi; \
         fi
 @end example
+...@c $$
 
 For completeness it should be noted that GNU @command{make} is able to
 express rules with multiple output files using pattern rules
@@ -11520,6 +11523,42 @@ expects two possible layouts, otherwise it's easy, and 
the benefits for
 non-root users are really worth the extra @command{sed} invocation.
 
 
+...@node Debugging Make Rules
+...@section Debugging Make Rules
+...@cindex debugging rules
+...@cindex rules, debugging
+
+The rules and dependency trees generated by @command{automake} can get
+rather complex, and leave the developer head-scratching when things
+don't work as expected.  Besides debug options provided by the
+...@command{make} command (@pxref{Options Summary,,, make, The GNU Make
+Manual}), here's a couple of further hints for debugging makefiles
+generated by @command{automake} effectively:
+
+...@itemize
+...@item
+If less verbose output has been enabled in the package with the
+...@samp{silent-rules} option (@pxref{Options}), you can use
+...@code{make V=1} to see the commands being executed.
+...@item
+...@code{make -n} can help show what would be done without actually doing
+it.  Note however, that this will execute commands prefixed with
+...@samp{+}, and, when using GNU @command{make}, commands that contain the
+strings @samp{$(MAKE)} or @sam...@{make@}} (@pxref{Instead of
+Execution,,, make, The GNU Make Manual}).
+Typically, this is helpful to show what recursive rules would do, but it
+means that, in your own rules, you should not mix such recursion with
+actions that change any fil...@footnote{automake's @samp{dist} and
+...@samp{distcheck} rules had a bug in this regard in that they created
+directories even with @option{-n}, but this has been fixed in Automake
+1.11.}  Furthermore, note that GNU @command{make} will update
+prerequisites for the @file{Makefile} file itself even with @option{-n}
+(@pxref{Remaking Makefiles,,, make, The GNU Make Manual}).
+...@item
+...@code{make SHELL="/bin/bash -vx"} can help debug complex rules.
+...@end itemize
+
+
 @node History
 @chapter History of Automake
 


Reply via email to