This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: rfc: build system


On Mon, Jan 31, 2000 at 10:48:11PM -0800, Richard Henderson wrote:
> On Mon, Jan 31, 2000 at 09:08:56PM -0800, Zack Weinberg wrote:
> > I had a much more complicated fix which got bogged down in the
> > details.  I think this makefile is actually worse than glibc's
> > Makerules, which is an achievement.
> 
> Speaking of which...  Being irritated with how poorly our build
> system works with parallel make on SMP systems, I gave the make
> system a half-hearted poke this weekend to see what level of
> effort it would be to kill the (bulk of the) recursive makes.
> 
> I'm guessing that there are a number of folks that would be rather
> pissed at gcc suddenly requiring gnu make.  My question is, what
> sort of common denominator does that leave us with functionality-wise? 
> And would folks be open to limitations in the make/configure process
> to avoid things getting overly complex?

Sometimes I wonder if we're really doing people a favor allowing them
to use vendor makes, given how buggy they all seem to be...

> For instance, one can currently run configure with no args and do
> "make LANGUAGES='c c++'".  The sanest way I can think to rework some
> of the build rules is
> 
>     lang.fe: $(foreach lang,$(LANGUAGES),$(lang).fe)
> or
>     LIB2LANG_OBJS = $(foreach lang,$(LANGUAGES),$($(lang)_LIB2LANG_OBJS))
> 
> which clearly doesn't work without some sort of macro facility in make. 
> 
> Now, this same sort of thing could instead be expanded at Makefile
> creation, at which point we aren't relying on gnu make features.  But
> at the same time, we now require "configure --enable-languages='...'"
> in order to change what builds.

I think most recent makes have the $(var:x=y) substitution notation,
so you could write

lang.fe: $(LANGUAGES:=.fe)

I'm not so sure about $(indirect_$(var)).  They definitely don't all
have an include capability, which is the thing I find myself missing
most often.

You could make a first pass by moving all the logic in the subdir
Makefile.in's into the Make-lang.in's - those get inlined into the top
level Makefile, right?

zw

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]