comparison host/libcdl/TODO @ 76:435cced73e2f ecos-v1_3_1-release

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