[U-Boot] final u-boot cleanup -- Makefiles testing non-existent CONFIG vars

last example of cleanup script for today, i promise. one more cleanup script i wrote a while back identified something very specific; Makefiles that were testing CONFIG_ variables when those variables did not seem to be set anywhere.
as in, if a Makefile contained the line:
obj-$(CONFIG_RDAY) += rday.o
it would only make sense that the variable "CONFIG_RDAY" would need to be set *somewhere* (or at the very least defined in a Kconfig file), otherwise, that file would never be compiled.
i dumped the output of that script to the same wiki page:
http://www.crashcourse.ca/wiki/index.php/U-Boot_Kconfig_cleanup
it's the last section, and it might contain a few false positives since the Makefile itself might hardcode that variable, or might add a compilation option of "-DCONFIG_RDAY", and so on. for the most part, though, the list looks pretty good.
as an example, there's this:
ALI152X
./drivers/misc/Makefile:obj-$(CONFIG_ALI152X) += ali512x.o
that means that that Makefile is testing that variable, when it does not seem to be set by anything in the entire code base:
$ grep -r ALI152X * drivers/misc/Makefile:obj-$(CONFIG_ALI152X) += ali512x.o $
here's another example:
CMD_FITUPD
./cmd/Makefile:obj-$(CONFIG_CMD_FITUPD) += fitupd.o
absolutely nothing sets that variable, so that command will never be compiled into the image. one suspects that an entry for that command should be added to cmd/Kconfig, no?
finally, here's an interesting example:
YAFFS2
./fs/Makefile:obj-$(CONFIG_YAFFS2) += yaffs2/ ./cmd/Makefile:obj-$(CONFIG_YAFFS2) += yaffs2.o
and if you search for the string "YAFFS2", you get:
cmd/yaffs2.c:#ifdef YAFFS2_DEBUG cmd/Makefile:obj-$(CONFIG_YAFFS2) += yaffs2.o fs/yaffs2/yaffs_packedtags1.h:/* This is used to pack YAFFS1 tags, not YAFFS2 tags. */ fs/yaffs2/yaffs_guts.h:#define YAFFS_MIN_YAFFS2_CHUNK_SIZE 1024 fs/yaffs2/yaffs_guts.h:#define YAFFS_MIN_YAFFS2_SPARE_SIZE 32 fs/yaffs2/yaffs_guts.h:/* Sequence numbers are used in YAFFS2 to determine block allocation order. fs/yaffs2/yaffs_guts.h:/* Stuff used for extended tags in YAFFS2 */ fs/yaffs2/yaffs_guts.h: /* YAFFS2 stuff */ fs/yaffs2/yaffs_guts.h: /* Extra info if this is an object header (YAFFS2 only) */ fs/yaffs2/yaffs_guts.h: * However, if this state is returned on a YAFFS2 device, fs/yaffs2/yaffs_packedtags2.h:/* This is used to pack YAFFS2 tags, not YAFFS1tags. */ fs/yaffs2/Makefile: -DCONFIG_YAFFS_YAFFS2 -DNO_Y_INLINE \ fs/yaffs2/yaffs_yaffs2.h:#ifndef __YAFFS_YAFFS2_H__ fs/yaffs2/yaffs_yaffs2.h:#define __YAFFS_YAFFS2_H__ fs/yaffs2/yaffs_guts.c: * Correction for YAFFS2: This could happen quite a lot and we fs/yaffs2/yaffs_guts.c: * Backwards scanning YAFFS2: The old one is what fs/yaffs2/yaffs_guts.c: /* Handle YAFFS2 case (backward scanning) fs/yaffs2/yaffs_mtdif2.c:/* mtd interface for YAFFS2 */ fs/Makefile:obj-$(CONFIG_YAFFS2) += yaffs2/ scripts/config_whitelist.txt:CONFIG_YAFFS2
uh, this line looks interesting:
fs/yaffs2/Makefile: -DCONFIG_YAFFS_YAFFS2 -DNO_Y_INLINE \
is that a typo? should it read:
fs/yaffs2/Makefile: -DCONFIG_YAFFS2 -DNO_Y_INLINE \
anyway, that's it for today ... feel free to peruse that new list to see what parts of Makefiles seem to not be compiled.
rday
participants (1)
-
Robert P. J. Day