[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: debugging feature for recursive rules
From: |
Ralf Wildenhues |
Subject: |
Re: debugging feature for recursive rules |
Date: |
Sun, 19 Apr 2009 13:05:34 +0200 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
Hi Karl,
* Karl Berry wrote on Sun, Apr 19, 2009 at 12:02:15AM CEST:
> Very good. Minor comments:
Thanks for the review. I fixed all the comments, and also added a cross
reference to the Autoconf manual about quirks with `make SHELL=...', and
committed the patch like this.
Cheers,
Ralf
manual: add FAQ `Debugging Make Rules'.
* doc/automake.texi (Debugging Make Rules): New FAQ section.
(Top, FAQ): Adjust menus, and capitalization of the description
of the `Hard-Coded Install Paths' node.
(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..860b745 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -336,7 +336,8 @@ Frequently Asked Questions about Automake
* Renamed Objects:: Why are object files sometimes renamed?
* 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
+* Hard-Coded Install Paths:: Installing to hard-coded locations
+* Debugging Make Rules:: Strategies when things don't work as expected
History of Automake
@@ -10235,7 +10236,8 @@ lists.
* Renamed Objects:: Why are object files sometimes renamed?
* 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
+* 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
address@hidden $$
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,44 @@ expects two possible layouts, otherwise it's easy, and
the benefits for
non-root users are really worth the extra @command{sed} invocation.
address@hidden Debugging Make Rules
address@hidden Debugging Make Rules
address@hidden debugging rules
address@hidden 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 the debug options provided by the
address@hidden command (@pxref{Options Summary,,, make, The GNU Make
+Manual}), here's a couple of further hints for debugging makefiles
+generated by @command{automake} effectively:
+
address@hidden
address@hidden
+If less verbose output has been enabled in the package with the
address@hidden option (@pxref{Options}), you can use
address@hidden V=1} to see the commands being executed.
address@hidden
address@hidden -n} can help show what would be done without actually doing
+it. Note however, that this will @emph{still execute} commands prefixed
+with @samp{+}, and, when using GNU @command{make}, commands that contain
+the strings @samp{$(MAKE)} or @address@hidden@}} (@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 address@hidden's @samp{dist} and
address@hidden 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}).
address@hidden
address@hidden SHELL="/bin/bash -vx"} can help debug complex rules.
address@hidden Make Macro SHELL,,, autoconf, The Autoconf Manual}, for some
+portability quirks associated with this construct.
address@hidden itemize
+
+
@node History
@chapter History of Automake