2002-12-28 09:41:45

by Jochen Hein

[permalink] [raw]
Subject: [2.5.53, KBUILD] missing dependencies for yenta_socket.ko?


I changed yenta.c and tried to recompile yenta_socket.ko, the
resulting kernel module. I get:

root@gswi1164:/usr/src/linux-2.5.53# LANG=C make drivers/pcmcia/yenta_socket.ko
make: Nothing to be done for `drivers/pcmcia/yenta_socket.ko'.
root@gswi1164:/usr/src/linux-2.5.53# ls -l drivers/pcmcia/yenta_socket.ko drivers/pcmcia/yenta.c
-rw-r--r-- 1 1046 101 26000 2002-12-28 10:09 drivers/pcmcia/yenta.c
-rw-r--r-- 1 root root 18567 2002-12-28 09:55 drivers/pcmcia/yenta_socket.ko

Shouldn't that work?

Jochen

--
Wenn Du nicht wei?t was Du tust, tu's mit Eleganz.


2002-12-28 19:48:24

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [2.5.53, KBUILD] missing dependencies for yenta_socket.ko?

On Sat, Dec 28, 2002 at 10:18:35AM +0100, Jochen Hein wrote:
>
> I changed yenta.c and tried to recompile yenta_socket.ko, the
> resulting kernel module. I get:
>
> root@gswi1164:/usr/src/linux-2.5.53# LANG=C make drivers/pcmcia/yenta_socket.ko
> make: Nothing to be done for `drivers/pcmcia/yenta_socket.ko'.

Above trick does not work for composite objects.
The best approach is to use the following trick:

make SUBDIRS=drivers/pcmcia

That will build all files - as required - starting with drivers/pcmcia.
The rest of the build process then proceeds as opposed to the normal
single targets.

The top-level Makefile needs an entry to let the above work with single
target .ko files, patch attached (on top of my earlier kbuild changes).

Sam

===== Makefile 1.349 vs edited =====
--- 1.349/Makefile Fri Dec 27 21:15:43 2002
+++ edited/Makefile Sat Dec 28 13:13:55 2002
@@ -419,6 +419,8 @@
$(Q)$(MAKE) $(build)=$(@D) $@
%.o: %.c scripts FORCE
$(Q)$(MAKE) $(build)=$(@D) $@
+%.ko: %.c scripts FORCE
+ $(Q)$(MAKE) $(build)=$(@D) KBUILD_BUILTIN=1 KBUILD_MODULES=1 $@
%.lst: %.c scripts FORCE
$(Q)$(MAKE) $(build)=$(@D) $@
%.s: %.S scripts FORCE