Re: test10-pre7

Keith Owens
2000-10-31T01:49:41Z

On Mon, 30 Oct 2000 16:47:15 -0800 (PST),
Linus Torvalds <torvalds@transmeta.com> wrote:
>Actually, I think I have an even simpler solution, which is to change the
>newstyle rule to something very simple:
>
> # Translate to Rules.make lists.
>
> O_OBJS := $(obj-y)
> M_OBJS := $(obj-m)
> MIX_OBJS := $(export-objs)

It makes kbuild variables in USB mean something different from the rest
of the kernel. Unless you plan to change all Makefiles (code freeze,
what code freeze?).

make modules depends on MIX_OBJS, with the above change make modules
now depends on kernel objects. Can be fixed in Rules.make, but only if
every Makefile is changed (code freeze, what code freeze?).

You will compile all export objects, whether they are configured or
not. The "obvious" fix does not work.

MIX_OBJS := $(filter $(export-objs),$(obj-y) $(obj-m))

export_objs contains usb.o, obj-y contains usb_core.o, it does not
contain usb.o. Multi lists in obj-y and obj-m need to be expanded
while preserving the required link order (which is where we came in).

It still does not document the only real link order constraint in USB.
The almost complete lack of documentation on which link orders are
required and which are historical is extremely annoying and _must_ be
fixed, instead we just propagate the problem.

If you cannot do sort then you cannot (easily) remove duplicate objects
from the lists, resulting in make warning messages. Doing an explicit
link first, list last then sort the rest also fixes the problem of
duplicate objects.