TODO revision 1.4 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 1.4 apb
66 1.4 apb o Allow easier adding and removing of options.
67 1.4 apb
68 1.4 apb It should be possible to add or remove options, flags, etc.,
69 1.4 apb without regard to whether or not they are already defined.
70 1.4 apb For example, a configuration like this:
71 1.4 apb
72 1.4 apb include GENERIC
73 1.4 apb options FOO
74 1.4 apb no options BAR
75 1.4 apb
76 1.4 apb should work regardless of whether or not options FOO and/or
77 1.4 apb options BAR were defined in GENERIC. It should not give
78 1.4 apb errors like "options BAR was already defined" or "options FOO
79 1.4 apb was not defined".
80 1.4 apb
81