On Thu, 27 Feb 2025 11:22:41 +0200 Andy Shevchenko <andy.shevchenko@xxxxxxxxx> wrote: ... > > A 'fun' activity is to pick a random file add "#define _IOW xxx" at the > > top and see where ioctl.h is is first included from. > > (I've not got a build machine up at the moment.) > > > > Then start fixing that include sequence. > > Moving a few headers around is otherwise pretty pointless. > > Have you tried to help with reviewing this? > > https://lwn.net/ml/linux-kernel/YdIfz+LMewetSaEB@xxxxxxxxx/ > Not seriously, though maybe I remember it. 'dayjobs' makefile first deletes all the SUFFIX and builtin rules. Then it copies lots of headers from all over everywhere into a (fairly flat) obj/include tree to reduce the number of -Ipath to a minimum. A 'create' dependency is added to all the main targets to ensure the headers get copied (the .d files pick up updates). It then generates explicit rules for each .o against its .c file. Definitely speeds things up because make is no longer searching directories for all sorts of files that might be needed - but never are. (I've not dug through the bowels of the kernel makefile, but probably have the skills to do so!) But that is all different from solving the 'all the header files always get included' issue. David