Subject: Re: More config changes, for ro source tree and disjoint build trees
To: None <mike.long@analog.com>
From: Ignatios Souvatzis <ignatios@cs.uni-bonn.de>
List: tech-kern
Date: 08/13/1996 21:50:30
Date: Tue, 13 Aug 96 10:54:57 EDT
From: Mike Long <mike.long@analog.com>
Cc: tech-kern@NetBSD.ORG
Organization: Analog Devices CPD
Reply-To: Mike Long <mike.long@analog.com>
Sender: owner-tech-kern@NetBSD.ORG
Precedence: list
X-Loop: tech-kern@NetBSD.ORG
>From: Jason Thorpe <thorpej@nas.nasa.gov>
>Date: Mon, 12 Aug 1996 20:40:16 -0700
>
>On 12 Aug 1996 23:05:56 -0400
> Michael Graff <explorer@flame.org> wrote:
>
> > To be honest, I would rather see something which allowd you to nearly
> > build a kernel config file from a running kernel. I would love to see
> > some sort of "supported options" list in the kernel itself, with names
> > and status info.
>
>That's certainly possible to implement. However, doing so could lead to
>bloat that's not universally useful.
>
>I guess you'd have to make it an option :-)
You could solve the LKM #ifdef problem and the supported-options
problem at the same time:
1) Options for which LKMs exist, and other "supported" options, are
declared in /sys/.../files* . Part of the declaration is a variable
name, e.g. compat_freebsd for the COMPAT_FREEBSD option.
2) Config generates an options.c file in the kernel build directory
which defines a variable for each supported option. The variable is
nonzero if the option is requested in the user's kernel config file:
int compat_freebsd = 1;
If the option is not requested, the flag is set to zero. Unsupported
options (e.g. driver debug options) end up in IDENT as usual.
options.c is (obviously) compiled into the kernel.
3) Replace #ifdefs for supported options with flag checks:
#ifdef COMPAT_FREEBSD if (compat_freebsd) {
... -> ...
#endif }
I hope you are aware that options are used at the moment to define
which of two console fonts are compiled into NetBSD/amiga kernel
binaries.
Basically:
#ifdef KFONT_8X11
u_int8_t kf8x11data[] = { ...};
#endif
in one place and
#ifdef KFNOT_8x11
#define fontdata kf8x11data
#endif
in another. Any better method for similar stuff which
which fits with your proposal?
i.s.