]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - tools/src/libcdl/TODO
unified MX27, MX25, MX37 trees
[karo-tx-redboot.git] / tools / src / libcdl / TODO
1                                 TODO List
2                                 ---------
3
4 Minor
5 -----
6
7 1) savefile support. Add option handling to the remaining savefile
8    commands, even if no options are currently defined.
9
10 2) remember unrecognised options so that they can be written back
11    when the savefile is regenerated. Perhaps add option details
12    to the header?
13
14 3) allow re-parenting below "". Make the orphans container disabled? 
15
16 4) get limbo working
17
18 5) make cdl_interfaces into containers? How about cdl_options as well,
19    to avoid reparenting problems?
20
21    cdl_interfaces as containers is actually a problem because interfaces
22    are part of the core, and hence do not know about the existence of
23    options and components.
24
25 6) allow components and options to be used interchangeably in savefiles. 
26
27 7) ecosconfig, create a paths file with details of the source tree
28    location etc? How about reporting the paths?
29
30    >     Huge> How about: put information about the source tree into the savefile BUT you
31    >     Huge> can put
32    >     Huge>  ecosconfig --srcdir=/home/hmt/work/ecc/net/ecc/ecc
33    >     Huge> and it'll say "Oi!  You've changed the repository!  Override [y/n]?"
34    >     Huge> That lets you move them 'round.
35    > 
36    > That is a possibility, but I am reluctant to add any interactive
37    > facilities to ecosconfig just yet
38
39    OK, instead:
40         % ecosconfig --srcdir=/home/hmt/work/ecc/net/ecc/
41         ecosconfig: Oi!  You've changed the repository!  Quitting.
42         ecosconfig: [Hint: Use --new-srcdir to override.]
43         % ecosconfig --new-srcdir=/home/hmt/work/ecc/net/ecc/
44         ecosconfig: new repository selected: /home/hmt/work/ecc/net/ecc/
45         % _
46    There's interactive and interactive... ;-)
47    [*enable anyone? ;-)]
48
49 8) savefiles, if an interface has no implementors then say so.
50
51 9) CDL filenames in the savefile? This might be useful for people
52    wanting to look at the CDL sources, although all the interesting
53    information should already be in the savefile.
54
55 10) what happens if a source file is listed for two separate options?
56
57 11) define -format="\\\"%s\\\"" XYZ
58     This seems to do the wrong thing. Consider:
59
60     cdl_option CYGNUM_LIBC_MAX_LOCALE_NAME_SIZE {
61         define -format="\\\"%s\\\"" XYZ
62         ...
63     }
64
65     The output is:
66
67     #define CYGNUM_LIBC_MAX_LOCALE_NAME_SIZE "16"
68     #define XYZ_16
69
70     BLV - may have been fixed on Feb 14th
71
72 12) define -format="\"%s\"" XYZ
73
74     This gives an internal error. Should it?
75
76 13) make-object, check for priorities less than 200. It is not
77     sensible to build an object after the library has been
78     constructed. Also check that the target is a .o file.
79
80 14) exported header files. Suppress obvious problems such as
81     CVS subdirectories and files ending with ~. See pkgconf::locate_files. 
82
83 15) diagnostics for inappropriate templates, e.g. the stubs template on simulators. 
84
85 16) custom build steps and generating exported header files.
86
87     Priorities of custom build steps that should go before header file
88     generation?
89     Use of include_files property.
90
91 17) what happens when several packages specify the same define_header?
92
93 18) evalexception conflicts. What should happen if the node is disabled or inactive? 
94     Especially if it is the default_value expression that is causing the problem.
95
96 19) add diagnostic callback support to the inference engine so that I
97     can figure out what is going on.
98
99 20) make version comparison completely case insensitive, to avoid
100     problems on some file systems.
101
102 21) configure magic to cope with Debian TCL organization.
103     See http://sourceware.cygnus.com/ml/ecos-discuss/2000-06/msg00094.html
104
105 22) add version number #define's to pkgconf/system.h, to allow
106     application code to adapt to different versions of a package.
107     http://sourceware.cygnus.com/ml/ecos-discuss/2000-06/msg00140.html
108
109 Intermediate
110 ------------
111
112 1) integrate the makefile generation support into libcdl.
113
114 2) implement the Tcl interface to the CDL data, especially tcl_get
115    and the appropriate Tcl variables.
116
117 3) full definition of custom build steps and the build procedure
118    generally, including working out what should happen for
119    compiler flags.
120
121    Dependency analysis in custom build steps.
122
123 4) get safe interpreters working, and make sure that only safe
124    file I/O operations are permitted.
125
126 5) Improve diagnostic messages, including line numbers.
127
128 6) extend the inference engine to support more operators.
129
130 7) support disabled conflicts.
131
132 8) full implementation of interfaces, including automatic creation.
133
134 9) text aliases for legal_values lists?
135
136 10) savefiles do not list `implements' properties
137
138 11) ecosconfig verbosity. Add --silent and --verbose modes?
139
140 12) header file dependencies. From Jesper and others:
141
142     One alternative way of handling this is the way it's done in Linux
143     (which happened around 2.2.?, I think, and made for some
144     phenomenal build speedups):
145
146      grep each source file foo.c for use of CYGxxx_ macros. Cat this list
147      into .foo.c.config_deps (or similar) with proper mangling so it
148      becomes a GCC dependency file (for foo.c) on "option files".
149
150      Each option, opt_name, thus adds a dependency on
151      $build/config_deps/CYGxxx_opt_name. Whenever changing the config,
152      touch the relevant config_deps/ files.
153
154      In short: when making general source file dependencies, exclude any
155      dependencies on $install/include/pkgconf/* and replace with
156      appropriate $build/config_deps/* dependencies. That makes for one
157      smoooking fast dependency system. It doesn't get finer-grained than
158      this.
159
160 13) friend packages, allowing one package to see the implementation
161     details of another. Also, handle documentation links between these.
162
163 14) API clean-up. Eliminate the confusion between "value" and the data part of
164     a bool/data pair.
165
166 Major
167 -----
168
169 1) implement and integrate a proper infrastructure. Generally sort out
170    the host-side build tree, including making libcdl into a Tcl
171     package. 
172
173 2) sort out the test suites.
174
175 3) std::bad_alloc exceptions. These can happen just about anywhere.
176    Lots of places need to be hardened against this to avoid memory
177    leaks. A completely robust system is probably not possible
178    because cancelling a transaction may involve memory allocation.
179
180 4) general code walk through to look for obvious inefficiencies, e.g.
181    passing things by value rather than by reference.
182
183 5) generalise the build support for other languages such as Java.
184
185 6) implement a proper database and associated admin tool.
186
187 7) improved autoconfiscation support, in particular finding the
188    appropriate platform-specific library support.
189
190 8) a suitable naming convention for data members and for arguments to
191    inline functions should be adopted, to prevent collisions with
192    #define'd symbols in application land. Possibilities include
193    _X_ and __X.
194
195 9) work out how to extend Tcl to provide line number information.
196
197 10) i18n support.
198
199 11) currently the data type cdl_int is defined to be 64 bits. This should
200     probably be changed to arbitrary precision, so that e.g. processors
201     which can perform 128 bit arithmetic can be adequately supported.
202
203 12) extend the CDL expression syntax with e.g. string operators. This
204     will impact the inference engine.
205
206 13) add an interactive mode to ecosconfig resolve, allowing users to
207     confirm or cancel solutions?
208
209 //===========================================================================
210 //####COPYRIGHTBEGIN####
211 //                                                                          
212 // ----------------------------------------------------------------------------
213 // Copyright (C) 1999, 2000 Red Hat, Inc.
214 //
215 // This file is part of the eCos host tools.
216 //
217 // This program is free software; you can redistribute it and/or modify it 
218 // under the terms of the GNU General Public License as published by the Free 
219 // Software Foundation; either version 2 of the License, or (at your option) 
220 // any later version.
221 // 
222 // This program is distributed in the hope that it will be useful, but WITHOUT 
223 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
224 // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
225 // more details.
226 // 
227 // You should have received a copy of the GNU General Public License along with
228 // this program; if not, write to the Free Software Foundation, Inc., 
229 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
230 //
231 // ----------------------------------------------------------------------------
232 //                                                                          
233 //####COPYRIGHTEND####
234 //===========================================================================
235