Re: test10-pre7

Peter Samuelson
2000-10-31T12:00:42Z

[Linus]
> In short, we should _remove_ all traces of stuff like
>
> O_OBJS = $(filter-out $(export-objs), $(obj-y))
>
> It's wrong.
>
> We should just have
>
> O_OBJS = $(obj-y)
>
> which is always right.

This part I agree with..

> And it should make all this FIRST/LAST object file mockery a total
> non-issue, because the whole concept turns out to be completely
> unnecessary.
>
> Is there anything that makes this more complex than what I've
> outlined above?

One thing. The main benefit of $(sort), which I haven't heard you
address yet, is to remove duplicate files. Think about 8390.o, and how
many net drivers require it. There are two ways to handle this:

obj-$(CONFIG_WD80x3) += wd.o 8390.o
obj-$(CONFIG_EL2) += 3c503.o 8390.o
obj-$(CONFIG_NE2000) += ne.o 8390.o
obj-$(CONFIG_NE2_MCA) += ne2.o 8390.o
obj-$(CONFIG_HPLAN) += hp.o 8390.o

and then remove duplicates from $(obj-y) using $(sort)...

...Or do horrible games with 'if' statements and temporary variables
with names like $(NEED_8390) to ensure that it gets included once if
needed and not if not -- thereby pretty much defeating the readability
of the new-style makefiles.

Oh. There's a third way: ignore the issue and hope users don't feel
the need for both ne.o and wd.o linked into the same kernel. I do hope
you aren't advocating *that* solution, which unfortunately appears to
be the status quo in drivers/net/Makefile. I guess solution #2 was
seen as too much trouble there.

The horrible games with 'if' statements have been played in any number
of kernel makefiles and I'd really like to see them go away.

That is the real reason I like LINK_FIRST.

Peter