Mercurial > flash_v2
annotate host/libcdl/doc/language.sgml @ 1619:2aabaeffc161
* doc/redboot_epilogue.sgml: Comment out </part> to reflect change
of 2004-04-19.
| author | jlarmour |
|---|---|
| date | Thu, 29 Apr 2004 07:13:26 +0000 |
| parents | def85e4d96d2 |
| children |
| rev | line source |
|---|---|
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1 <!-- {{{ Banner --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3 <!-- =============================================================== --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
4 <!-- --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
5 <!-- language.sgml --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
6 <!-- --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
7 <!-- The CDL language. --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
8 <!-- --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
9 <!-- =============================================================== --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
10 <!-- ####COPYRIGHTBEGIN#### --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
11 <!-- --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
12 <!-- =============================================================== --> |
|
334
c9cbf5dfb306
Update documentation licenses to remove restriction on redistributing
bartv
parents:
210
diff
changeset
|
13 <!-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc. --> |
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
14 <!-- --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
15 <!-- This material may be distributed only subject to the terms --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
16 <!-- and conditions set forth in the Open Publication License, v1.0 --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
17 <!-- or later (the latest version is presently available at --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
18 <!-- http://www.opencontent.org/openpub/) --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
19 <!-- Distribution of the work or derivative of the work in any --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
20 <!-- standard (paper) book form is prohibited unless prior --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
21 <!-- permission obtained from the copyright holder --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
22 <!-- =============================================================== --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
23 <!-- --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
24 <!-- ####COPYRIGHTEND#### --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
25 <!-- =============================================================== --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
26 <!-- #####DESCRIPTIONBEGIN#### --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
27 <!-- --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
28 <!-- Author(s): bartv --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
29 <!-- Contact(s): bartv --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
30 <!-- Date: 2000/02/06 --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
31 <!-- Version: 0.01 --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
32 <!-- --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
33 <!-- ####DESCRIPTIONEND#### --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
34 <!-- =============================================================== --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
35 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
36 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
37 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
38 <chapter id="language"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
39 <title>The CDL Language</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
40 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
41 <!-- {{{ Introit --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
42 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
43 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
44 The &CDL; language is a key part of the &eCos; component framework. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
45 All packages must come with at least one &CDL; script, to describe |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
46 that package to the framework. The information in that script includes |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
47 details of all the configuration options and how to build the package. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
48 Implementing a new component or turning some existing code into an |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
49 &eCos; component always involves writing corresponding &CDL;. This |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
50 chapter provides a description of the &CDL; language. Detailed |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
51 information on specific parts of the language can be found in <xref |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
52 linkend="reference">. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
53 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
54 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
55 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
56 <!-- {{{ Language overview --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
57 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
58 <sect1 id="language.overview"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
59 <title>Language Overview</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
60 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
61 A very simple &CDL; script would look like this: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
62 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
63 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
64 cdl_package CYGPKG_ERROR { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
65 display "Common error code support" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
66 compile strerror.cxx |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
67 include_dir cyg/error |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
68 description " |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
69 This package contains the common list of error and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
70 status codes. It is held centrally to allow |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
71 packages to interchange error codes and status |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
72 codes in a common way, rather than each package |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
73 having its own conventions for error/status |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
74 reporting. The error codes are modelled on the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
75 POSIX style naming e.g. EINVAL etc. This package |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
76 also provides the standard strerror() function to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
77 convert error codes to textual representation." |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
78 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
79 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
80 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
81 This describes a single package, the error code package, which does |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
82 not have any sub-components or configuration options. The package has |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
83 an internal name, <varname>CYGPKG_ERROR</varname>, which can be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
84 referenced in other &CDL; scripts using e.g. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
85 <literal>requires CYGPKG_ERROR</literal>. There will also be a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
86 <literal>#define</literal> for this symbol in a configuration header |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
87 file. In addition to the package name, this script provides a number |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
88 of properties for the package as a whole. The &display; property |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
89 provides a short description. The &description; property involves a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
90 rather longer one, for when users need a bit more information. The |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
91 &compile; and &include-dir; properties list the consequences of this |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
92 package at build-time. The package appears to lack any on-line |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
93 documentation. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
94 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
95 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
96 Packages could be even simpler than this. If the package only provides |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
97 an interface and there are no files to be compiled then there is no |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
98 need for a &compile; property. Alternatively if there are no exported |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
99 header files, or if the exported header files should go to the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
100 top-level of the <filename |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
101 class="directory">install/include</filename> directory, then there is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
102 no need for an &include-dir; property. Strictly speaking the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
103 &description; and &display; properties are optional as well, although |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
104 application developers would not appreciate the resulting lack of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
105 information about what the package is supposed to do. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
106 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
107 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
108 However many packages tend to be a bit more complicated than the error |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
109 package, containing various sub-components and configuration options. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
110 These are also defined in the &CDL; scripts and in much the same way |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
111 as the package. For example, the following excerpt comes from the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
112 infrastructure package: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
113 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
114 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
115 cdl_component CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
116 display "Buffered tracing" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
117 default_value 1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
118 active_if CYGDBG_USE_TRACING |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
119 description " |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
120 An output module which buffers output from tracing and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
121 assertion events. The stored messages are output when an |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
122 assert fires, or CYG_TRACE_PRINT() (defined in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
123 <cyg/infra/cyg_trac.h>) is called. Of course, there will |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
124 only be stored messages if tracing per se (CYGDBG_USE_TRACING) |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
125 is enabled above." |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
126 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
127 cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_SIZE { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
128 display "Trace buffer size" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
129 flavor data |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
130 default_value 32 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
131 legal_values 5 to 65535 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
132 description " |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
133 The size of the trace buffer. This counts the number of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
134 trace records stored. When the buffer fills it either |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
135 wraps, stops recording, or generates output." |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
136 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
137 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
138 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
139 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
140 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
141 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
142 Like a &cdl-package;, a &cdl-component; has a name and a body. The |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
143 body contains various properties for that component, and may also |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
144 contain sub-components or options. Similarly a &cdl-option; has a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
145 name and a body of properties. This example lists a number of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
146 new properties: &default-value;, &active-if;, &flavor; and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
147 &legal-values;. The meaning of most of these should be fairly obvious. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
148 The next sections describe the various &CDL; commands and properties. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
149 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
150 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
151 There is one additional and very important point: &CDL; is not a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
152 completely new language; instead it is implemented as an extension of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
153 the existing &Tcl; scripting language. The syntax of a &CDL; script is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
154 &Tcl; syntax, which is described below. In addition some of the more |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
155 advanced facilities of &CDL; involve embedded fragments of &Tcl; code, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
156 for example there is a &define-proc; property which specifies some |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
157 code that needs to be executed when the component framework generates |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
158 the configuration header files. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
159 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
160 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
161 </sect1> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
162 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
163 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
164 <!-- {{{ CDL commands --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
165 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
166 <sect1 id="language.commands"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
167 <title>CDL Commands</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
168 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
169 There are four &CDL;-related commands which can occur at the top-level |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
170 of a &CDL; script: &cdl-package;, &cdl-component;, &cdl-option; and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
171 &cdl-interface;. These correspond to the basic building blocks of the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
172 language (CDL interfaces are described in <xref |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
173 linkend="language.interface">). All of these take the same basic form: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
174 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
175 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
176 cdl_package <name> { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
177 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
178 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
179 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
180 cdl_component <name> { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
181 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
182 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
183 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
184 cdl_option <name> { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
185 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
186 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
187 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
188 cdl_interface <name> { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
189 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
190 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
191 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
192 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
193 The command is followed by a name and by a body of properties, the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
194 latter enclosed in braces. Packages and components can contain other |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
195 entities, so the &cdl-package; and &cdl-component; can also have |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
196 nested commands in their bodies. All names must be unique within a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
197 given configuration. If say the C library package and a TCP/IP stack |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
198 both defined an option with the same name then it would not be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
199 possible to load both of them into a single configuration. There is a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
200 <link linkend="language.naming">naming convention</link> which should |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
201 make accidental name clashes very unlikely. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
202 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
203 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
204 It is possible for two packages to use the same name if there are no |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
205 reasonable circumstances under which both packages could be loaded at |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
206 the same time. One example would be architectural HAL packages: a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
207 given &eCos; configuration can be used on only one processor, so the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
208 architectural HAL packages <varname>CYGPKG_HAL_ARM</varname> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
209 <varname>CYGPKG_HAL_I386</varname> can re-use option names; in fact |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
210 in some cases they are expected to. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
211 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
212 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
213 Each package has one top-level &CDL; script, which is specified in the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
214 packages <link |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
215 linkend="language.database"><database>ecos.db</database> database |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
216 entry</link>. Typically the name of this top-level script is related to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
217 the package, so the kernel package uses |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
218 <filename>kernel.cdl</filename>, but this is just a convention. The |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
219 first command in the top-level script should be &cdl-package;, and the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
220 name used should be the same as in the <database>ecos.db</database> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
221 database. There should be only one &cdl-package; command per package. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
222 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
223 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
224 The various &CDL; entities live in a hierarchy. For example the kernel |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
225 package contains a scheduling component, a synchronization primitives |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
226 component, and a number of others. The synchronization component |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
227 contains various options such as whether or not mutex priority |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
228 inheritance is enabled. There is no upper bound on how far components |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
229 can be nested, but it is rarely necessary to go more than three or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
230 four levels deeper than the package level. Since the naming convention |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
231 incorporates bits of the hierarchy, this has the added advantage of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
232 keeping the names down to a more manageable size. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
233 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
234 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
235 The hierarchy serves two purposes. It allows options to be controlled |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
236 en masse, so disabling a component automatically disables all the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
237 options below it in the hierarchy. It also permits a much simpler |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
238 representation of the configuration in the graphical configuration |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
239 tool, facilitating navigation and modification. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
240 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
241 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
242 By default a package is placed at the top-level of the hierarchy, but |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
243 it is possible to override this using a &parent; property. For example |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
244 an architectural HAL package such as <varname>CYGPKG_HAL_SH</varname> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
245 typically re-parents itself below <varname>CYGPKG_HAL</varname>, and a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
246 platform HAL package would then re-parent itself below the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
247 architectural HAL. This makes it a little bit easier for users to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
248 navigate around the hierarchy. Components, options and interfaces can |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
249 also be re-parented, but this is less common. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
250 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
251 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
252 All components, options and interfaces that are defined directly in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
253 the top-level script will be placed below the package in the hierarchy. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
254 Alternatively they can be nested in the body of the &cdl-package; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
255 command. The following two script fragments are equivalent: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
256 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
257 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
258 cdl_package CYGPKG_LIBC { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
259 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
260 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
261 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
262 cdl_component CYGPKG_LIBC_STRING { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
263 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
264 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
265 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
266 cdl_option CYGPKG_LIBC_CTYPE_INLINES { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
267 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
268 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
269 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
270 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
271 and: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
272 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
273 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
274 cdl_package CYGPKG_LIBC { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
275 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
276 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
277 cdl_component CYGPKG_LIBC_STRING { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
278 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
279 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
280 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
281 cdl_option CYGPKG_LIBC_CTYPE_INLINES { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
282 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
283 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
284 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
285 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
286 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
287 If a script defines options both inside and outside the body of the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
288 &cdl-package; then the ones inside will be processed first. Language |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
289 purists may argue that it would have been better if all contained |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
290 options and components had to go into the body, but in practice it is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
291 often convenient to be able to skip this level of nesting and the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
292 resulting behavior is still well-defined. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
293 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
294 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
295 Components can also contain options and other &CDL; entities, in fact |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
296 that is what distinguishes them from options. These can be defined in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
297 the body of the &cdl-component; command: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
298 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
299 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
300 cdl_component CYGPKG_LIBC_STDIO { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
301 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
302 cdl_component CYGPKG_LIBC_STDIO_FLOATING_POINT { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
303 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
304 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
305 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
306 cdl_option CYGSEM_LIBC_STDIO_THREAD_SAFE_STREAMS { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
307 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
308 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
309 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
310 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
311 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
312 Nesting options inside the bodies of components like this is fine for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
313 simple packages with only a limited number of configuration options, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
314 but it becomes unsatisfactory as the number of options increases. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
315 Instead it is possible to split the &CDL; data into multiple &CDL; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
316 scripts, on a per-component basis. The &script; property should be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
317 used for this. For example, in the case of the C library all |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
318 stdio-related configuration options could be put into |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
319 <filename>stdio.cdl</filename>, and the top-level CDL script |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
320 <filename>libc.cdl</filename> would contain the following: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
321 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
322 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
323 cdl_package CYGPKG_LIBC { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
324 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
325 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
326 cdl_component CYGPKG_LIBC_STDIO { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
327 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
328 script stdio.cdl |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
329 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
330 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
331 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
332 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
333 The <varname>CYGPKG_LIBC_STDIO_FLOATING_POINT</varname> component and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
334 the <varname>CYGSEM_LIBC_STDIO_THREAD_SAFE_STREAMS</varname> option |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
335 can then be placed at the top-level of <filename>stdio.cdl</filename>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
336 It is possible to have some options nested in the body of a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
337 &cdl-component; command and other options in a separate file accessed |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
338 by the &script; property. In such a case the nested options would be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
339 processed first, and then the other script would be read in. A script |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
340 specified by a &script; property should only define new options, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
341 components or interfaces: it should not contain any additional |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
342 properties for the current component. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
343 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
344 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
345 It is possible for a component's &CDL; script to have a sub-component |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
346 which also has a &script; property, and so on. In practice excessive |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
347 nesting like this is rarely useful. It is also possible to ignore the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
348 &CDL; language support for constructing hierarchies automatically and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
349 use the &parent; property explicitly for every single option and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
350 component. Again this is not generally useful. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
351 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
352 <note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
353 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
354 At the time of writing interfaces cannot act as containers. This may |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
355 change in a future version of the component framework. If the change |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
356 is made then interfaces would support the &script; property, just like |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
357 components. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
358 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
359 </note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
360 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
361 </sect1> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
362 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
363 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
364 <!-- {{{ CDL properties --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
365 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
366 <!-- {{{ Introit --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
367 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
368 <sect1 id="language.properties"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
369 <title>CDL Properties</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
370 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
371 Each package, component, option, and interface has a body of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
372 properties, which provide the component framework with information |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
373 about how to handle each option. For example there is a property for a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
374 descriptive text message which can be displayed to a user who is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
375 trying to figure out just what effect manipulating the option would |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
376 have on the target application. There is another property for the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
377 default value, for example whether a particular option should be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
378 enabled or disabled by default. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
379 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
380 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
381 All of the properties are optional, it is legal to define a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
382 configuration option which has an empty body. However some properties |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
383 are more optional than others: users will not appreciate having to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
384 manipulate an option if they are not given any sort of description or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
385 documentation. Other properties are intended only for very specific |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
386 purposes, for example &make-object; and &include-files;, and are used |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
387 only rarely. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
388 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
389 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
390 Because different properties serve very different purposes, their |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
391 syntax is not as uniform as the top-level commands. Some properties |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
392 take no arguments at all. Other properties take a single argument such |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
393 as a description string, or a list of arguments such as a &compile; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
394 property which specifies the file or files that should be compiled if |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
395 a given option is active and enabled. The &define-proc; property takes |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
396 as argument a snippet of &Tcl; code. The &active-if;, &calculated;, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
397 &default-value;, &legal-values; and &requires; properties take various |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
398 expressions. Additional properties may be defined in future which take |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
399 new kinds of arguments. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
400 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
401 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
402 All property parsing code supports options for every property, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
403 although at present the majority of properties do not yet take any |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
404 options. Any initial arguments that begin with a hyphen character |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
405 <literal>-</literal> will be interpreted as an option, for example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
406 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
407 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
408 cdl_package CYGPKG_HAL_ARM { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
409 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
410 make -priority 1 { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
411 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
412 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
413 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
414 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
415 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
416 If the option involves additional data, as for the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
417 <literal>-priority</literal> example above, then this can be written |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
418 as either <literal>-priority=1</literal> or as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
419 <literal>-priority 1</literal>. On occasion the option parsing |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
420 code can get in the way, for example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
421 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
422 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
423 cdl_option CYGNUM_LIBC_TIME_DST_DEFAULT_STATE { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
424 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
425 legal_values -1 to 1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
426 default_value -1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
427 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
428 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
429 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
430 Neither the &legal-values; nor the &default-value; property will |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
431 accept <literal>-1</literal> as a valid option, so this will result in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
432 syntax errors when the &CDL; script is read in by the component |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
433 framework. To avoid problems, the option parsing code will recognize |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
434 the string <literal>--</literal> and will not attempt to interpret any |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
435 subsequent arguments. Hence this option should be written as: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
436 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
437 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
438 cdl_option CYGNUM_LIBC_TIME_DST_DEFAULT_STATE { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
439 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
440 legal_values -- -1 to 1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
441 default_value -- -1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
442 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
443 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
444 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
445 The property parsing code involves a recursive invocation of the Tcl |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
446 interpreter that is used to parse the top-level commands. This means |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
447 that some characters in the body of an option will be treated |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
448 specially. The <literal>#</literal> character can be used for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
449 comments. The backslash character <literal>\</literal>, the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
450 dollar character <literal>$</literal>, square brackets |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
451 <literal>[</literal> and <literal>]</literal>, braces |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
452 <literal>{</literal> and <literal>}</literal>, and the quote character |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
453 <literal>"</literal> may all receive special treatment. Most of the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
454 time this is not a problem because these characters are not useful for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
455 most properties. On occasion having a &Tcl; interpreter around |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
456 performing the parser can be very powerful. For more details of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
457 how the presence of a &Tcl; interpreter can affect &CDL; scripts, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
458 see <xref linkend="language.tcl">. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
459 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
460 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
461 Many of the properties can be used in any of &cdl-package;, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
462 &cdl-component;, &cdl-option; or &cdl-interface;. Other properties are |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
463 more specific. The &script; property is only relevant to components. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
464 The &define-header;, &hardware;, &include-dir;, &include-files;, and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
465 &library; properties apply to a package as a whole, so can only occur |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
466 in the body of a &cdl-package; command. The &calculated;, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
467 &default-value;, &legal-values; and &flavor; properties are not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
468 relevant to packages, as will be explained later. The &calculated; and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
469 &default-value; properties are also not relevant to interfaces. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
470 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
471 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
472 This section lists the various properties, grouped by purpose. Each |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
473 property also has a full reference page in <xref linkend="reference">. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
474 Properties related to values and expressions are described in more |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
475 detail in <xref linkend="language.values">. Properties related to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
476 header file generation and to the build process are described in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
477 <xref linkend="build">. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
478 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
479 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
480 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
481 <!-- {{{ User-visible --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
482 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
483 <sect2 id="language.properties.user"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
484 <title>Information-providing Properties</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
485 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
486 Users can only be expected to manipulate configuration options |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
487 sensibly if they are given sufficient information about these options. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
488 There are three properties which serve to explain an option in plain |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
489 text: the <link linkend="ref.display">&display;</link> property gives |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
490 a textual alias for an option, which is usually more comprehensible |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
491 than something like <literal>CYGPKG_LIBC_TIME_ZONES`</literal>; the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
492 <link linkend="ref.description">&description;</link> property gives a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
493 longer description, typically a paragraph or so; the <link |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
494 linkend="ref.doc">&doc;</link> property specifies the location of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
495 additional on-line documentation related to a configuration option. In |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
496 the context of a graphical tool the &display; string will be the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
497 primary way for users to identify configuration options; the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
498 &description; paragraph will be visible whenever the option is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
499 selected; the on-line documentation will only be accessed when the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
500 user explicitly requests it. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
501 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
502 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
503 cdl_package CYGPKG_UITRON { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
504 display "uITRON compatibility layer" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
505 doc ref/ecos-ref.a.html |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
506 description " |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
507 eCos supports a uITRON Compatibility Layer, providing |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
508 full Level S (Standard) compliance with Version 3.02 of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
509 the uITRON Standard, plus many Level E (Extended) features. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
510 uITRON is the premier Japanese embedded RTOS standard." |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
511 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
512 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
513 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
514 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
515 All three properties take a single argument. For &display; and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
516 &description; this argument is just a string. For &doc; it should be a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
517 pointer to a suitable HTML file, optionally including an anchor within |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
518 that page. If the <link linkend="package.hierarchy">directory layout |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
519 conventions</link> are observed then the component framework will look |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
520 for the HTML file in the package's <filename |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
521 class="directory">doc</filename> sub-directory, otherwise the &doc; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
522 filename will be treated as relative to the package's top-level directory. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
523 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
524 </sect2> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
525 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
526 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
527 <!-- {{{ Hierarchy --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
528 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
529 <sect2 id="language.properties.hierarchy"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
530 <title>The Configuration Hierarchy</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
531 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
532 There are two properties related to the hierarchical organization of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
533 components and options: <link linkend="ref.parent">&parent;</link> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
534 <link linkend="ref.script">&script;</link>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
535 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
536 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
537 The &parent; property can be used to move a &CDL; entity somewhere |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
538 else in the hierarchy. The most common use is for packages, to avoid |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
539 having all the packages appear at the top-level of the configuration |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
540 hierarchy. For example an architectural HAL package such as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
541 <varname>CYGPKG_HAL_SH</varname> is placed below the common HAL |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
542 package <varname>CYGPKG_HAL</varname> using a &parent; property. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
543 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
544 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
545 cdl_package CYGPKG_HAL_SH { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
546 display "SH architecture" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
547 parent CYGPKG_HAL |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
548 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
549 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
550 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
551 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
552 The &parent; property can also be used in the body of a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
553 &cdl-component;, &cdl-option; or &cdl-interface;, but this is less |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
554 common. However care has to be taken since excessive re-parenting can |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
555 be confusing. Care also has to be taken when reparenting below some |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
556 other package that may not actually be loaded in a given |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
557 configuration, since the resulting behavior is undefined. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
558 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
559 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
560 As a special case, if the parent is the empty string then the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
561 &CDL; entity is placed at the root of the hierarchy. This is useful |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
562 for global preferences, default compiler flags, and other settings |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
563 that may affect every package. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
564 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
565 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
566 The &script; property can only be used in the body of a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
567 &cdl-component; command. The property takes a single filename as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
568 argument, and this should be another &CDL; script containing |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
569 additional options, sub-components and interfaces that should go below |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
570 the current component in the hierarchy. If the <link |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
571 linkend="package.hierarchy">directory layout conventions</link> are |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
572 observed then the component framework will look for the specified file |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
573 relative to the <filename class="directory">cdl</filename> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
574 subdirectory of the package, otherwise the filename will be treated as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
575 relative to the package's top-level directory. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
576 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
577 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
578 cdl_component CYGPKG_LIBC_STDIO { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
579 display "Standard input/output functions" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
580 flavor bool |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
581 requires CYGPKG_IO |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
582 requires CYGPKG_IO_SERIAL_HALDIAG |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
583 default_value 1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
584 description " |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
585 This enables support for standard I/O functions from <stdio.h>." |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
586 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
587 script stdio.cdl |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
588 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
589 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
590 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
591 </sect2> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
592 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
593 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
594 <!-- {{{ Value --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
595 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
596 <sect2 id="language.properties.value"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
597 <title>Value-related Properties</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
598 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
599 There are seven properties which are related to option values and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
600 state: <link linkend="ref.flavor">&flavor;</link>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
601 <link linkend="ref.calculated">&calculated;</link>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
602 <link linkend="ref.default-value">&default-value;</link>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
603 <link linkend="ref.legal-values">&legal-values;</link>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
604 <link linkend="ref.active-if">&active-if;</link>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
605 <link linkend="ref.implements">&implements;</link>, and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
606 <link linkend="ref.requires">&requires;</link>. More detailed |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
607 information can be found in <xref linkend="language.values">. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
608 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
609 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
610 In the context of configurability, the concept of an option's value is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
611 somewhat non-trivial. First an option may or may not be loaded: it is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
612 possible to build a configuration which has the math library but not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
613 the kernel; however the math library's &CDL; scripts still reference |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
614 kernel options, for example |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
615 <varname>CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE</varname> has a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
616 &requires; constraint on |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
617 <varname>CYGVAR_KERNEL_THREADS_DATA</varname>. Even if an option is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
618 loaded it may or may not be active, depending on what is happening |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
619 higher up in the hierarchy: if the C library's |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
620 <varname>CYGPKG_LIBC_STDIO</varname> component is disabled then some |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
621 other options such as <varname>CYGNUM_LIBC_STDIO_BUFSIZE</varname> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
622 become irrelevant. In addition each option has both a boolean |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
623 enabled/disabled flag and a data part. For many options only the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
624 boolean flag is of interest, while for others only the data part is of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
625 interest. The &flavor; property can be used to control this: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
626 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
627 <variablelist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
628 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
629 <term><literal>flavor none</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
630 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
631 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
632 This flavor indicates that neither the boolean nor the data parts are |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
633 user-modifiable: the option is always enabled and the data is always |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
634 set to <literal>1</literal>. The most common use for this is to have a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
635 component that just acts as a placeholder in the hierarchy, allowing |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
636 various options to be grouped below it. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
637 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
638 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
639 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
640 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
641 <term><literal>flavor bool</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
642 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
643 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
644 Only the boolean part of the option is user-modifiable. The data part |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
645 is fixed at <literal>1</literal>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
646 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
647 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
648 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
649 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
650 <term><literal>flavor data</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
651 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
652 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
653 Only the data part of the option is user-modifiable. The boolean part |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
654 is fixed at enabled. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
655 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
656 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
657 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
658 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
659 <term><literal>flavor booldata</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
660 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
661 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
662 Both the boolean and the data part of the option are user-modifiable. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
663 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
664 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
665 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
666 </variablelist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
667 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
668 For more details of &CDL; flavors and how a flavor affects expression |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
669 evaluation, and other consequences, see <xref |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
670 linkend="language.values">. The &flavor; property cannot be used for a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
671 package because packages always have the <literal>booldata</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
672 flavor. Options and components have the <literal>bool</literal> flavor |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
673 by default, since most configuration choices are simple yes-or-no |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
674 choices. Interfaces have the <literal>data</literal> flavor by default. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
675 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
676 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
677 The &calculated; property can be used for options which should not be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
678 user-modifiable, but which instead are fixed by the target hardware or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
679 determined from the current values of other options. In general |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
680 &calculated; options should be avoided, since they can be confusing to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
681 users who need to figure out whether or not a particular option can |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
682 actually be changed. There are a number of valid uses for &calculated; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
683 options, and quite a few invalid ones as well. The <link |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
684 linkend="ref.calculated">reference packages</link> should be consulted |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
685 for further details. The property takes an <link |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
686 linkend="language.expression">ordinary &CDL; expression</link> as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
687 argument, for example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
688 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
689 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
690 # A constant on some target hardware, perhaps user-modifiable on other |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
691 # targets. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
692 cdl_option CYGNUM_HAL_RTC_PERIOD { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
693 display "Real-time clock period" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
694 flavor data |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
695 calculated 12500 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
696 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
697 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
698 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
699 The &calculated; property cannot be used for packages or interfaces. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
700 The value of a package always corresponds to the version of that |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
701 package which is loaded, and this is under user control. Interfaces |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
702 are implicitly calculated, based on the number of active and enabled |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
703 implementors. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
704 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
705 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
706 The &default-value; property is similar to &calculated;, but only |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
707 specifies a default value which users can modify. Again this property |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
708 is not relevant to packages or interfaces. A typical example would be: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
709 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
710 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
711 cdl_option CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
712 display "Include GDB multi-threading debug support" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
713 requires CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
714 default_value CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
715 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
716 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
717 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
718 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
719 The &legal-values; property imposes a constraint on the possible |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
720 values of the data part of an option. Hence it is only applicable to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
721 options with the <literal>data</literal> or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
722 <literal>booldata</literal> flavors. It cannot be used for a package |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
723 since the only valid value for a package is its version number. The |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
724 arguments to the &legal-values; property should constitute a <link |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
725 linkend="language.list-expression">&CDL; list expression</link>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
726 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
727 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
728 cdl_option CYGNUM_LIBC_TIME_STD_DEFAULT_OFFSET { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
729 display "Default Standard Time offset" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
730 flavor data |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
731 legal_values -- -90000 to 90000 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
732 default_value -- 0 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
733 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
734 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
735 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
736 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
737 The &active-if; property does not relate directly to an option's |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
738 value, but rather to its active state. Usually this is controlled via |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
739 the configuration hierarchy: if the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
740 <varname>CYGPKG_LIBC_STDIO</varname> component is disabled then all |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
741 options below it are inactive and do not have any consequences. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
742 In some cases the hierarchy does not provide sufficient control, for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
743 example an option should only be active if two disjoint sets of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
744 conditions are satisfied: the hierarchy could be used for one of these |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
745 conditions, and an additional &active-if; property could be used for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
746 the other one. The arguments to &active-if; should constitute a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
747 <link linkend="language.goal-expression">&CDL; goal expression</link>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
748 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
749 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
750 # Do not provide extra semaphore debugging if there are no semaphores |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
751 cdl_option CYGDBG_KERNEL_INSTRUMENT_BINSEM { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
752 active_if CYGPKG_KERNEL_SYNCH |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
753 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
754 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
755 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
756 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
757 The &implements; property is related to the concept of <link |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
758 linkend="language.interface">&CDL; interfaces</link>. If an option is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
759 active and enabled and it implements a particular interface then it |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
760 contributes <literal>1</literal> to that interface's value. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
761 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
762 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
763 cdl_package CYGPKG_NET_EDB7XXX_ETH_DRIVERS { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
764 display "Cirrus Logic ethernet driver" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
765 implements CYGHWR_NET_DRIVERS |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
766 implements CYGHWR_NET_DRIVER_ETH0 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
767 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
768 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
769 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
770 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
771 The &requires; property is used to impose constraints on the user's |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
772 choices. For example it is unreasonable to expect the C library to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
773 provide thread-safe implementations of certain functions if the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
774 underlying kernel support has been disabled, or even if the kernel is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
775 not being used at all. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
776 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
777 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
778 cdl_option CYGSEM_LIBC_PER_THREAD_ERRNO { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
779 display "Per-thread errno" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
780 doc ref/ecos-ref.15.html |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
781 requires CYGVAR_KERNEL_THREADS_DATA |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
782 default_value 1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
783 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
784 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
785 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
786 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
787 The arguments to the &requires; property should be a <link |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
788 linkend="language.goal-expression">&CDL; goal expression</link>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
789 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
790 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
791 </sect2> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
792 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
793 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
794 <!-- {{{ Header file generation --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
795 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
796 <sect2 id="language.properties.define"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
797 <title>Generating the Configuration Header Files</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
798 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
799 When creating or updating a build tree the component framework will |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
800 also generate configuration header files, one per package. By default |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
801 it will generate a <literal>#define</literal> for each option, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
802 component or interface that is active and enabled. For options with |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
803 the <literal>data</literal> or <literal>booldata</literal> flavors the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
804 <literal>#define</literal> will use the option's data part, otherwise |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
805 it will use the constant <literal>1</literal>. Typical output would |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
806 include: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
807 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
808 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
809 #define CYGFUN_LIBC_TIME_POSIX 1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
810 #define CYGNUM_LIBC_TIME_DST_DEFAULT_STATE -1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
811 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
812 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
813 There are six properties which can be used to control the header file |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
814 generation process: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
815 <link linkend="ref.define-header">&define-header;</link>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
816 <link linkend="ref.no-define">&no-define;</link>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
817 <link linkend="ref.define-format">&define-format;</link>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
818 <link linkend="ref.define">&define;</link>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
819 <link linkend="ref.if-define">&if-define;</link>, and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
820 <link linkend="ref.define-proc">&define-proc;</link>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
821 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
822 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
823 By default the component framework will generate a configuration |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
824 header file for each package based on the package's name: everything |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
825 up to and including the first underscore is discarded, the rest of the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
826 name is lower-cased, and a <literal>.h</literal> suffix is appended. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
827 For example the configuration header file for the kernel package |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
828 <varname>CYGPKG_KERNEL</varname> is <filename |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
829 class="headerfile">pkgconf/kernel.h</filename>. The &define-header; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
830 property can be used to specify an alternative filename. This applies |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
831 to all the components and options within a package, so it can only be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
832 used in the body of a &cdl-package; command. For example the following |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
833 specifies that the configuration header file for the SPARClite HAL |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
834 package is <filename |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
835 class="headerfile">pkgconf/hal_sparclite.h</filename>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
836 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
837 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
838 cdl_package CYGPKG_HAL_SPARCLITE { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
839 display "SPARClite architecture" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
840 parent CYGPKG_HAL |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
841 hardware |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
842 define_header hal_sparclite.h |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
843 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
844 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
845 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
846 <note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
847 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
848 At present the main use for the &define-header; property is related |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
849 to hardware packages, see the <link linkend="ref.hardware">reference |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
850 pages</link> for more details. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
851 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
852 </note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
853 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
854 The &no-define; property is used to suppress the generation of the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
855 default <literal>#define</literal>. This can be useful if an option's |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
856 consequences are all related to the build process or to constraints, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
857 and the option is never actually checked in any source code. It can |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
858 also be useful in conjunction with the &define;, &if-define; or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
859 &define-proc; properties. The &no-define; property does not take any |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
860 arguments. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
861 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
862 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
863 cdl_component CYG_HAL_STARTUP { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
864 display "Startup type" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
865 flavor data |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
866 legal_values { "RAM" "ROM" } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
867 default_value {"RAM"} |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
868 no_define |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
869 define -file system.h CYG_HAL_STARTUP |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
870 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
871 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
872 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
873 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
874 This example also illustrates the &define; property, which can be used |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
875 to generate a <literal>#define</literal> in addition to the default |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
876 one. It takes a single argument, the name of the symbol to be defined. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
877 It also takes options to control the configuration header file in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
878 which the symbol should be defined and the format to be used. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
879 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
880 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
881 The &define-format; property can be used to control how the value part |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
882 of the default <literal>#define</literal> gets formatted. For example |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
883 a format string of <literal>"0x%04x"</literal> could be used to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
884 generate a four-digit hexadecimal number. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
885 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
886 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
887 The &if-define; property is intended for use primarily to control |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
888 assertions, tracing, and similar functionality. It supports a specific |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
889 implementation model for these, allowing control at the grain of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
890 packages or even individual source files. The <link |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
891 linkend="ref.if-define">reference pages</link> provide additional |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
892 information. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
893 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
894 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
895 The &define-proc; property provides an escape mechanism for those |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
896 cases where something special has to happen at configuration header |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
897 file generation time. It takes a single argument, a fragment of &Tcl; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
898 code, which gets executed when the header file is generated. This code |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
899 can output arbitrary data to the header file, or perform any other |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
900 actions that might be appropriate. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
901 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
902 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
903 </sect2> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
904 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
905 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
906 <!-- {{{ Builds --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
907 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
908 <sect2 id="language.properties.build"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
909 <title>Controlling what gets Built</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
910 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
911 There are six properties which affect the build process: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
912 <link linkend="ref.compile">&compile;</link>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
913 <link linkend="ref.make">&make;</link>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
914 <link linkend="ref.make-object">&make-object;</link>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
915 <link linkend="ref.library">&library;</link>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
916 <link linkend="ref.include-dir">&include-dir;</link>, and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
917 <link linkend="ref.include-files">&include-files;</link>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
918 The last three apply to a package as a whole, and can only occur in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
919 the body of a &cdl-package; command. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
920 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
921 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
922 Most of the source files that go into a package should simply be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
923 compiled with the appropriate compiler, selected by the target |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
924 architecture, and with the appropriate flags, with an additional set |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
925 defined by the target hardware and possible modifications on a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
926 per-package basis. The resulting object files will go into the library |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
927 <filename>libtarget.a</filename>, which can then be linked against |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
928 application code. The &compile; property is used to list these source |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
929 files: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
930 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
931 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
932 cdl_package CYGPKG_ERROR { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
933 display "Common error code support" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
934 compile strerror.cxx |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
935 include_dir cyg/error |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
936 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
937 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
938 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
939 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
940 The arguments to the &compile; property should be one or more source |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
941 files. Typically most of the sources will be needed for the package as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
942 a whole, and hence they will be listed in one or more &compile; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
943 properties in the body of the &cdl-package;. Some sources may be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
944 specific to particular configuration options, in other words there is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
945 no point in compiling them unless that option is enabled, in which |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
946 case the sources should be listed in a &compile; property in the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
947 corresponding &cdl-option;, &cdl-component; or &cdl-interface; body. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
948 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
949 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
950 Some packages may have more complicated build requirements, for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
951 example they may involve a special target such as a linker script |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
952 which should not end up in the usual library, or they may involve |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
953 special build steps for generating an object file. The &make; and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
954 &make-object; properties provide support for such requirements, for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
955 example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
956 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
957 <programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
958 cdl_package CYGPKG_HAL_MN10300_AM33 { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
959 display "MN10300 AM33 variant" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
960 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
961 make { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
962 <PREFIX>/lib/target.ld: <PACKAGE>/src/mn10300_am33.ld |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
963 $(CC) -E -P -Wp,-MD,target.tmp -DEXTRAS=1 -xc $(INCLUDE_PATH) \ |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
964 $(CFLAGS) -o $@ $< |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
965 @echo $@ ": \\" > $(notdir $@).deps |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
966 @tail +2 target.tmp >> $(notdir $@).deps |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
967 @echo >> $(notdir $@).deps |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
968 @rm target.tmp |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
969 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
970 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
971 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
972 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
973 For full details of custom build steps and the build process |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
974 generally, see <xref linkend="build">. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
975 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
976 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
977 By default all object files go into the library |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
978 <filename>libtarget.a</filename>. It is possible to override this at |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
979 the package level using the &library; property, but this should be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
980 avoided since it complicates application development: instead of just |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
981 linking with a single library for all &eCos;-related packages, it |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
982 suddenly becomes necessary to link with several libraries. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
983 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
984 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
985 The &include-dir; and &include-files; properties relate to a package's |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
986 exported header files. By default a package's header files will be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
987 exported to the <filename class="directory">install/include</filename> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
988 directory. This is the desired behavior for some packages like the C |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
989 library, since headers like <filename |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
990 class="headerfile">stdio.h</filename> should exist at that level. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
991 However if all header files were to end up in that directory then |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
992 there would be a significant risk of a name clash. Instead it is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
993 better for packages to specify some sub-directory for their exported |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
994 header files, for example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
995 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
996 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
997 cdl_package CYGPKG_INFRA { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
998 display "Infrastructure" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
999 include_dir cyg/infra |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1000 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1001 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1002 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1003 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1004 The various header files exported by the infrastructure, for example |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1005 <filename class="headerfile">cyg_ass.h</filename> and <filename |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1006 class="headerfile">cyg_trac.h</filename> will now end up in the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1007 <filename class="directory">install/include/cyg/infra</filename> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1008 sub-directory, where a name clash is very unlikely. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1009 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1010 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1011 For packages which follow the <link |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1012 linkend="package.hierarchy">directory layout conventions</link> the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1013 component framework will assume that the package's |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1014 <filename class="directory">include</filename> sub-directory contains |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1015 all exported header files. If this is not the case, for example |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1016 because the package is sufficiently simple that the layout convention |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1017 is inappropriate, then the exported header files can be listed |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1018 explicitly in an &include-files; property. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1019 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1020 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1021 </sect2> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1022 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1023 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1024 <!-- {{{ Miscellaneous --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1025 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1026 <sect2 id="language.properties.miscellaneous"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1027 <title>Miscellaneous Properties</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1028 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1029 The <link linkend="ref.hardware">&hardware;</link> property is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1030 only relevant to packages. Some packages such as device drivers and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1031 HAL packages are hardware-specific, and generally it makes no sense to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1032 add such packages to a configuration unless the corresponding hardware |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1033 is present on your target system. Typically hardware package selection |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1034 happens automatically when you select your target. The &hardware; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1035 property should be used to identify a hardware-specific package, and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1036 does not take any arguments. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1037 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1038 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1039 cdl_package CYGPKG_HAL_MIPS { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1040 display "MIPS architecture" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1041 parent CYGPKG_HAL |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1042 hardware |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1043 include_dir cyg/hal |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1044 define_header hal_mips.h |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1045 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1046 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1047 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1048 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1049 At present the &hardware; property is largely ignored by the component |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1050 framework. This may change in future releases. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1051 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1052 </sect2> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1053 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1054 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1055 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1056 </sect1> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1057 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1058 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1059 <!-- {{{ Naming conventions --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1060 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1061 <sect1 id="language.naming"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1062 <title>Option Naming Convention</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1063 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1064 All the options in a given configuration live in the same namespace. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1065 Furthermore it is not possible for two separate options to have the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1066 same name, because this would make any references to those options in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1067 &CDL; expressions ambiguous. A naming convention exists to avoid |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1068 problems. It is recommended that component writers observe some or all |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1069 of this convention to reduce the probability of name clashes with |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1070 other packages. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1071 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1072 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1073 There is an important restriction on option names. Typically the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1074 component framework will output a <literal>#define</literal> for every |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1075 active and enabled option, using the name as the symbol being defined. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1076 This requires that all names are valid C preprocessor symbols, a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1077 limitation that is enforced even for options which have the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1078 &no-define; property. Preprocessor symbols can be any sequence of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1079 lower case letters <literal>a</literal>-<literal>z</literal>, upper |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1080 case letters, <literal>A</literal>-<literal>Z</literal>, the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1081 underscore character <literal>_</literal>, and the digits |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1082 <literal>0</literal>-<literal>9</literal>. The first character must be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1083 a non-digit. Using an underscore as the first character is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1084 discouraged, because that may clash with reserved language |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1085 identifiers. In addition there is a convention that preprocessor |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1086 symbols only use upper case letters, and some component writers may |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1087 wish to follow this convention. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1088 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1089 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1090 A typical option name could be something like |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1091 <varname>CYGSEM_KERNEL_SCHED_BITMAP</varname>. This name consists of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1092 several different parts: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1093 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1094 <orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1095 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1096 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1097 The first few characters, in this case the three letters |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1098 <literal>CYG</literal>, are used to identify the organization that |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1099 produced the package. For historical reasons packages produced by Red |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1100 Hat tend to use the prefix <literal>CYG</literal> rather than |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1101 <literal>RHAT</literal>. Component writers should use their own |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1102 prefix: even when cutting and pasting from an existing &CDL; script |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1103 the prefix should be changed to something appropriate to their |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1104 organization. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1105 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1106 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1107 It can be argued that a short prefix, often limited to upper case |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1108 letters, is not sufficiently long to eliminate the possibility of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1109 name clashes. A longer prefix could be used, for example one based on |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1110 internet domain names. However the C preprocessor has no concept of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1111 namespaces or <literal>import</literal> directives, so it would always |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1112 be necessary to use the full option name in component source code |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1113 which gets tedious - option names tend to be long enough as it is. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1114 There is a small increased risk of name clashes, but this risk is felt |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1115 to be acceptable. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1116 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1117 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1118 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1119 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1120 The next three characters indicate the nature of the option, for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1121 example whether it affects the interface or just the implementation. A |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1122 list of common tags is given below. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1123 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1124 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1125 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1126 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1127 The <literal>KERNEL_SCHED</literal> part indicates the location of the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1128 option within the overall hierarchy. In this case the option is part of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1129 the scheduling component of the kernel package. Having the hierarchy |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1130 details as part of the option name can help in understanding |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1131 configurable code and further reduces the probability of a name clash. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1132 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1133 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1134 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1135 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1136 The final part, <literal>BITMAP</literal>, identifies the option |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1137 itself. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1138 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1139 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1140 </orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1141 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1142 The three-character tag is intended to provide some additional |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1143 information about the nature of the option. There are a number of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1144 pre-defined tags. However for many options there is a choice: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1145 options related to the platform should normally use |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1146 <literal>HWR</literal>, but numerical options should normally use |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1147 <literal>NUM</literal>; a platform-related numerical option such as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1148 the size of an interrupt stack could therefore use either tag. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1149 There are no absolute rules, and it is left to component writers to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1150 interpret the following guidelines: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1151 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1152 <variablelist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1153 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1154 <term><literal>xxxARC_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1155 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1156 The <literal>ARC</literal> tag is intended for options related |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1157 to the processor architecture. Typically such options will only occur |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1158 in architectural or variant HAL packages. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1159 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1160 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1161 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1162 <term><literal>xxxHWR_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1163 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1164 The <literal>HWR</literal> tag is intended for options related to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1165 the specific target board. Typically such options will only occur in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1166 platform HAL packages. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1167 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1168 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1169 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1170 <term><literal>xxxPKG_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1171 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1172 This tag is intended for packages or components, in other words |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1173 options which extend the configuration hierarchy. Arguably a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1174 <literal>COM</literal> tag would be more appropriate for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1175 components, but this could be confusing because of the considerable |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1176 number of computing terms that begin with com. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1177 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1178 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1179 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1180 <term><literal>xxxGLO_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1181 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1182 This is intended for global configuration options, especially |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1183 preferences. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1184 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1185 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1186 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1187 <term><literal>xxxDBG_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1188 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1189 The <literal>DBG</literal> tag indicates that the option is in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1190 some way related to debugging, for example it may enable assertions in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1191 some part of the system. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1192 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1193 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1194 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1195 <term><literal>xxxTST_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1196 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1197 This tag is for testing-related options. Typically these do not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1198 affect actual application code, instead they control the interaction |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1199 between target-side test cases and a host-side testing infrastructure. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1200 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1201 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1202 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1203 <term><literal>xxxFUN_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1204 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1205 This is for configuration options which affect the interface of a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1206 package. There are a number of related tag which are also |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1207 interface-related. <literal>xxxFUN_</literal> is intended primarily |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1208 for options that control whether or not one or more functions are |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1209 provided by the package, but can also be used if none of the other |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1210 interface-related tags is applicable. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1211 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1212 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1213 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1214 <term><literal>xxxVAR_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1215 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1216 This is analogous to <literal>FUN</literal> but controls the presence |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1217 or absence of one or more variables or objects. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1218 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1219 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1220 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1221 <term><literal>xxxCLS_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1222 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1223 The <literal>CLS</literal> tag is intended only for packages that |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1224 provide an object-oriented interface, and controls the presence or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1225 absence of an entire class. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1226 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1227 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1228 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1229 <term><literal>xxxMFN_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1230 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1231 This is also for object-orientated interfaces, and indicates the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1232 presence or absence of a member function rather than an entire class. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1233 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1234 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1235 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1236 <term><literal>xxxSEM_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1237 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1238 A <literal>SEM</literal> option does not affect the interface (or if |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1239 does affect the interface, this is incidental). Instead it is used for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1240 options which have a fundamental effect on the semantic behavior of a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1241 package. For example the choice of kernel schedulers is semantic in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1242 nature: it does not affect the interface, in particular the function |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1243 <function>cyg_thread_create</function> exists irrespective of which |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1244 scheduler has been selected. However it does have a major impact on |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1245 the system's behavior. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1246 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1247 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1248 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1249 <term><literal>xxxIMP_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1250 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1251 <literal>IMP</literal> is for implementation options. These do not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1252 affect either the interface or the semantic behavior (with the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1253 possible exception of timing-related changes). A typical |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1254 implementation option controls whether or not a particular function or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1255 set of functions should get inlined. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1256 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1257 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1258 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1259 <term><literal>xxxNUM_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1260 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1261 This tag is for numerical options, for example the number of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1262 scheduling priority levels. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1263 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1264 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1265 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1266 <term><literal>xxxDAT_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1267 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1268 This is for data items that are not numerical in nature, for example a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1269 device name. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1270 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1271 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1272 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1273 <term><literal>xxxBLD_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1274 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1275 The <literal>BLD</literal> tag indicates an option that affects |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1276 the build process, for example compiler flag settings. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1277 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1278 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1279 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1280 <term><literal>xxxINT_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1281 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1282 This should normally be used for &CDL; interfaces, which is a language |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1283 construct that is largely independent from the interface exported by a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1284 package via its header files. For more details of &CDL; interfaces |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1285 see <xref linkend="language.interface">. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1286 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1287 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1288 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1289 <term><literal>xxxPRI_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1290 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1291 This tag is not normally used for configuration options. Instead |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1292 it is used by &CDL; scripts to pass additional private information to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1293 the source code via the configuration header files, typically inside a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1294 &define-proc; property. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1295 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1296 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1297 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1298 <term><literal>xxxSRC_</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1299 <listitem><para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1300 This tag is not normally used for configuration options. Instead |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1301 it can be used by package source code to interact with such options, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1302 especially in the context of the &if-define; property. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1303 </para></listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1304 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1305 </variablelist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1306 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1307 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1308 There is one special case of a potential name clash that is worth |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1309 mentioning here. When the component framework generates a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1310 configuration header file for a given package, by default it will use |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1311 a name derived from the package name (the &define-header; property can |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1312 be used to override this). The file name is constructed from the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1313 package name by removing everything up to and including the first |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1314 underscore, converting the remainder of the name to lower case, and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1315 appending a <literal>.h</literal> suffix. For example the kernel |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1316 package <varname>CYGPKG_KERNEL</varname> will involve a header file |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1317 <filename class="headerfile">pkgconf/kernel.h</filename>. If a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1318 configuration contained some other package |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1319 <varname>XYZPKG_KERNEL</varname> then this would attempt to use the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1320 same configuration header file, with unfortunate effects. Case |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1321 sensitivity could introduce problems as well, so a package |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1322 <varname>xyzpkg_kernel</varname> would involve the same problem. Even |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1323 if the header file names preserved the case of the package name, not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1324 all file systems are case sensitive. There is no simple solution to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1325 this problem. Changing the names of the generated configuration header |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1326 files would involve a major incompatible change to the interface, to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1327 solve a problem which is essentially hypothetical in nature. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1328 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1329 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1330 </sect1> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1331 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1332 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1333 <!-- {{{ Introduction to Tcl --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1334 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1335 <sect1 id="language.tcl"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1336 <title>An Introduction to Tcl</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1337 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1338 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1339 All &CDL; scripts are implemented as &Tcl; scripts, and are read in by |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1340 running the data through a standard &Tcl; interpreter, extended with a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1341 small number of additional commands such as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1342 <literal>cdl_option</literal> and <literal>cdl_component</literal>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1343 Often it is not necessary to know the full details of &Tcl; syntax. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1344 Instead it is possible to copy an existing script, perform some copy |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1345 and paste operations, and make appropriate changes to names and to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1346 various properties. However there are also cases where an |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1347 understanding of &Tcl; syntax is very desirable, for example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1348 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1349 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1350 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1351 cdl_option CYGDAT_UITRON_MEMPOOLFIXED_EXTERNS { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1352 display "Externs for initialization" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1353 flavor data |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1354 default_value {"static char fpool1[ 2000 ], \\\n\ |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1355 fpool2[ 2000 ], \\\n\ |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1356 fpool3[ 2000 ];"} |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1357 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1358 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1359 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1360 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1361 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1362 This causes the &cdl-option; command to be executed, which in turn |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1363 evaluates its body in a recursive invocation of the &Tcl; interpreter. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1364 When the &default-value; property is encountered the braces around the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1365 value part are processed by the interpreter, stopping it from doing |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1366 further processing of the braced contents (except for backslash |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1367 processing at the end of a line, that is special). In particular it |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1368 prevents command substitution for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1369 <literal>[ 2000 ]</literal>. A single argument will be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1370 passed to the &default-value; command which expects a &CDL; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1371 expression, so the expression parsing code is passed the following: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1372 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1373 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1374 <screen width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1375 "static char fpool1[ 2000 ], \\\n fpool2[ 2000 ], \\\n fpool3[ 2000 ];" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1376 </screen> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1377 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1378 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1379 The &CDL; expression parsing code will treat this as a simple string |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1380 constant, as opposed to a more complicated expression involving other |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1381 options and various operators. The string parsing code will perform |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1382 the usual backslash substitutions so the actual default value will be: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1383 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1384 <screen width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1385 static char fpool1[ 2000 ], \ |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1386 fpool2[ 2000 ], \ |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1387 fpool3[ 2000 ]; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1388 </screen> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1389 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1390 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1391 If the user does not modify the option's value then the following |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1392 will be generated in the appropriate configuration header file: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1393 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1394 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1395 #define CYGDAT_UITRON_MEMPOOLFIXED_EXTERNS static char fpool1[ 2000 ], \ |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1396 fpool2[ 2000 ], \ |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1397 fpool3[ 2000 ]; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1398 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1399 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1400 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1401 Getting this desired result usually requires an understanding of both |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1402 &Tcl; syntax and &CDL; expression syntax. Sometimes it is possible to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1403 substitute a certain amount of trial and error instead, but this may |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1404 prove frustrating. It is also worth pointing out that many &CDL; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1405 scripts do not involve this level of complexity. On the other hand, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1406 some of the more advanced features of the &CDL; language involve |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1407 fragments of &Tcl; code, for example the &define-proc; property. To |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1408 use these component writers will need to know about the full &Tcl; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1409 language as well as the syntax. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1410 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1411 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1412 Although the current example may seem to suggest that &Tcl; is rather |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1413 complicated, it is actually a very simple yet powerful scripting |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1414 language: the syntax is defined by just eleven rules. On occasion this |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1415 simplicity means that Tcl's behavior is subtly different from other |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1416 languages, which can confuse newcomers. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1417 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1418 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1419 When the Tcl interpreter is passed some data such as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1420 <literal>puts Hello</literal>, it splits this data into a command |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1421 and its arguments. The command will be terminated by a newline or by a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1422 semicolon, unless one of the quoting mechanisms is used. The command |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1423 and each of its arguments are separated by white space. So in the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1424 following example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1425 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1426 <screen width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1427 puts Hello |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1428 set x 42 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1429 </screen> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1430 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1431 This will result in two separate commands being executed. The first |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1432 command is <literal>puts</literal> and is passed a single argument, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1433 <literal>Hello</literal>. The second command is <literal>set</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1434 and is passed two arguments, <literal>x</literal> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1435 <literal>42</literal>. The intervening newline character serves to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1436 terminate the first command, and a semi-colon separator could be used |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1437 instead: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1438 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1439 <screen width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1440 puts Hello;set x 42 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1441 </screen> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1442 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1443 Any white space surrounding the semicolon is just ignored because it |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1444 does not serve to separate arguments. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1445 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1446 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1447 Now consider the following: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1448 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1449 <screen width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1450 set x Hello world |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1451 </screen> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1452 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1453 This is not valid &Tcl;. It is an attempt to invoke the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1454 <literal>set</literal> command with three arguments: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1455 <literal>x</literal>, <literal>Hello</literal>, and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1456 <literal>world</literal>. The <literal>set</literal> only takes two |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1457 arguments, a variable name and a value, so it is necessary to combine |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1458 the data into a single argument by quoting: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1459 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1460 <screen width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1461 set x "Hello world" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1462 </screen> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1463 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1464 When the &Tcl; interpreter encounters the first quote character it |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1465 treats all subsequent data up to but not including the closing quote |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1466 as part of the current argument. The quote marks are removed by the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1467 interpreter, so the second argument passed to the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1468 <literal>set</literal> command is just <literal>Hello world</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1469 without the quote characters. This can be significant in the context |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1470 of &CDL; scripts. For example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1471 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1472 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1473 cdl_option CYG_HAL_STARTUP { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1474 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1475 default_value "RAM" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1476 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1477 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1478 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1479 The &Tcl; interpreter strips off the quote marks so the &CDL; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1480 expression parsing code sees <literal>RAM</literal> instead of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1481 <literal>"RAM"</literal>. It will treat this as a reference to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1482 some unknown option <varname>RAM</varname> rather than as a string |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1483 constant, and the expression evaluation code will use a value of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1484 <literal>0</literal> when it encounters an option that is not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1485 currently loaded. Therefore the option |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1486 <varname>CYG_HAL_STARTUP</varname> ends up with a default value of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1487 <literal>0</literal>. Either braces or backslashes should be used to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1488 avoid this, for example |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1489 <literal>default_value { "RAM" }</literal>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1490 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1491 <note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1492 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1493 There are long-term plans to implement some sort of &CDL; validation |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1494 utility <application class="software">cdllint</application> which |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1495 could catch common errors like this one. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1496 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1497 </note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1498 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1499 A quoted argument continues until the closing quote character is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1500 encountered, which means that it can span multiple lines. Newline or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1501 semicolon characters do not terminate the current command in such |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1502 cases. &description; properties usually make use of this: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1503 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1504 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1505 cdl_package CYGPKG_ERROR { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1506 description " |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1507 This package contains the common list of error and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1508 status codes. It is held centrally to allow |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1509 packages to interchange error codes and status |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1510 codes in a common way, rather than each package |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1511 having its own conventions for error/status |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1512 reporting. The error codes are modelled on the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1513 POSIX style naming e.g. EINVAL etc. This package |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1514 also provides the standard strerror() function to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1515 convert error codes to textual representation." |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1516 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1517 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1518 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1519 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1520 The &Tcl; interpreter supports much the same forms of backslash |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1521 substitution as other common programming languages. Some backslash |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1522 sequences such as <literal>\n</literal> will be replaced by the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1523 appropriate character. The sequence <literal>\\</literal> will be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1524 replaced by a single backslash. A backslash at the very end of a line |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1525 will cause that backslash, the newline character, and any white space |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1526 at the start of the next line to be replaced by a single space. Hence |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1527 the following two Tcl commands are equivalent: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1528 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1529 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1530 puts "Hello\nworld\n" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1531 puts \ |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1532 "Hello |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1533 world |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1534 " |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1535 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1536 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1537 If a &description; string needs to contain quote marks or other |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1538 special characters then backslash escapes can be used. In addition to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1539 quote and backslash characters, the Tcl interpreter treats square |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1540 brackets, the <literal>$</literal> character, and braces specially. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1541 Square brackets are used for command substitution, for example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1542 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1543 <screen width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1544 puts "The answer is [expr 6 * 9]" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1545 </screen> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1546 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1547 When the Tcl interpreter encounters the square brackets it will treat |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1548 the contents as another command that should be executed first, and the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1549 result of executing that is used when continuing to process the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1550 script. In this case the Tcl interpreter will execute the command |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1551 <literal>expr 6 * 9</literal>, yielding a result of 42 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1552 <footnote> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1553 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1554 It is possible that some versions of the Tcl interpreter will instead |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1555 produce a result of 54 when asked to multiply six by nine. Appropriate |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1556 <ulink url="http://www.douglasadams.com/creations/hhgg.html">reference |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1557 documentation</ulink> should be consulted for more information on why |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1558 42 is in fact the correct answer. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1559 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1560 </footnote> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1561 and then the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1562 Tcl interpreter will execute <literal>puts "The answer is 42"</literal>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1563 It should be noted that the interpreter performs only one level |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1564 of substitution: if the result of performing command substitution |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1565 performs further special characters such as square brackets then these |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1566 will not be treated specially. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1567 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1568 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1569 Command substitution will not prove useful for many &CDL; scripts, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1570 except for e.g. a &define-proc; property which involves a fragment of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1571 &Tcl; code. Potentially there are some interesting uses, for example |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1572 to internationalize &display; strings. However care does have to be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1573 taken to avoid unexpected command substitution, for example if an |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1574 option description involves square brackets then typically these would |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1575 require backslash-escapes. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1576 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1577 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1578 The <literal>$</literal> character is used in Tcl scripts to perform |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1579 variable substitution: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1580 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1581 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1582 set x [expr 6 * 9] |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1583 puts "The answer is $x" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1584 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1585 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1586 Variable substitution, like command substitution, is unlikely to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1587 prove useful for many &CDL; scripts except in the context of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1588 &Tcl; fragments. If it is necessary to have a <literal>$</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1589 character then a backslash escape may have to be used. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1590 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1591 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1592 Braces are used to collect a sequence of characters into a single |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1593 argument, just like quotes. The difference is that variable, command |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1594 and backslash substitution do not occur inside braces (with the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1595 sole exception of backslash substitution at the end of a line). |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1596 Therefore given a line in a &CDL; script such as: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1597 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1598 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1599 default_value {"RAM"} |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1600 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1601 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1602 The braces are stripped off by the &Tcl; interpreter, leaving |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1603 <literal>"RAM"</literal> which will be handled as a string constant by |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1604 the expression parsing code. The same effect could be achieved using |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1605 one of the following: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1606 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1607 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1608 default_value \"RAM\" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1609 default_value "\"RAM\"" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1610 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1611 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1612 Generally the use of braces is less confusing. At this stage it is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1613 worth noting that the basic format of &CDL; data makes use of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1614 braces: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1615 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1616 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1617 cdl_option <name> { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1618 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1619 }; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1620 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1621 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1622 The &cdl-option; command is passed two arguments, a name and a body, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1623 where the body consists of everything inside the braces but not the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1624 braces themselves. This body can then be executed in a recursive |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1625 invocation of the &Tcl; interpreter. If a &CDL; script contains |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1626 mismatched braces then the interpreter is likely to get rather |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1627 confused and the resulting diagnostics may be difficult to understand. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1628 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1629 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1630 Comments in Tcl scripts are introduced by a hash character |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1631 <literal>#</literal>. However, a hash character only introduces a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1632 comment if it occurs where a command is expected. Consider the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1633 following: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1634 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1635 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1636 # This is a comment |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1637 puts "Hello" # world |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1638 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1639 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1640 The first line is a valid comment, since the hash character occurs |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1641 right at the start where a command name is expected. The second line |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1642 does not contain a comment. Instead it is an attempt to invoke the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1643 <literal>puts</literal> command with three arguments: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1644 <literal>Hello</literal>, <literal>#</literal> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1645 <literal>world</literal>. These are not valid arguments for the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1646 <literal>puts</literal> command so an error will be raised. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1647 If the second line was rewritten as: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1648 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1649 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1650 puts "Hello"; # world |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1651 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1652 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1653 then this is a valid Tcl script. The semicolon identifies the end of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1654 the current command, so the hash character occurs at a point where the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1655 next command would start and hence it is interpreted as the start of a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1656 comment. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1657 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1658 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1659 This handling of comments can lead to subtle behavior. Consider the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1660 following: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1661 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1662 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1663 cdl_option WHATEVER { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1664 # This is a comment } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1665 default_value 0 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1666 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1667 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1668 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1669 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1670 Consider the way the Tcl interpreter processes this. The command name |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1671 and the first argument do not pose any special difficulties. The |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1672 opening brace is interpreted as the start of the next argument, which |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1673 continues until a closing brace is encountered. In this case the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1674 closing brace occurs on the second line, so the second argument passed |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1675 to <literal>cdl_option</literal> is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1676 <literal>\n # This is a comment |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1677 </literal>. This second argument is processed in a recursive |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1678 invocation of the Tcl interpreter and does not contain any commands, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1679 just a comment. Top-level script processing then resumes, and the next |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1680 command that is encountered is <literal>default_value</literal>. Since |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1681 the parser is not currently processing a configuration option this is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1682 an error. Later on the Tcl interpreter would encounter a closing brace |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1683 by itself, which is also an error. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1684 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1685 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1686 For component writers who need more information about &Tcl;, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1687 especially about the language rather than the syntax, various |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1688 resources are available. A reasonable starting point is the |
|
491
def85e4d96d2
http://dev.scriptics.com/ is now http://www.tcl.tk/
jlarmour
parents:
334
diff
changeset
|
1689 <ulink url="http://www.tcl.tk/scripting/">Scriptics developer |
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1690 web site</ulink>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1691 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1692 </sect1> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1693 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1694 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1695 <!-- {{{ Values and Expressions --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1696 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1697 <sect1 id="language.values"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1698 <title>Values and Expressions</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1699 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1700 <!-- {{{ Introit --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1701 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1702 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1703 It is fairly reasonable to expect that enabling or disabling a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1704 configuration option such as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1705 <varname>CYGVAR_KERNEL_THREADS_DATA</varname> in some way affects its |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1706 <emphasis>value</emphasis>. This will have an effect on any |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1707 expressions that reference this option such as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1708 <literal>requires CYGVAR_KERNEL_THREADS_DATA</literal>. It will |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1709 also affect the consequences of that option: how it affects the build |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1710 process and what happens to any constraints that |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1711 <varname>CYGVAR_KERNEL_THREADS_DATA</varname> may impose (as opposed |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1712 to constraints on this option imposed by others). |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1713 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1714 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1715 In a language like C the handling of variables is relatively |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1716 straightforward. If a variable <varname>x</varname> gets referenced in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1717 an expression such as <literal>if (x != 0)</literal>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1718 and that variable is not defined anywhere, then the code will fail to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1719 build, typically with an unresolved error at link-time. Also in C |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1720 a variable <varname>x</varname> does not live in any hierarchy, so its |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1721 value for the purposes of expression evaluation is not affected by |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1722 anything else. C variables also have a clear type such as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1723 <literal>int</literal> or <literal>long double</literal>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1724 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1725 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1726 In &CDL; things are not so straightforward. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1727 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1728 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1729 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1730 <!-- {{{ Option Values --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1731 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1732 <sect2 id="language.values.value"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1733 <!-- {{{ Introit --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1734 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1735 <title>Option Values</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1736 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1737 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1738 There are four factors which go into an option's value: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1739 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1740 <orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1741 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1742 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1743 An option may or may not be loaded. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1744 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1745 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1746 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1747 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1748 If the option is loaded, it may or may not be active. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1749 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1750 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1751 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1752 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1753 Even if the option is active, it may or may not be enabled. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1754 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1755 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1756 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1757 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1758 If the option is loaded, active and enabled then it will have some |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1759 associated data which constitutes its value. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1760 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1761 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1762 </orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1763 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1764 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1765 <!-- {{{ Loaded --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1766 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1767 <sect3 id="language.values.value.loaded"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1768 <title>Is the Option Loaded?</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1769 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1770 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1771 At any one time a configuration will contain only a subset of all |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1772 possible packages. In fact it is impossible to combine certain |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1773 packages in a single configuration. For example architectural HAL |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1774 packages should contain a set of options defining endianness, the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1775 sizes of basic data types and so on (many of which will of course be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1776 constant for any given architecture). Any attempt to load two |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1777 architectural HAL packages into a configuration will fail because of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1778 the resulting name clash. Since &CDL; expressions can reference |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1779 options in other packages, and often need to do so, it is essential to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1780 define the resulting behavior. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1781 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1782 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1783 One complication is that the component framework does not know about |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1784 every single option in every single package. Obviously it cannot know |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1785 about packages from arbitrary third parties which have not been |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1786 installed. Even for packages which have been installed, the current |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1787 repository database does not hold details of every option, only of the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1788 packages themselves. If a &CDL; expression contains a reference to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1789 some option <varname>CYGSEM_KERNEL_SCHED_TIMESLICE</varname> then the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1790 component framework will only know about this option if the kernel |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1791 package is actually loaded into the current configuration. If the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1792 package is not loaded then theoretically the framework might guess |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1793 that the option is somehow related to the kernel by examining the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1794 option name but this would not be robust: the option could easily be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1795 part of some other package that violates the naming convention. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1796 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1797 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1798 Assume that the user is building a minimal configuration which does |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1799 not contain the kernel package, but does have other packages which |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1800 contain the following constraints: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1801 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1802 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1803 requires CYGPKG_KERNEL |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1804 requires CYGPKG_KERNEL_THREADS_DATA |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1805 requires !CYGSEM_KERNEL_SCHED_TIMESLICE |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1806 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1807 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1808 Clearly the first constraint is not satisfied because the kernel is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1809 not loaded. The second constraint is also not satisfied. The third |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1810 constraint is trivially satisfied: if there is no kernel then the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1811 kernel's timeslicing support cannot possibly be enabled. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1812 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1813 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1814 Any options which are not in the current configuration are handled as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1815 follows: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1816 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1817 <orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1818 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1819 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1820 Any references to that option will evaluate to <literal>0</literal>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1821 so <literal>requires !CYGSEM_KERNEL_SCHED_TIMESLICE</literal> will |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1822 be satisfied but |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1823 <literal>requires CYGSEM_KERNEL_THREADS_DATA</literal> will not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1824 be satisfied. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1825 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1826 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1827 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1828 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1829 An option that is not loaded has no consequences on the build process. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1830 It cannot directly result in any <literal>#define's</literal> in a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1831 configuration header file, nor in any files being compiled. This is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1832 only reasonable: if the option is not loaded then the component |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1833 framework has no way of knowing about any &compile; or similar |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1834 properties. An option that is not loaded can have indirect |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1835 consequences by being referenced in &CDL; expressions. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1836 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1837 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1838 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1839 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1840 An option that is not loaded cannot impose any constraints on the rest |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1841 of the configuration. Again this is the only reasonable behavior: if |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1842 the option is not loaded then any associated &requires; or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1843 &legal-values; properties will not be known. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1844 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1845 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1846 </orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1847 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1848 </sect3> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1849 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1850 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1851 <!-- {{{ Active --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1852 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1853 <sect3 id="language.values.value.active"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1854 <title>Is the Option Active</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1855 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1856 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1857 The next issue to consider is whether or not a particular option is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1858 active. Configuration options are organized in a hierarchy of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1859 components and sub-components. For example the C library package |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1860 contains a component <varname>CYGPKG_LIBC_STDIO</varname> containing |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1861 all the options related to standard I/O. If a user disables the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1862 component as a whole then all the options below it become inactive: it |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1863 makes no sense to disable all stdio functionality and then manipulate |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1864 the buffer sizes. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1865 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1866 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1867 Inactive is not quite the same as disabled, although the effects are |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1868 similar. The value of an inactive option is preserved. If the user |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1869 modifies a buffer size option, then disables the whole stdio |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1870 component, the buffer size value remains in case the stdio component |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1871 is re-enabled later on. Some tools such as the graphical configuration |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1872 tool will treat inactive options specially, for example such options |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1873 may be grayed out. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1874 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1875 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1876 The active or inactive state of an option may affect other packages. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1877 For example a package may use the <function>sprintf</function> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1878 function and require support for floating point conversions, a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1879 constraint that is not satisfied if the relevant option is inactive. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1880 It is necessary to define exactly what it means for an option to be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1881 inactive: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1882 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1883 <orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1884 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1885 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1886 An option is inactive if its parent is either inactive or disabled. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1887 For example if <varname>CYGPKG_LIBC_STDIO</varname> is disabled then |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1888 all the options and sub-components become inactive; since |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1889 <varname>CYGPKG_LIBC_STDIO_FLOATING_POINT</varname> is now inactive, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1890 <varname>CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT</varname> is inactive |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1891 as well. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1892 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1893 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1894 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1895 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1896 Options may also be inactive as a result of an &active-if; property. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1897 This is useful if a particular option is only relevant if two or more |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1898 disjoint sets of conditions need to be satisfied, since the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1899 hierarchical structure can only cope with at most one such set. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1900 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1901 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1902 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1903 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1904 If an option is inactive then any references to that option in &CDL; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1905 expressions will evaluate to <literal>0</literal>. Hence a constraint |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1906 of the form |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1907 <literal>requires CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1908 is not satisfied if the entire stdio component is disabled. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1909 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1910 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1911 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1912 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1913 An option that is inactive has no consequences on the build process. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1914 No <literal>#define</literal> will be generated. Any &compile; or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1915 similar properties will be ignored. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1916 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1917 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1918 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1919 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1920 An option that is inactive cannot impose any constraints on the rest |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1921 of the configuration. For example |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1922 <varname>CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT</varname> has a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1923 dependency <literal>requires CYGPKG_LIBM</literal>, but if all of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1924 the stdio functionality is disabled then this constraint is ignored |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1925 (although of course there may be other packages which have a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1926 dependency on <varname>CYGPKG_LIBM</varname>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1927 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1928 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1929 </orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1930 </sect3> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1931 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1932 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1933 <!-- {{{ Enabled/data --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1934 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1935 <sect3 id="language.values.value.enabled"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1936 <title>Is the Option Enabled? What is the Data?</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1937 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1938 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1939 The majority of configuration options are boolean in nature, so the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1940 user can either enable or disable some functionality. Some options are |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1941 different. For example <varname>CYGNUM_LIBC_STDIO_BUFSIZE</varname> is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1942 a number, and <varname>CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE</varname> is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1943 a string corresponding to a device name. A few options like |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1944 <varname>CYGDAT_UITRON_TASK_EXTERNS</varname> can get very |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1945 complicated. &CDL; has to cope with this variety, and define the exact |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1946 behavior of the system in terms of constraints and build-time |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1947 consequences. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1948 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1949 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1950 In &CDL; the value of an option consists of two parts. There is a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1951 boolean part, controlling whether or not the option is enabled. There |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1952 is also a data part, providing additional information. For most |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1953 options one of these parts is fixed, as controlled by the option's |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1954 &flavor; property: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1955 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1956 <informaltable frame="all" colsep=1 rowsep=1 pgwide=0 tocentry=0> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1957 <tgroup cols=3 colsep=1 rowsep=1 align=left> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1958 <thead> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1959 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1960 <entry>Flavor</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1961 <entry>Enabled</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1962 <entry>Data</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1963 </row |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1964 </thead> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1965 <tbody> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1966 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1967 <entry><literal>none</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1968 <entry>Always enabled</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1969 <entry><literal>1</literal>, not modifiable</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1970 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1971 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1972 <entry><literal>bool</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1973 <entry>User-modifiable</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1974 <entry><literal>1</literal>, not modifiable</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1975 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1976 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1977 <entry><literal>data</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1978 <entry>Always enabled</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1979 <entry>User-modifiable</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1980 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1981 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1982 <entry><literal>booldata</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1983 <entry>User-modifiable</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1984 <entry>User-modifiable</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1985 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1986 </tbody> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1987 </tgroup> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1988 </informaltable> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1989 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1990 The effects of the boolean and data parts are as follows: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1991 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1992 <orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1993 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1994 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1995 If an option is disabled, in other words if the boolean part is false, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1996 then any references to that option in &CDL; expressions will evaluate |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1997 to <literal>0</literal>. This is the same behavior as for inactive |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1998 options. The data part is not relevant. The <literal>none</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
1999 and <literal>data</literal> flavors specify that the option is always |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2000 enabled, in which case this rule is not applicable. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2001 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2002 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2003 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2004 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2005 If an option is enabled then any references to that option in &CDL; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2006 expressions will evaluate to the option's data part. For two of the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2007 flavors, <literal>none</literal> and <literal>bool</literal>, this |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2008 data part is fixed to the constant <literal>1</literal> which |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2009 generally has the expected result. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2010 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2011 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2012 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2013 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2014 If a component or package is disabled then all sub-components and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2015 options immediately below it in the hierarchy are inactive. By a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2016 process of recursion this will affect all the nodes in the subtree. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2017 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2018 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2019 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2020 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2021 If an option is disabled then it can impose no constraints on the rest |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2022 of the configuration, in particular &requires; and &legal-values; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2023 properties will be ignored. If an option is enabled then its |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2024 constraints should be satisfied, or the component framework will |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2025 report various conflicts. Note that the &legal-values; constraint only |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2026 applies to the data part of the option's value, so it is only useful |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2027 with the <literal>data</literal> and <literal>booldata</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2028 flavors. Options with the <literal>none</literal> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2029 <literal>data</literal> flavors are always enabled so their |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2030 constraints always have to be satisfied (assuming the option is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2031 active). |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2032 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2033 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2034 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2035 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2036 If an option is disabled then it has no direct consequences at |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2037 build-time: no <literal>#define</literal> will be generated, no files |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2038 will get compiled, and so on. If an option is active and enabled then |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2039 all the consequences take effect. The option name and data part are |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2040 used to generate the <literal>#define</literal> in the appropriate |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2041 configuration header file, subject to various properties such as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2042 &no-define;, but the data part has no other effects on the build |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2043 system. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2044 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2045 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2046 </orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2047 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2048 By default all options and components have the <literal>bool</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2049 flavor: most options are boolean in nature, so making this the default |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2050 allows for slightly more compact &CDL; scripts. Packages have the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2051 <literal>booldata</literal> flavor, where the data part always |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2052 corresponds to the version of the package that is loaded into the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2053 configuration: changing this value corresponds to unloading the old |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2054 version and loading in a different one. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2055 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2056 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2057 <note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2058 <title>&CDL; Flavors</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2059 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2060 The concept of &CDL; flavors tends to result in various discussions |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2061 about why it is unnecessarily complicated, and would it not have been |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2062 easier to do … However there are very good reasons why CDL |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2063 works the way it does. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2064 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2065 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2066 The first common suggestion is that there is no need to have separate |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2067 flavors <literal>bool</literal>, <literal>data</literal>, and so on. A |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2068 boolean option could just be handled as a data option with legal |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2069 values <literal>0</literal> and <literal>1</literal>. The counter |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2070 arguments are as follows: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2071 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2072 <orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2073 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2074 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2075 It would actually make &CDL; scripts more verbose. By default all |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2076 options and components have the <literal>bool</literal> flavor, since |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2077 most options are boolean in nature. Without a <literal>bool</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2078 flavor it would be necessary to indicate explicitly what the legal |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2079 values are somehow, e.g. with a &legal-values; property. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2080 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2081 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2082 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2083 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2084 The boolean part of an option's value has a very different effect from |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2085 the data part. If an option is disabled then it has no consequences at |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2086 build time, and can impose no constraints. A <literal>data</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2087 option always has consequences and can impose constraints. To get the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2088 desired effect it would be necessary to add &CDL; data indicating that |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2089 a value of <literal>0</literal> should be treated specially. Arguably |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2090 this could be made built-in default behavior, although that would |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2091 complicate options where <literal>0</literal> is a perfectly legal |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2092 number, for example |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2093 <varname>CYGNUM_LIBC_TIME_STD_DEFAULT_OFFSET</varname>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2094 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2095 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2096 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2097 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2098 There would no replacement for a <literal>booldata</literal> option |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2099 for which <literal>0</literal> is a valid value. Again some additional |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2100 &CDL; syntax would be needed to express such a concept. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2101 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2102 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2103 </orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2104 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2105 Although initially it may seem confusing that an option's value has |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2106 both a boolean and a data part, it is an accurate reflection of how |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2107 configuration options actually work. The various alternatives would |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2108 all make it harder to write &CDL; scripts. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2109 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2110 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2111 The next common suggestion is that the data part of a value should be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2112 typed in much the same way as C or C++ data types. For example it |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2113 should be possible to describe |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2114 <varname>CYGNUM_LIBC_STDIO_BUFSIZE</varname> as an integer value, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2115 rather than imposing &legal-values; constraints. Again there are very |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2116 good reasons why this approach was not taken: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2117 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2118 <orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2119 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2120 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2121 The possible legal values for an integer are rarely correct for a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2122 &CDL; option. A constraint such as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2123 <literal>1 to 0x7fffffff</literal> is a bit more accurate, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2124 although if this option indicates a buffer size it is still not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2125 particularly good — very few targets will have enough |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2126 memory for such a buffer. Forcing &CDL; writers to list the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2127 &legal-values; constraints explicitly should make them think a bit |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2128 more about what values are actually sensible. For example |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2129 <varname>CYGNUM_LIBC_TIME_DST_DEFAULT_OFFSET</varname> has legal |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2130 values in the range <literal>-90000 to 90000</literal>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2131 which helps the user to set a sensible value. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2132 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2133 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2134 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2135 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2136 Not all options correspond to simple data types such as integers. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2137 <varname>CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE</varname> is a C string, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2138 and would have to be expressed using something like |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2139 <literal>char []</literal>. This introduces plenty of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2140 opportunities for confusion, especially since square brackets may get |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2141 processed by the &Tcl; interpreter for command substitution. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2142 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2143 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2144 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2145 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2146 Some configuration options can get very complicated indeed, for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2147 example the default value of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2148 <varname>CYGDAT_UITRON_TASK_INITIALIZERS</varname> is: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2149 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2150 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2151 CYG_UIT_TASK( "t1", 1, task1, &stack1, CYGNUM_UITRON_STACK_SIZE ), \ |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2152 CYG_UIT_TASK( "t2", 2, task2, &stack2, CYGNUM_UITRON_STACK_SIZE ), \ |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2153 CYG_UIT_TASK( "t3", 3, task3, &stack3, CYGNUM_UITRON_STACK_SIZE ), \ |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2154 CYG_UIT_TASK( "t4", 4, task4, &stack4, CYGNUM_UITRON_STACK_SIZE ) |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2155 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2156 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2157 This would require &CDL; knowing about C macros, structures, arrays, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2158 static initializers, and so on. Adding such detailed knowledge about |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2159 the C language to the component framework is inappropriate. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2160 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2161 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2162 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2163 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2164 &CDL; needs to be usable with languages other than C. At present this |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2165 includes C++, in future it may include languages such as Java. Each |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2166 language adds new data types and related complications, for example |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2167 C++ classes and inheritance. Making &CDL; support a union of all data |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2168 types in all possible languages is not sensible. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2169 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2170 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2171 </orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2172 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2173 The &CDL; approach of treating all data as a sequence of characters, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2174 possibly constrained by a &legal-values; property or other means, has |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2175 the great advantage of simplicity. It also fits in with the &Tcl; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2176 language that underlies &CDL;. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2177 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2178 </note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2179 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2180 </sect3> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2181 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2182 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2183 <!-- {{{ Examples --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2184 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2185 <sect3 id="language.values.value.examples"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2186 <title>Some Examples</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2187 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2188 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2189 The following excerpt from the C library's &CDL; scripts can be used |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2190 to illustrate how values and flavors work in practice: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2191 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2192 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2193 cdl_component CYGPKG_LIBC_RAND { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2194 flavor none |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2195 compile stdlib/rand.cxx |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2196 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2197 cdl_option CYGSEM_LIBC_PER_THREAD_RAND { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2198 requires CYGVAR_KERNEL_THREADS_DATA |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2199 default_value 0 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2200 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2201 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2202 cdl_option CYGNUM_LIBC_RAND_SEED { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2203 flavor data |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2204 legal_values 0 to 0x7fffffff |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2205 default_value 1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2206 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2207 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2208 cdl_option CYGNUM_LIBC_RAND_TRACE_LEVEL { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2209 flavor data |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2210 legal_values 0 to 1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2211 default_value 0 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2212 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2213 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2214 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2215 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2216 If the application does not require any C library functionality then |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2217 it is possible to have a configuration where the C library is not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2218 loaded. This can be achieved by starting with the minimal template, or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2219 by starting with another template such as the default one and then |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2220 explicitly unloading the C library package. If this package is not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2221 loaded then any references to the <varname>CYGPKG_LIBC_RAND</varname> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2222 component or any of its options will have a value of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2223 <literal>0</literal> for the purposes of expression evaluation. No |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2224 <literal>#define's</literal> will be generated for the component or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2225 any of its options, and the file <filename>stdlib/rand.cxx</filename> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2226 will not get compiled. There is nothing special about the C library |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2227 here, exactly the same would apply for say a device driver that does |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2228 not correspond to any of the devices on the target hardware. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2229 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2230 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2231 Assuming the C library is loaded, the next thing to consider is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2232 whether or not the component and its options are active. The component |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2233 is layered immediately below the C library package itself, so if the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2234 package is loaded then it is safe to assume that the package is also |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2235 enabled. Therefore the parent of <varname>CYGPKG_LIBC_RAND</varname> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2236 is active and enabled, and in the absence of any &active-if; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2237 properties <varname>CYGPKG_LIBC_RAND</varname> will be active as well. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2238 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2239 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2240 The component <varname>CYGPKG_LIBC_RAND</varname> has the flavor |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2241 <literal>none</literal>. This means the component cannot be disabled. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2242 Therefore all the options in this component have an active and enabled |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2243 parent, and in the absence of any &active-if; properties they are all |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2244 active as well. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2245 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2246 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2247 The component's flavor <literal>none</literal> serves to group |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2248 together all of the configuration options related to random number |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2249 generation. This is particularly useful in the context of the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2250 graphical configuration tool, but it also helps when it comes to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2251 naming the options: all of the options begin with |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2252 <literal>CYGxxx_LIBC_RAND</literal>, giving a clear hint about both |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2253 the package and the component within that package. The flavor means |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2254 that the component is always enabled and has the value |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2255 <literal>1</literal> for the purposes of expression evaluation. There |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2256 will always be a single <literal>#define</literal> of the form: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2257 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2258 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2259 #define CYGPKG_LIBC_RAND 1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2260 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2261 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2262 In addition the file <filename>stdlib/rand.cxx</filename> will always |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2263 get built. If the component had the default <literal>bool</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2264 flavor then users would be able to disable the whole component, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2265 and one less file would need to be built. However random number |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2266 generation is relatively simple, so the impact on eCos build times are |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2267 small. Furthermore by default the code has no dependencies on other |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2268 parts of the system, so compiling the code has no unexpected side |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2269 effects. Even if it was possible to disable the component, the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2270 sensible default for most applications would still leave it enabled. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2271 The net result is that the flavor <literal>none</literal> is probably |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2272 the most sensible one for this component. For other components the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2273 default <literal>bool</literal> flavor or one of the other flavors |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2274 might be more appropriate. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2275 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2276 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2277 Next consider option <varname>CYGSEM_LIBC_PER_THREAD_RAND</varname> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2278 which can be used to get a per-thread random number seed, possibly |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2279 useful if the application needs a consistent sequence of random |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2280 numbers. In the absence of a &flavor; property this option will be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2281 boolean, and the &default-value; property means that it is disabled by |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2282 default — reasonable since few applications need this |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2283 particular functionality, and it does impose a constraint on the rest |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2284 of the system. If the option is left disabled then no |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2285 <literal>#define</literal> will be generated, and if there were any |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2286 &compile; or similar properties these would not take effect. If the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2287 option is enabled then a <literal>#define</literal> will be generated, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2288 using the option's data part which is fixed at <literal>1</literal>: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2289 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2290 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2291 #define CYGSEM_LIBC_PER_THREAD_RAND 1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2292 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2293 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2294 The <varname>CYGSEM_LIBC_PER_THREAD_RAND</varname> option has a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2295 &requires; constraint on |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2296 <varname>CYGVAR_KERNEL_THREADS_DATA</varname>. If the C library option |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2297 is enabled then the constraint should be satisfied, or else the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2298 configuration contains a conflict. If the configuration does not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2299 include the kernel package then |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2300 <varname>CYGVAR_KERNEL_THREADS_DATA</varname> will evaluate to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2301 <literal>0</literal> and the constraint is not satisfied. Similarly if |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2302 the option is inactive or disabled the constraint will not be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2303 satisfied. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2304 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2305 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2306 <varname>CYGNUM_LIBC_RAND_SEED</varname> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2307 <varname>CYGNUM_LIBC_RAND_TRACE_LEVEL</varname> both have the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2308 <literal>data</literal> flavor, so they are always enabled and the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2309 component framework will generate appropriate |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2310 <literal>#define's</literal>: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2311 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2312 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2313 #define CYGNUM_LIBC_RAND_SEED 1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2314 #define CYGNUM_LIBC_RAND_SEED_1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2315 #define CYGNUM_LIBC_RAND_TRACE_LEVEL 0 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2316 #define CYGNUM_LIBC_RAND_TRACE_LEVEL_0 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2317 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2318 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2319 Neither option has a &compile; or similar property, but any such |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2320 properties would take effect. Any references to these options in &CDL; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2321 expressions would evaluate to the data part, so a hypothetical |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2322 constraint of the form |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2323 <literal>{ requires CYGNUM_LIBC_RAND_SEED > 42 }</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2324 would not be satisfied with the default values. Both options use a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2325 simple constant for the &default-value; expression. It would be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2326 possible to use a more complicated expression, for example the default |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2327 for <varname>CYGNUM_LIBC_RAND_TRACE_LEVEL</varname> could be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2328 determined from some global debugging option or from a debugging |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2329 option that applies to the C library as a whole. Both options also |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2330 have a &legal-values; constraint, which must be satisfied since the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2331 options are active and enabled. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2332 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2333 <note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2334 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2335 The value <literal>0</literal> is legal for both |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2336 <varname>CYGNUM_LIBC_RAND_SEED</varname> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2337 <varname>CYGNUM_LIBC_RAND_TRACE_LEVEL</varname>, so in a &CDL; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2338 expression there is no easy way of distinguishing between the options |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2339 being absent or having that particular value. This will be addressed |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2340 by future enhancements to the expression syntax. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2341 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2342 </note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2343 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2344 </sect3> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2345 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2346 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2347 </sect2> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2348 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2349 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2350 <!-- {{{ Expressions --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2351 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2352 <sect2 id="language.expression"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2353 <title>Ordinary Expressions</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2354 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2355 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2356 Expressions in &CDL; follow a conventional syntax, for example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2357 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2358 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2359 default_value CYGGLO_CODESIZE > CYGGLO_SPEED |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2360 default_value { (CYG_HAL_STARTUP == "RAM" && |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2361 !CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS && |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2362 !CYGINT_HAL_USE_ROM_MONITOR_UNSUPPORTED && |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2363 !CYGSEM_HAL_POWERPC_COPY_VECTORS) ? 1 : 0 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2364 default_value { "\"/dev/ser0\"" } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2365 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2366 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2367 However there is a complication in that the various arguments to a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2368 &default-value; property will first get processed by a &Tcl; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2369 interpreter, so special characters like quotes and square brackets may |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2370 get processed. Such problems can be avoided by enclosing non-trivial |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2371 expressions in braces, as in the second example above. The way |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2372 expression parsing actually works is as follows: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2373 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2374 <orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2375 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2376 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2377 The &Tcl; interpreter splits the line or lines into a command and its |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2378 arguments. In the first &default-value; expression above the command |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2379 is <literal>default_value</literal> and there are three arguments, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2380 <literal>CYGGLO_CODESIZE</literal>, <literal>></literal> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2381 <literal>CYGGLO_SPEED</literal>. In the second and third examples |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2382 there is just one argument, courtesy of the braces. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2383 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2384 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2385 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2386 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2387 Next option processing takes place, so any initial arguments that |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2388 begin with a hyphen will be interpreted as options. This can cause |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2389 problems if the expression involves a negative number, so the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2390 special argument <literal>--</literal> can be used to prevent option |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2391 processing on the subsequent arguments. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2392 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2393 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2394 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2395 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2396 All of the arguments are now concatenated, with a single space in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2397 between each one. Hence the following two expressions are equivalent, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2398 even though they will have been processed differently up to this point. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2399 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2400 <programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2401 default_value CYGGLO_CODESIZE > CYGGLO_SPEED |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2402 default_value {CYGGLO_CODESIZE > CYGGLO_SPEED} |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2403 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2404 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2405 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2406 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2407 The expression parsing code now has a single string to process. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2408 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2409 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2410 </orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2411 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2412 &CDL; expressions consist of four types of element: references to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2413 configuration options, constant strings, integers, and floating point |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2414 numbers. These are combined using a conventional set of operators: the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2415 unary operators <literal>-</literal>, <literal>~</literal> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2416 <literal>!</literal>; the arithmetic operators <literal>+</literal>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2417 <literal>-</literal>, <literal>*</literal>, <literal>/</literal> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2418 <literal>%</literal>; the shift operators <literal><<</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2419 and <literal>>></literal>; the comparison operators |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2420 <literal>==</literal>, <literal>!=</literal>, <literal><</literal>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2421 <literal><=</literal>, <literal>></literal> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2422 <literal>>=</literal>; the bitwise operators |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2423 <literal>&</literal>, <literal>^</literal> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2424 <literal>|</literal>; the logical operators <literal>&&</literal> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2425 <literal>||</literal>; the string concatenation operator |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2426 <literal>.</literal>; and the ternary conditional operator |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2427 <literal>A ? B : C</literal>. There is also support for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2428 some less widely available operators for logical equivalence and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2429 implication, and for a set of function-style operations. Bracketed |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2430 sub-expressions are supported, and the operators have the usual |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2431 precedence: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2432 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2433 <informaltable frame="all" pgwide=0 colsep=1 rowsep=1> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2434 <tgroup cols=3 align="left" colsep=1 rowsep=1> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2435 <colspec colnum=1 align="center"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2436 <colspec colnum=2 align="center"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2437 <colspec colnum=3 align="center"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2438 <thead> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2439 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2440 <entry>Priority</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2441 <entry>Operators</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2442 <entry>Category</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2443 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2444 </thead> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2445 <tbody> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2446 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2447 <entry>16</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2448 <entry>references, constants</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2449 <entry>basic elements</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2450 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2451 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2452 <entry>15</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2453 <entry><literal>f(a, b, c)</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2454 <entry>function calls</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2455 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2456 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2457 <entry>14</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2458 <entry><literal>~</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2459 <entry>bitwise not</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2460 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2461 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2462 <entry>14</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2463 <entry><literal>!</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2464 <entry>logical not</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2465 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2466 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2467 <entry>14</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2468 <entry><literal>-</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2469 <entry>arithmetic negation</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2470 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2471 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2472 <entry>13</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2473 <entry><literal>* / %</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2474 <entry>multiplicative arithmetic</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2475 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2476 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2477 <entry>12</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2478 <entry><literal>+ - .</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2479 <entry>additive arithmetic and string concatenation</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2480 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2481 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2482 <entry>11</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2483 <entry><literal><< >></literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2484 <entry>bitwise shifts</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2485 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2486 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2487 <entry>10</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2488 <entry><literal><= < > >=</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2489 <entry>inequality</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2490 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2491 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2492 <entry>9</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2493 <entry><literal>== !=</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2494 <entry>comparison</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2495 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2496 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2497 <entry>8</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2498 <entry><literal>&</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2499 <entry>bitwise and</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2500 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2501 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2502 <entry>7</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2503 <entry><literal>^</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2504 <entry>bitwise xor</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2505 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2506 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2507 <entry>6</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2508 <entry><literal>|</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2509 <entry>bitwise or</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2510 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2511 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2512 <entry>5</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2513 <entry><literal>&&</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2514 <entry>logical and</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2515 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2516 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2517 <entry>4</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2518 <entry><literal>||</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2519 <entry>logical or</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2520 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2521 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2522 <entry>3</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2523 <entry><literal>xor, eqv</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2524 <entry>logical equivalance</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2525 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2526 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2527 <entry>2</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2528 <entry><literal>implies</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2529 <entry>logical implication</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2530 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2531 <row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2532 <entry>1</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2533 <entry><literal>? :</literal></entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2534 <entry>conditional</entry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2535 </row> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2536 </tbody> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2537 </tgroup> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2538 </informaltable> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2539 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2540 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2541 Function calls have the usual format of a name, an opening bracket, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2542 one or more arguments separated by commas, and a closing bracket. For |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2543 example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2544 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2545 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2546 requires { !is_substr(CYGBLD_GLOBAL_CFLAGS, " -fno-rtti") } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2547 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2548 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2549 Functions will differ in the number of arguments and may impose |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2550 restrictions on some or all of their arguments. For example it may be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2551 necessary for the first argument to be a reference to a configuration |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2552 option. The available functions are described in <xref |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2553 linkend="language.functions">. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2554 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2555 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2556 The logical <literal>xor</literal> operator evaluates to true if |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2557 either the left hand side or the right hand side but not both evaluate |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2558 to true The logical <literal>eqv</literal> operator evaluates to true |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2559 if both the left and right hand sides evaluate to true, or if both |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2560 evaluate to false. The <literal>implies</literal> operator evaluates |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2561 to true either if the left hand side is false or if the right hand |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2562 side is true, in other words <literal>A implies B</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2563 has the same meaning as <literal>!A || B</literal>. An |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2564 example use would be: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2565 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2566 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2567 requires { is_active(CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE) implies |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2568 (CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE >= (16 * 1024)) } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2569 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2570 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2571 This constraint would be satisfied if either the support for a main |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2572 stack size is disabled, or if that stack is at least 16K. However if |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2573 such a stack were in use but was too small, a conflict would be raised. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2574 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2575 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2576 A valid &CDL; identifier in an expression, for example |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2577 <varname>CYGGLO_SPEED</varname>, will be interpreted as a reference to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2578 a configuration option by that name. The option does not have to be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2579 loaded into the current configuration. When the component framework |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2580 evaluates the expression it will substitute in a suitable value that |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2581 depends on whether or not the option is loaded, active, and enabled. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2582 The exact rules are described in <xref |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2583 linkend="language.values.value">. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2584 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2585 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2586 A constant string is any sequence of characters enclosed in quotes. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2587 Care has to be taken that these quotes are not stripped off by the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2588 &Tcl; interpreter before the &CDL; expression parser sees them. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2589 Consider the following: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2590 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2591 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2592 default_value "RAM" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2593 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2594 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2595 The quote marks will be stripped before the &CDL; expression parser |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2596 sees the data, so the expression will be interpreted as a reference to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2597 a configuration option <varname>RAM</varname>. There is unlikely to be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2598 such an option, so the actual default value will be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2599 <literal>0</literal>. Careful use of braces or other &Tcl; quoting |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2600 mechanisms can be used to avoid such problems. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2601 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2602 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2603 String constants consist of the data inside the quotes. If the data |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2604 itself needs to contain quote characters then appropriate quoting is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2605 again necessary, for example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2606 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2607 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2608 default_value { "\"/dev/ser0\"" } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2609 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2610 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2611 An integer constant consists of a sequence of digits, optionally |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2612 preceeded with the unary <literal>+</literal> or <literal>-</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2613 operators. As usual the sequence <literal>0x</literal> or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2614 <literal>0X</literal> can be used for hexadecimal data, and a leading |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2615 <literal>0</literal> indicates octal data. Internally the component |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2616 framework uses 64-bit arithmetic for integer data. If a constant is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2617 too large then double precision arithmetic will be used instead. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2618 Traditional syntax is also used for double precision numbers, for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2619 example <literal>3.141592</literal> or <literal>-3E6</literal>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2620 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2621 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2622 Of course this is not completely accurate: &CDL; is not a typed |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2623 language, all data is treated as if it were a string. For example the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2624 following two lines are equivalent: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2625 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2626 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2627 requires CYGNUM_UITRON_SEMAS > 10 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2628 requires { CYGNUM_UITRON_SEMAS > "10" } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2629 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2630 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2631 When an expression gets evaluated the operators will attempt |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2632 appropriate conversions. The <literal>></literal> comparison |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2633 operator can be used on either integer or double precision numbers, so |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2634 it will begin by attempting a string to integer conversion of both |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2635 operands. If that fails it will attempt string to double conversions. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2636 If that fails as well then the component framework will report a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2637 conflict, an evaluation exception. If the conversions from string to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2638 integer are successful then the result will be either the string |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2639 <literal>0</literal> or the string <literal>1</literal>, both of which |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2640 can be converted to integers or doubles as required. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2641 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2642 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2643 It is worth noting that the expression |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2644 <literal>CYGNUM_UITRON_SEMAS >10</literal> is not ambiguous. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2645 &CDL; identifiers can never begin with a digit, so it is not possible |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2646 for <literal>10</literal> to be misinterpreted as a reference to an |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2647 identifier instead of as a string. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2648 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2649 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2650 Of course the implementation is slightly different again. The &CDL; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2651 language definition is such that all data is treated as if it were a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2652 string, with conversions to integer, double or boolean as and when |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2653 required. The implementation is allowed to avoid conversions until |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2654 they are necessary. For example, given |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2655 <literal>CYGNUM_UITRON_SEMAS > 10</literal> the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2656 expression parsing code will perform an immediate conversion from |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2657 string to integer, storing the integer representation, and there is no |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2658 need for a conversion by the comparison operator when the expression |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2659 gets evaluated. Given |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2660 <literal>{ CYGNUM_UITRON_SEMAS > "10" }</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2661 the parsing code will store the string representation and a conversion |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2662 happens the first time the expression is evaluated. All of this is an |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2663 implementation detail, and does not affect the semantics of the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2664 language. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2665 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2666 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2667 Different operators have different requirements, for example the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2668 bitwise or operator only makes sense if both operands have an integer |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2669 representation. For operators which can work with either integer or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2670 double precision numbers, integer arithmetic will be preferred. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2671 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2672 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2673 The following operators only accept integer operands: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2674 unary <literal>~</literal> (bitwise not), the shift operators |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2675 <literal><<</literal> and <literal>>></literal>, and the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2676 bitwise operators <literal>&</literal>, <literal>|</literal> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2677 <literal>^</literal>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2678 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2679 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2680 The following operators will attempt integer arithmetic first, then |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2681 double precision arithmetic: unary <literal>-</literal>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2682 the arithmetic operators <literal>+</literal>, <literal>-</literal>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2683 <literal>*</literal>, <literal>/</literal>, and <literal>%</literal>; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2684 and the comparision operators <literal><</literal>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2685 <literal><=</literal>, <literal>></literal> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2686 <literal>>=</literal>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2687 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2688 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2689 The equality <literal>==</literal> and inequality |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2690 <literal>!=</literal> operators will first attempt integer conversion |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2691 and comparison. If that fails then double precision will be attempted |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2692 (although arguably using these operators on double precision data is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2693 not sensible). As a last resort string comparison will be used. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2694 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2695 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2696 The operators <literal>!</literal>, <literal>&&</literal> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2697 <literal>||</literal> all work with boolean data. Any string that can |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2698 be converted to the integer <literal>0</literal> or the double |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2699 <literal>0.0</literal> is treated as false, as is the empty string or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2700 the constant string <literal>false</literal>. Anything else is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2701 interpreted as true. The result is either <literal>0</literal> or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2702 <literal>1</literal>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2703 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2704 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2705 The conditional operator <literal>? :</literal> will interpret |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2706 its first operand as a boolean. It does not perform any processing on |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2707 the second or third operands. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2708 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2709 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2710 In practice it is rarely necessary to worry about any of these |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2711 details. In nearly every case &CDL; expressions just work as expected, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2712 and there is no need to understand the full details. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2713 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2714 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2715 <note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2716 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2717 The current expression syntax does not meet all the needs of component |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2718 writers. Some future enhancements will definitely be made, others are |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2719 more controversial. The list includes the following: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2720 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2721 <orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2722 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2723 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2724 An option's value is determined by several different factors: whether |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2725 or not it is loaded, whether or not it is active, whether or not it is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2726 enabled, and the data part. Currently there is no way of querying |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2727 these individually. This is very significant in the context of options |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2728 with the <literal>bool</literal> or <literal>booldata</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2729 flavors, because there is no way of distinguishing between the option |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2730 being absent/inactive/disabled or it being enabled with a data field |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2731 of <literal>0</literal>. There should be unary operators that allow |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2732 any of the factors to be checked. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2733 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2734 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2735 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2736 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2737 Only the <literal>==</literal> and <literal>!=</literal> operators can |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2738 be used for string data. More string-related facilities are needed. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2739 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2740 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2741 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2742 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2743 An implies operator would be useful for many goal expression, where |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2744 <literal>A implies B</literal> is equivalent to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2745 <literal>!A ||B</literal>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2746 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2747 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2748 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2749 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2750 Similarly there is inadequate support for lists. On occasion it would |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2751 be useful to write expressions involving say the list of implementors |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2752 of a given CDL interface, for example a sensible default value could |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2753 be the first implementor. Associated with this is a need for an |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2754 indirection operator. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2755 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2756 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2757 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2758 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2759 Arguably extending the basic &CDL; expression syntax with lots of new |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2760 operators is unnecessary, instead expressions should just support |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2761 &Tcl; command substitution and then component writers could escape |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2762 into &Tcl; scripts for complicated operations. This has some major |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2763 disadvantages. First, the inference engine would no longer have any |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2764 sensible way of interpreting an expression to resolve a conflict. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2765 Second, the component framework's value propagation code keeps track |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2766 of which options get referenced in which expressions and avoids |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2767 unnecessary re-evaluation of expressions; if expressions can involve |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2768 arbitrary &Tcl; code then there is no simple way to eliminate |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2769 unnecessary recalculations, with a potentially major impact on |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2770 performance. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2771 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2772 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2773 </orderedlist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2774 </note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2775 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2776 <note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2777 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2778 The current implementation of the component framework uses 64 bit |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2779 arithmetic on all host platforms. Although this is adequate for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2780 current target architectures, it may cause problems in future. At some |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2781 stage it is likely that an arbitrary precision integer arithmetic |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2782 package will be used instead. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2783 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2784 </note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2785 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2786 </sect2> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2787 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2788 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2789 <!-- {{{ Functions --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2790 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2791 <sect2 id="language.functions"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2792 <title>Functions</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2793 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2794 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2795 CDL expressions can contain calls to a set of built-in functions |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2796 using the usual syntax, for example; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2797 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2798 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2799 requires { !is_substr(CYGBLD_GLOBAL_CFLAGS, "-fno-rtti") } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2800 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2801 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2802 The available function calls are as follows: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2803 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2804 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2805 <variablelist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2806 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2807 <!-- {{{ get_data() --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2808 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2809 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2810 <term><literal>get_data(option)</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2811 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2812 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2813 This function can be used to obtain just the data part of a loaded |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2814 configuration option, ignoring other factors such as whether or not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2815 the option is active and enabled. It takes a single argument which |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2816 should be the name of a configuration option. If the specified option |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2817 is not loaded in the current configuration then the function returns |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2818 0, otherwise it returns the data part. Typically this function will |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2819 only be used in conjunction with <function>is_active</function> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2820 <function>is_enabled</function> for fine-grained control over the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2821 various factors that make up an option's value. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2822 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2823 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2824 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2825 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2826 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2827 <!-- {{{ is_active() --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2828 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2829 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2830 <term><literal>is_active(option)</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2831 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2832 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2833 This function can be used to determine whether or not a particular |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2834 configuration option is active. It takes a single argument which |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2835 should be the name of an option, and returns a boolean. If the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2836 specified option is not loaded then the function will return false. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2837 Otherwise it will consider the state of the option's parents and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2838 evaluate any &active-if; properties, and return the option's current |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2839 active state. A typical use might be: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2840 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2841 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2842 requires { is_active(CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE) implies |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2843 (CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE >= (16 * 1024)) } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2844 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2845 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2846 In other words either the specified configuration option must be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2847 inactive, for example because the current application does not use |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2848 any related C library or POSIX functionality, or the stack size must |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2849 be at least 16K. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2850 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2851 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2852 The configuration system's inference engine can attempt to satisfy |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2853 constraints involving <function>is_active</function> in various |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2854 different ways, for example by enabling or disabling parent |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2855 components, or by examining &active-if; properties and manipulating |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2856 terms in the associated expressions. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2857 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2858 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2859 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2860 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2861 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2862 <!-- {{{ is_enabled() --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2863 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2864 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2865 <term><literal>is_enabled(option)</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2866 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2867 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2868 This function can be used to determine whether or not a particular |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2869 configuration option is enabled. It takes a single argument which |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2870 should be the name of an option, and returns a boolean. If the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2871 specified option is not loaded then the function will return false. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2872 Otherwise it will return the current boolean part of the option's |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2873 value. The option's active or inactive state is ignored. Typically |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2874 this function will be used in conjunction with |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2875 <function>is_active</function> and possibly |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2876 <function>get_data</function> to provide fine-grained control over the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2877 various factors that make up an option's value. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2878 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2879 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2880 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2881 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2882 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2883 <!-- {{{ is_loaded() --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2884 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2885 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2886 <term><literal>is_loaded(option)</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2887 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2888 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2889 This function can be used to determine whether or not a particular |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2890 configuration option is loaded. It takes a single argument which |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2891 should be the name of an option, and returns a boolean. If the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2892 argument is a package then the <function>is_loaded</function> function |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2893 provides little or no extra information, for example the following two |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2894 constraints are usually equivalent: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2895 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2896 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2897 requires { CYGPKG_KERNEL } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2898 requires { is_loaded(CYGPKG_KERNEL) } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2899 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2900 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2901 However if the specified package is loaded but re-parented below a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2902 disabled component, or inactive as a result of an &active-if; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2903 property, then the first constraint would not be satisfied but the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2904 second constraint would. In other words the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2905 <function>is_loaded</function> makes it possible to consider in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2906 isolation one of the factors that are considered when CDL expressions |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2907 are evaluated. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2908 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2909 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2910 The configuration system's inference engine will not automatically |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2911 load or unload packages to satisfy <function>is_loaded</function> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2912 constraints. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2913 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2914 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2915 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2916 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2917 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2918 <!-- {{{ is_substr() --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2919 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2920 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2921 <term><literal>is_substr(haystack, needle)</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2922 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2923 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2924 This can be used to check whether or not a particular string is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2925 present in another string. It is used mainly for manipulating compiler |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2926 flags. The function takes two arguments, both of which can be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2927 arbitrary expressions, and returns a boolean. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2928 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2929 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2930 <function>is_substr</function> has some understanding of word |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2931 boundaries. If the second argument starts with a space character then |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2932 that will match either a real space or the start of the string. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2933 Similarly if the second argument ends with a space character then that |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2934 will match a real space or the end of the string. For example, all of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2935 the following conditions are satisfied: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2936 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2937 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2938 is_substr("abracadabra", "abra") |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2939 is_substr("abracadabra", " abra") |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2940 is_substr("hocus pocus", " pocus") |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2941 is_substr("abracadabra", "abra ") |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2942 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2943 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2944 The first is an exact match. The second is a match because the leading |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2945 space matches the start of the string. The third is an exact match, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2946 with the leading space matching an actual space. The fourth is a match |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2947 because the trailing space matches the end of the string. However, the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2948 following condition is not satisfied. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2949 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2950 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2951 is_substr("abracadabra", " abra ") |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2952 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2953 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2954 This fails to match at the start of the string because the trailing |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2955 space is not matched by either a real space or the end of the string. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2956 Similarly it fails to match at the end of the string. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2957 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2958 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2959 If a constraint involving <function>is_substr</function> is not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2960 satisfied and the first argument is a reference to a configuration |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2961 option, the inference engine will attempt to modify that option's |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2962 value. This can be achieved either by appending the second argument to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2963 the current value, or by removing all occurrences of that argument |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2964 from the current value. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2965 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2966 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2967 requires { !is_substr(CYGBLD_GLOBAL_CFLAGS, " -fno-rtti ") } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2968 requires { is_substr(CYGBLD_GLOBAL_CFLAGS, " -frtti ") } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2969 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2970 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2971 When data is removed the leading and trailing spaces will be left. For |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2972 example, given an initial value of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2973 <<varname>CYGBLD_GLOBAL_CFLAGS</varname> of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2974 <literal>-g -fno-rtti -O2</literal> the result will be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2975 <literal>-g -O2</literal> rather than <literal>-g-O2</literal>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2976 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2977 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2978 If exact matches are needed, the function |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2979 <function>is_xsubstr</function> can be used instead. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2980 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2981 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2982 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2983 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2984 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2985 <!-- {{{ is_xsubstr() --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2986 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2987 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2988 <term><literal>is_xsubstr(haystack, needle)</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2989 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2990 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2991 This function checks whether or not the pattern string is an exact |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2992 substring of the string being searched. It is similar to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2993 <function>is_substr</function> but uses exact matching only. In other |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2994 words, leading or trailing spaces have to match exactly and will not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2995 match the beginning or end of the string being searched. The function |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2996 takes two arguments, both of which can be arbitrary expressions, and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2997 returns a boolean. The difference between |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2998 <function>is_substr</function> and <function>is_xsubstr</function> is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
2999 illustrated by the following examples: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3000 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3001 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3002 cdl_option MAGIC { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3003 flavor data |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3004 default_value { "abracadabra" } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3005 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3006 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3007 requires { is_substr(MAGIC, " abra") } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3008 requires { is_xsubstr(MAGIC, " abra") } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3009 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3010 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3011 The first goal will be satisfied because the leading space in the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3012 pattern matches the beginning of the string. The second goal will not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3013 be satisfied initialy because there is no exact match, so the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3014 inference engine is likely to update the value of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3015 <varname>MAGIC</varname> to <literal>abracadabra abra</literal> which |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3016 does give an exact match. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3017 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3018 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3019 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3020 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3021 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3022 <!-- {{{ version_cmp() --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3023 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3024 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3025 <term><literal>version_cmp(A, B)</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3026 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3027 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3028 This function is used primarily to check that a sufficiently recent |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3029 <link linkend="package.versions">version</link> of some other package |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3030 is being used. It takes two arguments, both of which can be arbitrary |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3031 expressions. In practice usually one of the arguments will be a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3032 reference to a package and the other will be a constant version |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3033 string. The return value is -1 if the first argument is a more recent |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3034 version then the second, 0 if the two arguments correspond to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3035 identical versions, and 1 if the first argument is an older version. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3036 For example the following constraint can be used to indicate that the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3037 current package depends on kernel functionality that only became |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3038 available in version 1.3: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3039 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3040 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3041 requires { version_cmp(CYGPKG_KERNEL, "v1.3") <= 0 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3042 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3043 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3044 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3045 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3046 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3047 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3048 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3049 </variablelist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3050 <note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3051 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3052 At this time it is not possible to define new functions inside a CDL |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3053 script. Instead functions can only be added at the C++ level, usually |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3054 by extending libcdl itself. This is partly because there is more to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3055 CDL functions than simple evaluation: associated with most functions |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3056 is support for the inference engine, so that if a constraint involving |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3057 a function is not currently satisfied the system may be able to find a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3058 solution automatically. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3059 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3060 </note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3061 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3062 </sect2> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3063 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3064 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3065 <!-- {{{ Goal expressions --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3066 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3067 <sect2 id="language.goal-expression"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3068 <title>Goal Expressions</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3069 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3070 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3071 The arguments to certain properties, notably &requires; and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3072 &active-if;, constitute a goal expression. As with an ordinary |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3073 expression, all of the arguments get combined and then the expression |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3074 parser takes over. The same care has to be taken with constant strings |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3075 and anything else that may get processed by the Tcl interpreter, so |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3076 often a goal expression is enclosed entirely in braces and the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3077 expression parsing code sees just a single argument. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3078 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3079 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3080 A goal expression is basically just a sequence of ordinary |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3081 expressions, for example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3082 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3083 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3084 requires { CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3085 !CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3086 !CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3087 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3088 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3089 This consists of three separate expressions, all of which should |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3090 evaluate to a non-zero result. The same expression could be written |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3091 as: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3092 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3093 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3094 requires { CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS && |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3095 !CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT && |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3096 !CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3097 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3098 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3099 Alternatively the following would have much the same effect: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3100 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3101 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3102 requires CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3103 requires !CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3104 requires !CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3105 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3106 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3107 Selecting between these alternatives is largely a stylistic choice. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3108 The first is slightly more concise than the others. The second is more |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3109 likely to appeal to mathematical purists. The third is more amenable |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3110 to cutting and pasting. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3111 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3112 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3113 The result of evaluating a goal expression is a boolean. If any part |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3114 of the goal expression evaluates to the integer <literal>0</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3115 or an equivalent string then the result is false, otherwise it is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3116 true. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3117 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3118 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3119 The term “goal expression” relates to the component |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3120 framework's inference engine: it is a description of a goal that |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3121 should be satisfied for a conflict-free configuration. If a &requires; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3122 constraint is not satisfied then the inference engine will examine the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3123 goal expression: if there is some way of changing the configuration |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3124 that does not introduce new conflicts and that will cause the goal |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3125 expression to evaluate to true, the conflict can be resolved. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3126 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3127 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3128 The inference engine works with one conflict and hence one goal |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3129 expression at a time. This means that there can be slightly different |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3130 behavior if a constraint is specified using a single &requires; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3131 property or several different ones. Given the above example, suppose |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3132 that none of the three conditions are satisfied. If a single goal |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3133 expression is used then the inference engine might be able to satisfy |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3134 only two of the three parts, but since the conflict as a whole cannot |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3135 be resolved no part of the solution will be applied. Instead the user |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3136 will have to resolve the entire conflict. If three separate goal |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3137 expressions are used then the inference engine might well find |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3138 solutions to two of them, leaving less work for the user. On the other |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3139 hand, if a single goal expression is used then the inference engine |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3140 has a bit more information to work with, and it might well find a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3141 solution to the entire conflict where it would be unable to find |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3142 separate solutions for the three parts. Things can get very |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3143 complicated, and in general component writers should not worry about |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3144 the subtleties of the inference engine and how to manipulate its |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3145 behavior. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3146 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3147 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3148 It is possible to write ambiguous goal expressions, for example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3149 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3150 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3151 requires CYGNUM_LIBC_RAND_SEED -CYGNUM_LIBC_RAND_TRACE_LEVEL > 5 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3152 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3153 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3154 This could be parsed in two ways: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3155 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3156 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3157 requires ((CYGNUM_LIBC_RAND_SEED - CYGNUM_LIBC_RAND_TRACE_LEVEL) > 5) |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3158 requires CYGNUM_LIBC_RAND_SEED && ((-CYGNUM_LIBC_RAND_TRACE_LEVEL) > 5) |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3159 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3160 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3161 The goal expression parsing code will always use the largest ordinary |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3162 expression for each goal, so the first interpretation will be used. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3163 In such cases it is a good idea to use brackets and avoid possible |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3164 confusion. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3165 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3166 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3167 </sect2> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3168 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3169 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3170 <!-- {{{ List expressions --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3171 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3172 <sect2 id="language.list-expression"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3173 <title>List Expressions</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3174 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3175 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3176 The arguments to the &legal-values; property constitute a goal |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3177 expression. As with an ordinary and goal expressions, all of the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3178 arguments get combined and then the expression parser takes over. The |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3179 same care has to be taken with constant strings and anything else that |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3180 may get processed by the Tcl interpreter, so often a list expression |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3181 is enclosed entirely in braces and the expression parsing code sees |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3182 just a single argument. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3183 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3184 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3185 Most list expressions take one of two forms: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3186 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3187 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3188 legal_values <expr1> <expr2> <expr3> ... |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3189 legal_values <expr1> to <expr2> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3190 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3191 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3192 <literal>expr1</literal>, <literal>expr2</literal> and so on are |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3193 ordinary expressions. Often these will be constants or references to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3194 calculated options in the architectural HAL package, but it is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3195 possible to use arbitrary expressions when necessary. The first syntax |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3196 indicates a list of possible values, which need not be numerical. The |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3197 second syntax indicates a numerical range: both sides of the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3198 <literal>to</literal> must evaluate to a numerical value; if either |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3199 side involves a floating point number then any floating point number |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3200 in that range is legal; otherwise only integer values are legal; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3201 ranges are inclusive, so <literal>4</literal> is a valid value given a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3202 list expression <literal>1 to </literal>; if one or both |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3203 sides of the <literal>to</literal> does not evaluate to a numerical |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3204 value then this will result in a run-time conflict. The following |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3205 examples illustrate these possibilities: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3206 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3207 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3208 legal_values { "red" "green" "blue" } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3209 legal_values 1 2 4 8 16 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3210 legal_values 1 to CYGARC_MAXINT |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3211 legal_values 1.0 to 2.0 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3212 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3213 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3214 It is possible to combine the two syntaxes, for example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3215 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3216 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3217 legal_values 1 2 4 to CYGARC_MAXINT -1024 -20.0 to -10 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3218 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3219 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3220 This indicates three legal values <literal>1</literal>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3221 <literal>2</literal> and <literal>-1024</literal>, one |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3222 integer range <literal>4 to CYGARC_MAXINT</literal>, and one |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3223 floating point range <literal>-20.0 to -10.0</literal>. In |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3224 practice such list expressions are rarely useful. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3225 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3226 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3227 The identifier <varname>to</varname> is not reserved, so it is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3228 possible to have a configuration option with that name (although it |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3229 violates every naming convention). Using that option in a list |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3230 expression may however give unexpected results. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3231 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3232 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3233 The graphical configuration tool uses the &legal-values; list |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3234 expression to determine how best to let users manipulate the option's |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3235 value. Different widgets will be appropriate for different lists, so |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3236 <literal>{ "red" "green" "blue" }</literal> might |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3237 involve a pull-down option menu, and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3238 <literal>1 to 16</literal> could involve a spinner. The |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3239 exact way in which &legal-values; lists get mapped on to GUI widgets |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3240 is not defined and is subject to change at any time. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3241 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3242 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3243 As with goal expressions, list expressions can be ambiguous. Consider |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3244 the following hypothetical example: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3245 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3246 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3247 legal_values CYGNUM_LIBC_RAND_SEED -CYGNUM_LIBC_RAND_TRACE_LEVEL |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3248 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3249 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3250 This could be parsed in two ways: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3251 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3252 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3253 legal_values (CYGNUM_LIBC_RAND_SEED - CYGNUM_LIBC_RAND_TRACE_LEVEL) |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3254 legal_values (CYGNUM_LIBC_RAND_SEED) (-CYGNUM_LIBC_RAND_TRACE_LEVEL) |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3255 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3256 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3257 Both are legal. The list expression parsing code will always use the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3258 largest ordinary expression for each element, so the first |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3259 interpretation will be used. In cases like this it is a good idea to |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3260 use brackets and avoid possible confusion. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3261 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3262 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3263 </sect2> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3264 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3265 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3266 </sect1> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3267 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3268 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3269 <!-- {{{ Interfaces --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3270 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3271 <!-- FIXME: Maybe the use of interfaces in generic drivers should be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3272 used - if only because interfaces are not really a good solution for |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3273 what we need there (the generic driver cannot contain the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3274 cdl_interface and be active_if on it, since it'll result in other |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3275 packages not being able to implement the interface.) --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3276 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3277 <sect1 id="language.interface"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3278 <title>Interfaces</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3279 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3280 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3281 For many configurability requirements, options provide sufficient |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3282 expressive power. However there are times when a higher level of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3283 abstraction is appropriate. As an example, suppose that some package |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3284 relies on the presence of code that implements the standard kernel |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3285 scheduling interface. However the requirement is no more stringent |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3286 than this, so the constraint can be satisfied by the mlqueue |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3287 scheduler, the bitmap scheduler, or any additional schedulers that may |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3288 get implemented in future. A first attempt at expressing the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3289 dependency might be: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3290 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3291 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3292 requires CYGSEM_KERNEL_SCHED_MLQUEUE || CYGSEM_KERNEL_SCHED_BITMAP |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3293 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3294 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3295 This constraint will work with the current release, but it is limited. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3296 Suppose there is a new release of the kernel which adds another |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3297 scheduler such as a deadline scheduler, or suppose that there is a new |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3298 third party package which adds such a scheduler. The package |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3299 containing the limited constraint would now have to be updated and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3300 another release made, with possible knock-on effects. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3301 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3302 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3303 &CDL; interfaces provide an abstraction mechanism: constraints can be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3304 expressed in terms of an abstract concept, for example |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3305 “scheduler”, rather than specific implementations such as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3306 <varname>CYGSEM_KERNEL_SCHED_MLQUEUE</varname> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3307 <varname>CYGSEM_KERNEL_SCHED_BITMAP</varname>. Basically an interface |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3308 is a calculated configuration option: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3309 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3310 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3311 cdl_interface CYGINT_KERNEL_SCHEDULER { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3312 display "Number of schedulers in this configuration" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3313 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3314 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3315 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3316 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3317 The individual schedulers can then implement this interface: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3318 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3319 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3320 cdl_option CYGSEM_KERNEL_SCHED_MLQUEUE { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3321 display "Multi-level queue scheduler" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3322 default_value 1 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3323 implements CYGINT_KERNEL_SCHEDULER |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3324 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3325 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3326 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3327 cdl_option CYGSEM_KERNEL_SCHED_BITMAP { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3328 display "Bitmap scheduler" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3329 default_value 0 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3330 implements CYGINT_KERNEL_SCHEDULER |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3331 … |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3332 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3333 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3334 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3335 Future schedulers can also implement this interface. The value of an |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3336 interface, for the purposes of expression evaluation, is the number of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3337 active and enabled options which implement this interface. Packages |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3338 which rely on the presence of a scheduler can impose constraints such |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3339 as: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3340 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3341 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3342 requires CYGINT_KERNEL_SCHEDULER |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3343 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3344 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3345 If none of the schedulers are enabled, or if the kernel package is not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3346 loaded, then <varname>CYGINT_KERNEL_SCHEDULER</varname> will evaluate |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3347 to <literal>0</literal>. If at least one scheduler is active and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3348 enabled then the constraint will be satisfied. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3349 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3350 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3351 Because interfaces have a calculated value determined by the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3352 implementors, the &default-value; and &calculated; properties are not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3353 applicable and should not appear in the body of a &cdl-interface; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3354 command. Interfaces have the <literal>data</literal> flavor by |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3355 default, but the <literal>bool</literal> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3356 <literal>booldata</literal> flavors may be specified instead. A |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3357 <literal>bool</literal> interface is disabled if there are no active |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3358 and enabled implementors, otherwise it is enabled. A |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3359 <literal>booldata</literal> interface is disabled if there are no |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3360 active and enabled implementors, otherwise it is enabled and has a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3361 value corresponding to the number of these implementors. Other |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3362 properties such as &requires; and &compile; can be used as normal. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3363 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3364 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3365 Some component writers will not want to use interfaces in this way. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3366 The reasoning is that their code will only have been tested with the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3367 existing schedulers, so the &requires; constraint needs to be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3368 expressed in terms of those schedulers; it is possible that the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3369 component will still work with a new scheduler, but there are no |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3370 guarantees. Other component writers may take a more optimistic view |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3371 and assume that their code will work with any scheduler until proven |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3372 otherwise. It is up to individual component writers to decide which |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3373 approach is most appropriate in any given case. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3374 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3375 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3376 One common use for interfaces is to describe the hardware |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3377 functionality provided by a given target. For example the &CDL; |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3378 scripts for a TCP/IP package might want to know whether or not the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3379 target hardware has an ethernet interface. Generally it is not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3380 necessary for the TCP/IP stack to know exactly which ethernet hardware |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3381 is present, since there should be a device driver which implements the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3382 appropriate functionality. In &CDL; terms the device drivers should |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3383 implement an interface <varname>CYGHWR_NET_DRIVERS</varname>, and the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3384 &CDL; scripts for the TCP/IP stack can use this in appropriate |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3385 expressions. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3386 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3387 <note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3388 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3389 Using the term <emphasis>interface</emphasis> for this concept is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3390 sometimes confusing, since the term has various other meanings as |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3391 well. In practice, it is often correct. If there is a configuration |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3392 option that implements a given &CDL; interface, then usually this |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3393 option will enable some code that provides a particular interface at |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3394 the C or C++ level. For example an ethernet device driver implements |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3395 the &CDL; interface <varname>CYGHWR_NET_DRIVERS</varname>, and also |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3396 implements a set of C functions that can be used by the TCP/IP stack. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3397 Similarly <varname>CYGSEM_KERNEL_SCHED_MLQUEUE</varname> implements |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3398 the &CDL; interface <varname>CYGINT_KERNEL_SCHEDULER</varname> and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3399 also provides the appropriate scheduling functions. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3400 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3401 </note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3402 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3403 </sect1> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3404 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3405 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3406 <!-- {{{ Package database --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3407 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3408 <sect1 id="language.database"> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3409 <title>Updating the <database>ecos.db</database> database</title> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3410 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3411 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3412 The current implementation of the component framework requires that |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3413 all packages be present in a single component repository and listed in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3414 that repository's <database>ecos.db</database> database. This is not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3415 generally a problem for application developers who can consider the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3416 component repository a read-only resource, except when adding or |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3417 removing packages via the administration tool. However it means that |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3418 component writers need to do their development work inside a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3419 component repository as well, and update the database with details of |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3420 their new package or packages. Future enhancements to the component |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3421 framework may allow new components to be developed outside a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3422 repository. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3423 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3424 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3425 Like most files related to the component framework, the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3426 <database>ecos.db</database> database is actually a &Tcl; script. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3427 Typical package entries would look like this: |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3428 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3429 <programlisting width=72> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3430 package CYGPKG_LIBC { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3431 alias { "C library" libc clib clibrary } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3432 directory language/c/libc |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3433 script libc.cdl |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3434 description " |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3435 This package enables compatibility with the ISO C standard - ISO/IEC |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3436 9899:1990. This allows the user application to use well known standard |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3437 C library functions, and in eCos starts a thread to invoke the user |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3438 function main()" |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3439 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3440 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3441 package CYGPKG_IO_PCI { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3442 alias { "PCI configuration library" io_pci } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3443 directory io/pci |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3444 script io_pci.cdl |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3445 hardware |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3446 description " |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3447 This package contains the PCI configuration library." |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3448 } |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3449 </programlisting> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3450 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3451 The <literal>package</literal> command takes two arguments, a name and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3452 a body. The name must be the same as in the &cdl-package; command in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3453 the package's top-level &CDL; script. The body can contain the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3454 following five commands: <literal>alias</literal>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3455 <literal>directory</literal>, <literal>script</literal>, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3456 <literal>hardware</literal> and <literal>description</literal>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3457 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3458 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3459 <variablelist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3460 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3461 <term><literal>alias</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3462 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3463 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3464 Each package should have one or more aliases. The first alias is |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3465 typically used when listing the known packages, because a string like |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3466 <literal>C library</literal> is a bit easier to read and |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3467 understand than <varname>CYGPKG_LIBC</varname>. The other aliases are |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3468 not used for output, but are accepted on input. For example the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3469 <application class="software">ecosconfig</application> command-line |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3470 tool will accept <literal>add libc</literal> as an option, as well |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3471 as <literal>add CYGPKG_LIBC</literal>. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3472 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3473 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3474 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3475 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3476 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3477 <term><literal>directory</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3478 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3479 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3480 This is used to specify the location of the package relative to the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3481 root of the component repository. It should be noted that in the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3482 current component framework this location cannot be changed in |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3483 subsequent releases of the package: if for some reason it is desirable |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3484 to install a new release elsewhere in the repository, all the old |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3485 versions must first be uninstalled; the database cannot hold two |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3486 separate locations for one package. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3487 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3488 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3489 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3490 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3491 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3492 <term><literal>script</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3493 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3494 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3495 The <literal>script</literal> command specifies the location of the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3496 package's top-level &CDL; script, in other words the one containing the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3497 &cdl-package; definition. If the package follows the <link |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3498 linkend="package.hierarchy">directory layout conventions</link> then |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3499 this script will be in the <filename class="directory">cdl</filename> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3500 sub-directory, otherwise it will be relative to the package's top-level |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3501 directory. Again once a release has been made this file should not |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3502 change in later releases. In practice the top-level script is generally |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3503 named after the package itself, so changing its name is unlikely to be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3504 useful. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3505 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3506 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3507 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3508 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3509 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3510 <term><literal>hardware</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3511 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3512 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3513 Packages which are tied to specific hardware, for example device |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3514 drivers and HAL packages, should indicate this in both the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3515 &cdl-package; command of the &CDL; script and in the database entry. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3516 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3517 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3518 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3519 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3520 <varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3521 <term><literal>description</literal></term> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3522 <listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3523 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3524 This should give a brief description of the package. Typically the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3525 text for the &description; property in the &cdl-package; command will |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3526 be re-used. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3527 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3528 </listitem> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3529 </varlistentry> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3530 </variablelist> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3531 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3532 <note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3533 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3534 Most of the information in the <database>ecos.db</database> file could |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3535 be obtained by a relatively simple utility. This would be passed a |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3536 single argument identifying a package's top-level &CDL; script. The |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3537 directory path relative to the component repository root could be |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3538 determined from the filename. The name, <literal>description</literal> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3539 and <literal>hardware</literal> fields could be obtained from the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3540 script's &cdl-package; command. The &display; property would supply |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3541 the first alias, additional aliases could be obtained by extending the |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3542 syntax of that property or by other means. Something along these lines |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3543 may be provided by a future release of the component framework. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3544 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3545 </note> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3546 <para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3547 Currently the <database>ecos.db</database> database also holds |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3548 information about the various targets. When porting to a new target it |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3549 will be necessary to add information about the target to the database, |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3550 as well as the details of the new platform HAL package and any related |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3551 packages. |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3552 </para> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3553 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3554 </sect1> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3555 |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3556 <!-- }}} --> |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
diff
changeset
|
3557 |
|
491
def85e4d96d2
http://dev.scriptics.com/ is now http://www.tcl.tk/
jlarmour
parents:
334
diff
changeset
|
3558 </chapter> |
