[lkml]   [1996]   [Dec]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: source dependencies cleanup? (fwd)

> The example you cite is really just a symptom of a much larger problem
> with the configuration system in the kernel: specifically, all
> configuration data is in ONE place, namely autoconf.h, and thus a change
> forces a total recompile since you can't tell which files are really
> affected by that change.

Yes it is. However, you can come up with other examples where this is not
the case. Consider developing a driver and I want to make sure it compiles
on the alpha, sparc, x86, ppc, and mips platforms. It would be a real pain
to do that now.

> Since the configuration scripts are already divided up by subsystem
> anyway, why not take the next logical step and create an autoconf.h-type
> file for each subsystem? We could do this in three steps:

This is an excellent idea, and I think it is something that needs to be
done. I don't see it as a replacement for what I was talking about though,
more of something else which needs to be improved.

> I'm willing to start working on this if enough people think it's worth the
> effort. Of course I'd like Linus's blessing on this too since it's going
> to eventually involve patching pretty much every file in the source tree.
> I'd be interested in anyone's thoughts on exactly how the configuration
> data should be divided. My first instinct is to create a config header for
> every place there is a file. Comments?

I worked on something like this once, but as I said above I ran out of
time. I think some other people did too. Fortunatly we talked to Linus
enough to know what he would bless. His main concern was that if there
is a place in the kernel source where something like:


appeared, there needs to be an automatic way to make sure that whatever
file should define CONFIG_XYZ is included. Its too easy to leave them out
otherwise. It would probably be possible to put a check like this in the
make_dep program, but I never worked that out.

At the time I was working on this, I made a seperate include file for each
CONFIG option. Its trivial to hack up the configuration script to do this.
Something I though of the other day that may make things prettier is to have
a static file like the current autoconfig.h, which contains lines like:

# include <autoconfg/config_xyz.h>

Then your source would look like this:

#include <newautoconfg.h>


#ifndef CONFIG_ABC

I'm not sure this is any better, but its a different way to do it.

One problem with doing this is that many header files contain macros which
are looking at the CONFIG_ variables. This probably needs to be rearranged,
but thats going to be a mess. One problem I had when I was working on the
Makefiles is that I don't know how a lot of the kernel code works, and I
don't have the means to test a lot of it. I hate to assume that if I change
something and it still compiles that I have not broken anything.

Anyway those are my thoughts. If you can get somethink like you proposed to
work, you will make a lot of people very happy.


 \ /
  Last update: 2005-03-22 13:38    [W:0.064 / U:0.108 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site