Messages in this thread | | | From | Neil Brown <> | Date | Thu, 30 Nov 2000 20:49:03 +1100 (EST) | Subject | Re: PATCH - kbuild documentation. |
| |
On Thursday November 30, rmk@arm.linux.org.uk wrote: > Neil Brown writes: > > + An example for libraries from drivers/acorn/scsi/Makefile: > > This is no longer true; you'll have to find another example. > > > + As ordering is not so important in libraries, this still uses > > + LX_OBJS and MX_OBJS, though (presumably) it could be changed to > > + use MIX_OBJS as follows: > > + > > + active-objs := $(sort $(obj-y) $(obj-m)) > > + L_OBJS := $(obj-y) > > + M_OBJS := $(obj-m) > > + MIX_OBJS := $(filter $(export-objs), $(active-objs)) > > + > > + which is clearly shorted and arguably clearer. > > What if you have > > obj-$(CONFIG_FOO) += foo.o foobar.o > obj-$(CONFIG_BAR) += bar.o foobar.o > > and CONFIG_FOO=y and CONFIG_BAR=m? What about CONFIG_FOO=y and > CONFIG_BAR=y? Do we still support this method? If not, what is the > recommended way of doing this sort of stuff?
The first case (y and m) would be satisifed by
M_OBJS := $(filter-out $(O_OBJS) $(L_OBJS), $(obj-m))
but the second (y and y) wouldn't. If you want to be allowed to mention a .o file twice, and still maintain ordering, you are asking a lot. You could try:
obj-$(CONFIG_FOO)$(CONFIG_BAR) += foobar.o obj-$(CONFIG_FOO) += foo.o foobar.o obj-$(CONFIG_BAR) += bar.o foobar.o
O_OBJS := $(obj-y) $(obj-ym) $(obj-my) M_OBJS := $(obj-m) $(obj-mm)
But that it starting to look ugly.
Maybe: O_OBJS := $(shell echo $(obj-y) | tr ' ' '\n' | cat -n | sort -u +1 | sort -n | cut -f2)
But I don't think that is much better.
There is room for other good ideas here if this is a real need.
NeilBrown
(I love Unix pipelines)
> _____ > |_____| ------------------------------------------------- ---+---+- > | | Russell King rmk@arm.linux.org.uk --- --- > | | | | http://www.arm.linux.org.uk/personal/aboutme.html / / | > | +-+-+ --- -+- > / | THE developer of ARM Linux |+| /|\ > / | | | --- | > +-+-+ ------------------------------------------------- /\\\ | > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > Please read the FAQ at http://www.tux.org/lkml/ - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
| |