TODO revision 1.2
11.1Suebayasio Emit everything (ioconf.*, Makefile, ...) per-attribute.
21.1Suebayasi
31.1Suebayasio Generate modular(9) related information.  Especially module dependency.
41.1Suebayasi
51.1Suebayasio Rename "interface attribute" to "bus".
61.1Suebayasi
71.1Suebayasi  Instead of
81.1Suebayasi
91.1Suebayasi	define	audiobus {}
101.1Suebayasi	attach	audio at audiobus
111.1Suebayasi
121.1Suebayasi  Do like this
131.1Suebayasi
141.1Suebayasi	defbus	audiobus {}
151.1Suebayasi	attach	audio at audiobus
161.1Suebayasi
171.1Suebayasio Sort objects in more reasonable order.
181.1Suebayasi
191.1Suebayasi  Put machdep.ko in the lowest address.  uvm.ko and kern.ko follow.
201.1Suebayasi
211.1Suebayasi  Kill alphabetical sort (${OBJS:O} in sys/conf/Makefile.inc.kern.
221.1Suebayasi
231.1Suebayasi  Use ldscript.  Do like this
241.1Suebayasi
251.1Suebayasi	.text :
261.1Suebayasi	AT (ADDR(.text) & 0x0fffffff)
271.1Suebayasi	{
281.1Suebayasi	  *(.text.machdep.locore.entry)
291.1Suebayasi	  *(.text.machdep.locore)
301.1Suebayasi	  *(.text.machdep)
311.1Suebayasi	  *(.text)
321.1Suebayasi	  *(.text.*)
331.1Suebayasi	  :
341.1Suebayasi
351.1Suebayasi  Kill linker definitions in sys/conf/Makefile.inc.kern.
361.2Suebayasi
371.2Suebayasio Differenciate "options" and "flags"/"params".
381.2Suebayasi
391.2Suebayasi  "options" enables featurs by adding *.c files (via attributes).
401.2Suebayasi
411.2Suebayasi  "flags" and "params" are to change contents of *.c files.  These don't add
421.2Suebayasi  *.c files to the result kernek, or don't build attributes (modules).
431.2Suebayasi
441.2Suebayasio Make flags/params per attributes (modules).
451.2Suebayasi
461.2Suebayasi  Basically flags and params are cpp(1) #define's generated in opt_*.h.  Make
471.2Suebayasi  them local to one attributes (modules).  Flags/params which affects files
481.2Suebayasi  across attributes (modules) are possible, but should be discouraged.
491.2Suebayasi
501.2Suebayasio Generate things only by definitions.
511.2Suebayasi
521.2Suebayasi  In the ideal dynamically modular world, "selection" will be done not at
531.2Suebayasi  compile time but at runtime.  Users select their wanted modules, by
541.2Suebayasi  dynamically loading them.
551.2Suebayasi
561.2Suebayasi  This means that the system provides all choices; that is, build all modules
571.2Suebayasi  in the source tree.  Necessary information is defined in the "definition"
581.2Suebayasi  part.
591.2Suebayasi
601.2Suebayasio Split cfdata.
611.2Suebayasi
621.2Suebayasi  cfdata is pattern matching rules to enable devices at runtime device
631.2Suebayasi  auto-configuration.  It is pure data and can (should) be generated separatedly
641.2Suebayasi  from the code.
65