On Fri, Feb 28, 2025 at 05:50:19PM +0000, David Laight wrote: > 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. How? That gigantic series makes the headers cleaner in a sense to avoid "include everything" thingy. -- With Best Regards, Andy Shevchenko