On Thu, Jan 13, 2011 at 3:39 AM, Bob Friesenhahn <bfrie...@simple.dallas.tx.us> 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? I like the `make' concept; in some situations I even love it. One example of such a situation is to create statistics from productive log files. This is an incremental, time consuming process. I wrote the stats script in Makefile language (starting with a shebang line). Intermediate results are stored as files (an automatic cache). The process is very time consuming but thanks to make, it can be aborted and restarted at any time (just the current file action is lost). When restarted later, only the new files are processed etc. The Makefile is very simple, it just has the rules for each step, no need to worry how to get this in the right order, no need to worry about parallelization or where to continue after interruption. It just works. (this has no relation to automake of course). > If there was going to be a revolutionary change, then I would > like to see a small embedded build engine be included which > accomplishes the few functionalities needed from make, but also > avoids needing additional programs. I think the need for small dedicated additional programs often is very useful, because by using the simple building blocks, quickly complex solutions can be constructed, even if no one ever had a related requirement ever. In contrast to let's say "ant", a build tool popular in Java world, does this differently. This is good for platform-independent java building, but has IMHO serious disadvantages and IMHO the big problem that it can do only "what was built-in in advance". You can create .jar files but you cannot use source code generation or even use some other packager to bzip2 some output result in the end. Even compiling-in a version number can become tricky. (Trying to build C code with ant seems to be a bad idea anyway). Surely I'm not capable to use ant correctly. Maybe a future version of automake creates an efficient GNUMakefile and a less efficient but more portable Makefile at the same time, leaving it up to the user to select which one to use. > A little bit of analysis will reveal that Automake really does > not require much functionality from 'make'. Probably 5% of > what GNU 'make' is capable of. I don't like it that 'make' > depends on file timestamps, and that it is unable to cache what > was used to create the current binary, and that dependency > information from the build system needs to be cached in 'make' > include files. What is the problem with timestamps? I don't like that ant does not depend on timestamps (leading to rebuilt jars, resigning, which takes time and needs entropy etc). Where else should dependency information be stored? Of course, if you would have a special make-replacement dedicated (limited?) to C building, it could be "smart", but I'm afraid the "smart" things fail more often that the "simple" things. I think the dependency issue arises from a kind of lazyness (generate the deps automatically instead of writing them explicitely). To save that for C code, there are tools for it (gcc -M). Do you mean that make is a good multi-purpose tool but not well suited for C building, especially in automake environments? oki, Steffen