From: Daniel Barclay [mailto:[EMAIL PROTECTED]
> Tim Vernum wrote:
> >
> ...
> > I have *never* seen a publically distributed project that had a
> > decent makefile.
>
> What kind of problems, or what lack of good things, are you thinking
> of?
1] It's usually very hard to follow the flow of the makefile.
2] The same options set in multiple places
eg: I'm currently hacking at some code in perl, trying to make a weird
module work.
Everytime I want to change the library path, I have to do it in 3 places.
Why?
3] Adding a new file means adding it in a thousand places
4] Wrapping it up in so much auto-conf, that you can't change it simply when
you need to.
5] Deciding that the default tools suck so much, they write a whole lot of
unexplained
shell scripts to do the compiling
6] Recursive make
7] Options spread all over the place
eg:
## Use gcc as the compiler
CC=gcc
## Uncomment this is you want regular cc
# CC=cc
## These are gcc flags, change them if you use cc,
## but make sure you always define FOOBAR
CFLAGS=-O2 -fpic -DFOOBAR
I would like to see something like:
## Set this to gcc or cc, to your wishes, and everything should work out:
CC=gcc
ifeq($CC,gcc)
CFLAGS1=-O2 -fpic
else
ifeq($CC,cc)
CFLAGS1=-O
else
error ...
endif
endif
DEFINES=-DFOOBAR
CFLAGS=$(CFLAGS1) $(DEFINES)
and GNUmake can do all of this, but people don't do it.