Home | History | Annotate | Line # | Download | only in config
TODO revision 1.4
      1 o Emit everything (ioconf.*, Makefile, ...) per-attribute.
      2 
      3 o Generate modular(9) related information.  Especially module dependency.
      4 
      5 o Rename "interface attribute" to "bus".
      6 
      7   Instead of
      8 
      9 	define	audiobus {}
     10 	attach	audio at audiobus
     11 
     12   Do like this
     13 
     14 	defbus	audiobus {}
     15 	attach	audio at audiobus
     16 
     17 o Sort objects in more reasonable order.
     18 
     19   Put machdep.ko in the lowest address.  uvm.ko and kern.ko follow.
     20 
     21   Kill alphabetical sort (${OBJS:O} in sys/conf/Makefile.inc.kern.
     22 
     23   Use ldscript.  Do like this
     24 
     25 	.text :
     26 	AT (ADDR(.text) & 0x0fffffff)
     27 	{
     28 	  *(.text.machdep.locore.entry)
     29 	  *(.text.machdep.locore)
     30 	  *(.text.machdep)
     31 	  *(.text)
     32 	  *(.text.*)
     33 	  :
     34 
     35   Kill linker definitions in sys/conf/Makefile.inc.kern.
     36 
     37 o Differentiate "options" and "flags"/"params".
     38 
     39   "options" enables features by adding *.c files (via attributes).
     40 
     41   "flags" and "params" are to change contents of *.c files.  These don't add
     42   *.c files to the result kernel, or don't build attributes (modules).
     43 
     44 o Make flags/params per attributes (modules).
     45 
     46   Basically flags and params are cpp(1) #define's generated in opt_*.h.  Make
     47   them local to one attributes (modules).  Flags/params which affects files
     48   across attributes (modules) are possible, but should be discouraged.
     49 
     50 o Generate things only by definitions.
     51 
     52   In the ideal dynamically modular world, "selection" will be done not at
     53   compile time but at runtime.  Users select their wanted modules, by
     54   dynamically loading them.
     55 
     56   This means that the system provides all choices; that is, build all modules
     57   in the source tree.  Necessary information is defined in the "definition"
     58   part.
     59 
     60 o Split cfdata.
     61 
     62   cfdata is pattern matching rules to enable devices at runtime device
     63   auto-configuration.  It is pure data and can (should) be generated separately
     64   from the code.
     65 
     66 o Allow easier adding and removing of options.
     67 
     68   It should be possible to add or remove options, flags, etc.,
     69   without regard to whether or not they are already defined.
     70   For example, a configuration like this:
     71 
     72 	include GENERIC
     73 	options FOO
     74 	no options BAR
     75 
     76   should work regardless of whether or not options FOO and/or
     77   options BAR were defined in GENERIC.  It should not give
     78   errors like "options BAR was already defined" or "options FOO
     79   was not defined".
     80 
     81