In a 6.1.55 Linux kernel build, after a full make, if I touch a file marked as "=y" in the .config (e.g. net/devres.c) I see that the compiler rebuilds the corresponding .o file, as expected.
user@machine:/opt/linux-imx$ touch net/devres.cuser@machine:/opt/linux-imx$ make CALL scripts/checksyscalls.sh CC net/devres.o AR net/built-in.a...
If I do the same for drivers/net/dsa/dsa_loop_bdinfo.c nothing is rebuilt!
user@machine:/opt/linux-imx$ touch drivers/net/dsa/dsa_loop_bdinfo.cuser@machine:/opt/linux-imx$ make CALL scripts/checksyscalls.shuser@machine:/opt/linux-imx$
I've checked that a module marked as "=m" in the same directory (drivers/net/dsa/dsa_loop.c) gets rebuilt as a module, as expected, if it is touched.
I've checked the contents of drivers/net/dsa/Makefile:
...obj-$(CONFIG_NET_DSA_LOOP) += dsa_loop.oifdef CONFIG_NET_DSA_LOOPobj-$(CONFIG_FIXED_PHY) += dsa_loop_bdinfo.oendif...
... and the relevant lines in the .config file:
CONFIG_NET_DSA_LOOP=mCONFIG_FIXED_PHY=y
I have tried commenting out the ifdef
and endif
lines around the dsa_loop_bdinfo.o
line in the Makefile, to no avail.
I have tried changing the Makefile to use the following line:
obj-y += dsa_loop_bdinfo.o
Any suggestions?
Update:The .config contains:
CONFIG_NET_DSA=m
and the Makefile in drivers/net/ contains:
obj-$(CONFIG_NET_DSA) += dsa/
so yes, @sawdust, this does appear to be an attempt to compile a "-y" file within a "-m" directory.
It looks like this was first discovered in 2019 and fixed in kernel version 5.1.5 (https://www.uwsg.indiana.edu/hypermail/linux/kernel/1905.2/08067.html) but subsequently lost/reverted.