> > This will save me an awful lot of time on the all-too-frequent occasions when > I forget to edit the Makefile before compiling a new kernel. I've built SMP > kernels for other peoples' machines, and I've built uniprocessor kernels for > my own. Once I ran my machine on a single CPU for a week before I noticed!> > One other thing I'd like to see is a message on booting which says > "SMP architecture not found" if you run an SMP kernel on a single-CPU box.> Otherwise people may never know that they're running an SMP kernel when they > didn't mean to. I submitted a patch many moons ago, and will do so again after > 2.1.55 is out (pre-55-1 has modifications to exactly the code I want to change)> > If the objection to the Makefile changes is that more files will depend on > config.h and hence get recompiled more often than they do at the moment, I > agree with Michael that they aren't really that much of a problem; after all - > there's lots of files which get recompiled unnecessarily anyway, so a few more > is just pi^H^Hurinating in the wind.> > What I'd like to see, in fact, is a new approach to the dependencies - if a > file includes config.h, then don't just recompile it if config.h is modified - > only recompile it if the #defines that it uses are changed. We could define > each CONFIG_xxx option in autoconf.h with the date and time that it was set, > rather than just defining it to 1. So autoconf.h becomes:> > #undef CONFIG_MATH_EMULATION 19970909102900> #define CONFIG_NET 19970909102900> etc...> > > Then the dependency checking involves scanning the source file (& included > headers) for references to CONFIG_xxxx options, and marking it in need of > recompilation iff the change time of any of the used options is later than the > stamp of the object file.> > This will make the dependency checking more complex, hence slower, but will > mean that we no longer need to recompile the whole kernel when only one option > is changed.> > I'm not even sure if what I'm suggesting is possible, but if so, and if people > like the idea, I'm happy to look into implementing it (although possibly next > month after I finish here and go back to College, where I'm not paid, so can > work on what I like).> > > My initial thought was to separate each CONFIG_ option into a separate file, > and that source files should only include the files for the options they > depended on:> > #include <linux/config/config_arcnet.h>> #ifdef CONFIG_ARCNET> etc...> > I don't like this because it means an explosion of small files in the > linux/config directory, which will waste a lot of space on some filesystems, > and generally not look nice, but it's a simple way of implementing finer > grained dependencies without overhauling the dependency code.> > Comments, flames, abuse, money orders, etc. are as usual welcome.> > -- > David Woodhouse, CB3 9AN http://dwmw2.robinson.cam.ac.uk/> dwmw2@cam.ac.uk Tel: 0976 658355 > D.W.Woodhouse@nortel.co.uk Tel: 01279 402332> >