Commit Graph

81 Commits

Author SHA1 Message Date
jrf d9791f82a0 This addresses PR 19797, a small patch made by Tor Stormwall to add
a simple print statement showing the build directory location after
running config and creating a usage() function instead of using the
goto usage statement. Approved by christos@ and thanks to Tor for
the suggestions and patch.
2003-07-02 16:47:53 +00:00
heas 566bb2555a Deref the nv_list pointer and take it's address; cleaner and more clear.
as suggested by enami.
2003-06-27 18:42:11 +00:00
heas 3ff52bc3f5 Correct comment string "mkoptions" -> "makeoptions" 2003-06-25 07:02:04 +00:00
heas 626ce79cef When removing a nvlist entry (describing an option, makeoption, etc) in
undo_config, if that entry is the tail of the LL, also update the appropriate
tail point (nextopt, etc).
2003-06-25 06:42:40 +00:00
atatat d2f781064e If the file being stuffed into the config file string for inclusion in
the kernel is missing the newline at the end of the file, the string
doesn't get closed properly, resulting in a message from the compiler
about a missing #endif.  It's somewhat misleading, so config will now
point it out and compensate for the missing newline.

Addresses PR kern/21920: including kernel config fails in some cases.
2003-06-18 04:19:49 +00:00
jmmv f37b7f38ab Let config extract embedded configuration data from kernels that were built
with either "options INCLUDE_CONFIG_FILE" or "options INCLUDE_JUST_CONFIG".

The program can now be invoked like:
- config -b objdir -s srcdir /netbsd
  This will use configuration data from /netbsd to automatically create the
  build directory of the new kernel.
- config -x /netbsd > CONFFILE
  This will store configuration data from /netbsd in the CONFFILE file for
  further editing.
2003-04-26 12:53:43 +00:00
thorpej a151e17b89 Allow pseudo-devices to be declared with an interface attribute. For
such pseudo-devices, create cfdrivers for them which carry the appropriate
attributes.  This allows devices in the config file to be attached to
pseudo-devices.
2003-01-27 05:00:54 +00:00
thorpej 93854e538b Allow devices to be orphaned, but emit an informational message when
this occurs.
2002-10-11 02:02:24 +00:00
thorpej a27b30b1f8 Oops, fix editor mistake. 2002-10-11 01:54:50 +00:00
thorpej bd86bbe5e9 Add support for specifying attributes as option-dependencies,
allowing for the following:

file foo.c	foobar | bar

defflag BAR

device foobar

...to be expressed in the following (more natural) way:

define foo
file foo.c	foo

defflag BAR: foo

device foobar: foo
2002-10-11 01:48:25 +00:00
thorpej fc0fe0347d Overhaul the way parent attachments are specified; instead of using
a vector of indices into the cfdata table to specify potential parents,
record the interface attributes that devices have and add a new "parent
spec" structure which lists the iattr, as well as optionally listing
specific parent device instances.

See:

    http://mail-index.netbsd.org/tech-kern/2002/09/25/0014.html

...for a detailed description.

While here, const poison some things, as suggested by Matt Thomas.
2002-09-26 04:07:35 +00:00
enami 78948a7123 Salvage pre-devsw config support so that one can config such as other
branch's kernel.
2002-09-11 06:20:09 +00:00
gehenna 77a6b82b27 Merge the gehenna-devsw branch into the trunk.
This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

	device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
  by using this grammer.

- Added the new naming convention.
  The name of the device switch must be <prefix>_[bc]devsw for auto-generation
  of device switch tables.

- The backward compatibility of loading block/character device
  switch by LKM framework is broken. This is necessary to convert
  from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
  We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
  the LKM framework will refer it to assign device major number dynamically.
2002-09-06 13:18:43 +00:00
lukem 90028da4e1 Functionality improvements:
- Add `no' keyword, which can be used in the following ways:
	no file-system SOMEFS
	no makeoptions FOO
	no options OPT1[,OPT2[,...]]
	no pseudo-device somepseudo
  This turns off a previous file-system/makeoptions/options/pseudo-device
  entry for the same item.
  Grammar support for 'no device DEV at ATTACH' added, but not
  implemented yet.

Code changes:
- Convert many simple lists to TAILQs
- Convert prefix to SLIST
- Remove argument names from prototypes.
- Don't bother with custom alloc code for hashtables; just use emalloc()
  like everything else.
- Implement ht_remove(), to remove an entry from a hash table.
  Add removed entries to a freelist for later reuse.
- Don't selectbase() devices and pseudo-devices at definition time; instead
  do it at one pass after the config file has been parsed in fixdevis().
- Rename nvhead to nvfreelist; a more apt name...
- Minor code cleanups.
2002-06-05 10:56:17 +00:00
tv 9fbd88883c Roll in fixes to permit cross-compiling from non-NetBSD hosts. This
round has been tested on Solaris/x86 and Linux hosts.

* Add host tools cap_mkdb, ctags, m4, uudecode.
* Protect __RCSID() and __COPYRIGHT() better.
* Reduce the number of places that need to include "config.h", to keep
  sources closer to their "vanilla" versions.
* Add more compat #defines and autoconf-checked functions.
2002-01-31 22:43:33 +00:00
tv a328e34106 Make almost all tools compile and run properly on non-NetBSD hosts. (In
particular, most tools now run correctly on Solaris 7.)
2002-01-29 10:20:28 +00:00
wiz c43de8bde2 Include err.h for err(3) prototype. 2002-01-19 17:07:51 +00:00
mjl 7ea8665c72 Catch open failure and exit with error instead of crashing. 2002-01-19 06:10:13 +00:00
thorpej e6d41917cc Newlines in string literals are not supported by ANSI C, and some
preprocessors complain bitterly when they are encountered.

For now, terminate all lines with \n (and make each line its own
string literal).  The author of this code can figure out how to
do the sed trick another way.
2001-12-23 22:41:27 +00:00
atatat 65ace4b729 Properly use $TMPDIR or /tmp for the temporary config file stuff,
instead of ".".  Read-only source trees are "good".
2001-12-21 19:09:43 +00:00
atatat eb0a09d704 Teach config how to store the config in a .h file such that it can be
embedded in the resulting kernel binary.
2001-12-17 15:39:43 +00:00
atatat 42e4429bad Since defopt has been totally eradicated from the tree and is
considered "bad form", let's tell people they shouldn't use it.
2001-12-05 23:42:37 +00:00
lukem 7b844b40dc ensure that enabled defflag options get a default value of "1" too 2001-11-28 05:03:31 +00:00
tv 47ab6193ba Make this a little more portable to other NetBSD versions without
MAKE_BOOTSTRAP -- use our hand-rolled [gs]etprogname() at all times (er,
actually, the single time we need it...).
2001-10-02 21:31:01 +00:00
gmcgarry 32fc55d6d2 Don't pack locators. Introduce a new commandline option to
restore the previous behaviour of packing locators.

Results in a 2.5KB increase in size for the current i386 GENERIC
kernel.  My custom kernel resulted in a 12-byte increase.
2001-07-01 02:46:47 +00:00
fredette de800ed660 Added support for listing multiple additional names on
a `machine' line.  For each of these subarches, its
arch/${SUBARCH}/conf/files.${SUBARCH} is included, and
a symlink ${SUBARCH} -> arch/${SUBARCH}/include is made.
This will for a "richer structure" and easier code
sharing under sys/arch.
2001-06-08 12:47:06 +00:00
cgd c2bdafab79 use getprogname() 2001-02-20 23:51:59 +00:00
cgd fdfcf1962d labels (even default:) _must_ be followed by statements! usr.bin/fgen/fgen.l 2001-01-16 02:43:37 +00:00
lukem 1d0a6f62b8 revert 1.51 and 1.52 (_KERNEL_foo stuff), due to loud objections from
a couple of people.  we'll just have to go back to adding this manually
to our config files...
2000-12-14 22:14:45 +00:00
lukem ea03d7ba8e change KERNEL_foo -> _KERNEL_foo, as suggested by matt green 2000-12-12 17:49:20 +00:00
lukem f125ced5a1 Add option `KERNEL_foo', where `foo' is the basename of the build directory.
This will get added to the Makefile's IDENT= as -DKERNEL_foo.
2000-12-12 08:46:02 +00:00
bjh21 23dc98ae44 Don't try to use yydebug when we're building on a foreign system. Not all
yaccs provide it (notably GNU Bison 1.28).
Fixes the final part of PR#9112 (building under GNU/Linux).
2000-10-08 11:33:40 +00:00
cgd da723c733f include copyright notice in binary even if bootstrapping. 2000-10-02 19:57:23 +00:00
cgd 463d864ef0 nuke __P, and convert all functions to use ANSI-style declarations.
Also, do a few trivial KNF cleanups (e.g. newline at start of fn if no
locals).  Verified to have no effect via diff on new and old compiled
binaries.
2000-10-02 19:48:34 +00:00
simonb fd4ede242b Don't declare 'extern opt*' getopt variables. 2000-04-14 06:26:52 +00:00
enami 0d45936ccf Please pay an attention to the existing code and not to introduce
different coding style.
2000-01-25 01:16:00 +00:00
hubertf 764307a5a1 Keeping my kernel config files under RCS control, I always wished to
have a way to embed the revision number into the kernel's "uname -v"
output. The patch below does this, by generating a new keyword "ident"
that can be followed by any string, e.g.

        ident   "NOON-$Revision$"

will lead to
                                           vvvvvvvvvvvvvvvvvvvvvv
        char version[] =     "NetBSD 1.4P (NOON-$Revision: 1.21 $) #37: Thu Jan
20 02:01:23 MET 2000\n    feyrer@noon:/usr/cvs.local/src-current/sys/arch/i386/c
ompile/NOON\n";

This will lead to a version of "MYMACHINE-$Revision$" instead of the
kernel config file name. If "ident" is not present, the current behaviour
of using the kernel config file's name as identifier is used.

Implement by writing the ident to a file ("ident") in the compile dir,
which newvers.sh will pick up for generating the ident.
2000-01-23 23:37:42 +00:00
enami 532da8eb1c Remove redundant declaration of firstfile(). 1999-09-24 04:23:36 +00:00
ws b17a1042ba Allow mutual dependencies.
Output string-valued options reasonably to option files.
1999-09-22 14:23:03 +00:00
thorpej 8c134b93a0 If unlink() fails w/ ENOENT, don't display an error message. 1999-07-31 05:22:05 +00:00
hubertf b0f5059f43 Don't ignore the return value of two unlink() commands, and print
some warnings instead, if unlinking fails.

Fixes PR 4634 by myself.
1999-07-29 20:08:59 +00:00
thorpej 152af09e65 Add a mechanism to specify prefixes that are transparently prepended
to file specifications.  The prefixes are arranged in a stack, and
nest, so that file, object, and include specifications are normalized,
and all end up relative to the kernel compile directory.

For example, in the kernel config file:

# Pull in config fragments for kernel crypto
prefix ../crypto-us/sys 			# push it
cinclude "conf/files.crypto-us"			# include it if it's there
prefix						# pop it

and in files.crypto-us:

file netinet6/esp_core.c                ipsec & ipsec_esp
file netinet6/esp_output.c              ipsec & ipsec_esp
file netinet6/esp_input.c               ipsec & ipsec_esp

...generates the following in the kernel Makefile:

        $S/../crypto-us/sys/netinet6/esp_core.c \
        $S/../crypto-us/sys/netinet6/esp_output.c \
        $S/../crypto-us/sys/netinet6/esp_input.c \

By placing this all in the kernel config file, all the magic involved in
reaching into non-standard kernel source directories is placed into a file
that the user is expected to edit anyway, and reasonable examples (and
sane defaults, for typical source checkouts) can be provided.
1999-07-09 06:44:58 +00:00
gwr 5a4e7b6de7 Make this build on Solaris (make -f Makefile.boot) 1999-04-02 06:36:30 +00:00
mjl 99d17e2ca4 Mention -v in usage. Fixes PR 6262 by Erik Bertelsen. 1999-02-08 22:32:58 +00:00
itohy ec8a0e8dad Eliminate a memory leak. 1998-10-05 19:50:40 +00:00
jonathan eaa351c789 * Check that any declared option (def{opt,param,flag}, filesystem
is declared at most once.
* Do option dependency across all def{opt,param, flag}.
* Make the default value of otherwise-unspecified defopt's be 1,
  for consistency with non-defopt'ed options.
* Wrap an abstraction layer (macros) around tests for defopt, filesystem,
  defparam, etc. to catch outdated  defopt-vs-filesystem tests.
1998-06-30 03:30:56 +00:00
scottr a5427da04d Add and document the -v flag, and only print option-related warnings
if this flag is specified.
1998-06-28 04:41:36 +00:00
jonathan 0925cf4fda Stronger checking of options:
* machinery for nonfatal warnings.
* new backend config-file keywords:
     defparam -- like defopt, but each defparam option is required
		 to have a value when configured via "options".
     defflag -- like defopt, but defflag options may not have a value.
		 Also, on "option FOO",  a needs-count style flag
		 (NFOO, either 0 or 1)  is emitted to the .h file.

* Warn about old-style options that aren't defined via def{opt,param,flag}
  and which are  added to IDENT. (These behave subtly differently
  to defopt options when  no explicit value is given.)
1998-06-24 11:20:54 +00:00
scottr e6eb7d0530 Implement option dependencies as part of the defopt action. We currently
restrict depended-on (or "implied") options to those that have been
previously defopt'ed, which inherently eliminates any cycles in the option
graph.
1998-06-10 04:33:31 +00:00
tv 2c23336179 Add missing colon in error message. 1998-05-22 19:29:00 +00:00