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