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 -- ======================================================================== Robert P. J. Day Ottawa, Ontario, CANADA http://crashcourse.ca Twitter: http://twitter.com/rpjday LinkedIn: http://ca.linkedin.com/in/rpjday ======================================================================== \ _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot