Date: Wed, 13 Dec 2000 18:21:42 -0800 (PST)
From: Linus Torvalds <torvalds@transmeta.com>
To: "David S. Miller" <davem@redhat.com>
Subject: [KBUILD] Re: drivers/scsi/Makefile change in 2.4.0-test12 final



On Mon, 11 Dec 2000, David S. Miller wrote:
> 
> Where did this come from?  I think I know what it is trying
> to do, but unfortunately it has the effect of not having
> the module symbol versions generated anymore, breaking all
> scsi modules built.

Ok. That's it. I had enough.

That whole O_OBJS/OX_OBJS/M_OBJS/MX_OBJS/MIX_OBJS mess has to go. It's too
much crap to carry around, and when trying to fix one kind of build we
invariably break another.

I'm putting a test13-pre1 out on linux-kernel, where the Makefiles I care
about (and a lot of them that I don't care about) have been all changed
over completely to new-style, with _no_ backwards compatibility crap for
the old stuff. The pain of changing Makefiles is smaller than the pain of
trying to maintain that right.

Rules.make doesn't know, care, or look at the xxx_OBJS lists any more. It
looks at "obj-y", "obj-m" and "export-objs", and that's pretty much it. It
generates everything else from those lists.

It removes a lot of crap from a lot of Makefiles that were already
new-style but had the compatibility stuff for an old-style Rules.make.

David, would you mind converting the arch/sparc Makefiles? It's usually
fairly easy. The ones I use have been converted sufficiently for my needs
(which definitely means that modules did not get a lot of testing).

The rule is:

 - 'export-objs' should contain all objects that export stuff, whether
   enabled or not (ie a static list, generated basically by doing
   something like

	grep -l EXPORT *.c | sed 's/\.c/\.o/'

 - 'obj-y' are the enabled object files (and yes, they are possibly
   multi-lists).

 - 'obj-m' are the enabled module object files (again, possible
    multi-lists)

 - if there are multi-lists, we have "list-multi" and the rest of the
   deal.

No, it's not perfect, but we'd better start fixing this once and for all,
or we'll _never_ get it right. This at least throws the old garbage out.

Right now it does the version stuff only for object files that are
actually active. I think Mec wants it to be done for all object files, so
that version files are built for files that aren't even enabled. Mec? 

		Linus


--  To unsubscribe, send mail to: linux-kbuild-request@torque.net --
--  with the single word "unsubscribe" in the body of the message. --