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