On Thu, 13 Jan 2011, Steffen Dettmer wrote:
On Thu, Jan 13, 2011 at 3:39 AM, Bob Friesenhahn
<[email protected]> wrote:
While GNU make is a really good 'make' program, I think that 'make' in
general is a flawed concept.
Could you please explain this a bit?
Make depends entirely on file timestamps and iteratively applying
various 'rules' until it finds an incantation to transform something
on disk into a target. File timestamps are not reliable. When used
with something smart like Automake the magical incantations are not
really necessary since they can be explicit from the start. Make does
not have a way to store what it did other than the resulting output
files.
What is the problem with timestamps?
Quite often, they don't work, and they are not a reliable indicator of
change. Timestamps are useful as an optimization, but a file MD5 is
much more reliable.
Where else should dependency information be stored? Of course, if
Perhaps in a project database. The only dependency information which
is arbitrary (site/build specific) is dependency on files from outside
of the project.
Do you mean that make is a good multi-purpose tool but not well
suited for C building, especially in automake environments?
Obviously, make usually works, but since automake writes the actual
rules, automake is capable of writing optimum build rules for a given
project and should not have to depend so much on implicit dependency
logic.
Bob
--
Bob Friesenhahn
[email protected], http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer, http://www.GraphicsMagick.org/