<!-- Copyright (C) 2003 Red Hat, Inc. -->
|
<!-- Copyright (C) 2003 Red Hat, Inc. -->
|
<!-- This material may be distributed only subject to the terms -->
|
<!-- This material may be distributed only subject to the terms -->
|
<!-- and conditions set forth in the Open Publication License, v1.0 -->
|
<!-- and conditions set forth in the Open Publication License, v1.0 -->
|
<!-- or later (the latest version is presently available at -->
|
<!-- or later (the latest version is presently available at -->
|
<!-- http://www.opencontent.org/openpub/). -->
|
<!-- http://www.opencontent.org/openpub/). -->
|
<!-- Distribution of the work or derivative of the work in any -->
|
<!-- Distribution of the work or derivative of the work in any -->
|
<!-- standard (paper) book form is prohibited unless prior -->
|
<!-- standard (paper) book form is prohibited unless prior -->
|
<!-- permission is obtained from the copyright holder. -->
|
<!-- permission is obtained from the copyright holder. -->
|
<HTML
|
<HTML
|
><HEAD
|
><HEAD
|
><TITLE
|
><TITLE
|
>Option Naming Convention</TITLE
|
>Option Naming Convention</TITLE
|
><meta name="MSSmartTagsPreventParsing" content="TRUE">
|
><meta name="MSSmartTagsPreventParsing" content="TRUE">
|
<META
|
<META
|
NAME="GENERATOR"
|
NAME="GENERATOR"
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
"><LINK
|
"><LINK
|
REL="HOME"
|
REL="HOME"
|
TITLE="The eCos Component Writer's Guide"
|
TITLE="The eCos Component Writer's Guide"
|
HREF="cdl-guide.html"><LINK
|
HREF="cdl-guide.html"><LINK
|
REL="UP"
|
REL="UP"
|
TITLE="The CDL Language"
|
TITLE="The CDL Language"
|
HREF="language.html"><LINK
|
HREF="language.html"><LINK
|
REL="PREVIOUS"
|
REL="PREVIOUS"
|
TITLE="CDL Properties"
|
TITLE="CDL Properties"
|
HREF="language.properties.html"><LINK
|
HREF="language.properties.html"><LINK
|
REL="NEXT"
|
REL="NEXT"
|
TITLE="An Introduction to Tcl"
|
TITLE="An Introduction to Tcl"
|
HREF="language.tcl.html"></HEAD
|
HREF="language.tcl.html"></HEAD
|
><BODY
|
><BODY
|
CLASS="SECT1"
|
CLASS="SECT1"
|
BGCOLOR="#FFFFFF"
|
BGCOLOR="#FFFFFF"
|
TEXT="#000000"
|
TEXT="#000000"
|
LINK="#0000FF"
|
LINK="#0000FF"
|
VLINK="#840084"
|
VLINK="#840084"
|
ALINK="#0000FF"
|
ALINK="#0000FF"
|
><DIV
|
><DIV
|
CLASS="NAVHEADER"
|
CLASS="NAVHEADER"
|
><TABLE
|
><TABLE
|
SUMMARY="Header navigation table"
|
SUMMARY="Header navigation table"
|
WIDTH="100%"
|
WIDTH="100%"
|
BORDER="0"
|
BORDER="0"
|
CELLPADDING="0"
|
CELLPADDING="0"
|
CELLSPACING="0"
|
CELLSPACING="0"
|
><TR
|
><TR
|
><TH
|
><TH
|
COLSPAN="3"
|
COLSPAN="3"
|
ALIGN="center"
|
ALIGN="center"
|
>The <SPAN
|
>The <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>eCos</SPAN
|
>eCos</SPAN
|
> Component Writer's Guide</TH
|
> Component Writer's Guide</TH
|
></TR
|
></TR
|
><TR
|
><TR
|
><TD
|
><TD
|
WIDTH="10%"
|
WIDTH="10%"
|
ALIGN="left"
|
ALIGN="left"
|
VALIGN="bottom"
|
VALIGN="bottom"
|
><A
|
><A
|
HREF="language.properties.html"
|
HREF="language.properties.html"
|
ACCESSKEY="P"
|
ACCESSKEY="P"
|
>Prev</A
|
>Prev</A
|
></TD
|
></TD
|
><TD
|
><TD
|
WIDTH="80%"
|
WIDTH="80%"
|
ALIGN="center"
|
ALIGN="center"
|
VALIGN="bottom"
|
VALIGN="bottom"
|
>Chapter 3. The CDL Language</TD
|
>Chapter 3. The CDL Language</TD
|
><TD
|
><TD
|
WIDTH="10%"
|
WIDTH="10%"
|
ALIGN="right"
|
ALIGN="right"
|
VALIGN="bottom"
|
VALIGN="bottom"
|
><A
|
><A
|
HREF="language.tcl.html"
|
HREF="language.tcl.html"
|
ACCESSKEY="N"
|
ACCESSKEY="N"
|
>Next</A
|
>Next</A
|
></TD
|
></TD
|
></TR
|
></TR
|
></TABLE
|
></TABLE
|
><HR
|
><HR
|
ALIGN="LEFT"
|
ALIGN="LEFT"
|
WIDTH="100%"></DIV
|
WIDTH="100%"></DIV
|
><DIV
|
><DIV
|
CLASS="SECT1"
|
CLASS="SECT1"
|
><H1
|
><H1
|
CLASS="SECT1"
|
CLASS="SECT1"
|
><A
|
><A
|
NAME="LANGUAGE.NAMING">Option Naming Convention</H1
|
NAME="LANGUAGE.NAMING">Option Naming Convention</H1
|
><P
|
><P
|
>All the options in a given configuration live in the same namespace.
|
>All the options in a given configuration live in the same namespace.
|
Furthermore it is not possible for two separate options to have the
|
Furthermore it is not possible for two separate options to have the
|
same name, because this would make any references to those options in
|
same name, because this would make any references to those options in
|
<SPAN
|
<SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>CDL</SPAN
|
>CDL</SPAN
|
> expressions ambiguous. A naming convention exists to avoid
|
> expressions ambiguous. A naming convention exists to avoid
|
problems. It is recommended that component writers observe some or all
|
problems. It is recommended that component writers observe some or all
|
of this convention to reduce the probability of name clashes with
|
of this convention to reduce the probability of name clashes with
|
other packages.</P
|
other packages.</P
|
><P
|
><P
|
>There is an important restriction on option names. Typically the
|
>There is an important restriction on option names. Typically the
|
component framework will output a <TT
|
component framework will output a <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>#define</TT
|
>#define</TT
|
> for every
|
> for every
|
active and enabled option, using the name as the symbol being defined.
|
active and enabled option, using the name as the symbol being defined.
|
This requires that all names are valid C preprocessor symbols, a
|
This requires that all names are valid C preprocessor symbols, a
|
limitation that is enforced even for options which have the
|
limitation that is enforced even for options which have the
|
<SPAN
|
<SPAN
|
CLASS="PROPERTY"
|
CLASS="PROPERTY"
|
>no_define</SPAN
|
>no_define</SPAN
|
> property. Preprocessor symbols can be any sequence of
|
> property. Preprocessor symbols can be any sequence of
|
lower case letters <TT
|
lower case letters <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>a</TT
|
>a</TT
|
>-<TT
|
>-<TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>z</TT
|
>z</TT
|
>, upper
|
>, upper
|
case letters, <TT
|
case letters, <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>A</TT
|
>A</TT
|
>-<TT
|
>-<TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>Z</TT
|
>Z</TT
|
>, the
|
>, the
|
underscore character <TT
|
underscore character <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>_</TT
|
>_</TT
|
>, and the digits
|
>, and the digits
|
<TT
|
<TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>0</TT
|
>0</TT
|
>-<TT
|
>-<TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>9</TT
|
>9</TT
|
>. The first character must be
|
>. The first character must be
|
a non-digit. Using an underscore as the first character is
|
a non-digit. Using an underscore as the first character is
|
discouraged, because that may clash with reserved language
|
discouraged, because that may clash with reserved language
|
identifiers. In addition there is a convention that preprocessor
|
identifiers. In addition there is a convention that preprocessor
|
symbols only use upper case letters, and some component writers may
|
symbols only use upper case letters, and some component writers may
|
wish to follow this convention.</P
|
wish to follow this convention.</P
|
><P
|
><P
|
>A typical option name could be something like
|
>A typical option name could be something like
|
<TT
|
<TT
|
CLASS="VARNAME"
|
CLASS="VARNAME"
|
>CYGSEM_KERNEL_SCHED_BITMAP</TT
|
>CYGSEM_KERNEL_SCHED_BITMAP</TT
|
>. This name consists of
|
>. This name consists of
|
several different parts:</P
|
several different parts:</P
|
><P
|
><P
|
></P
|
></P
|
><OL
|
><OL
|
TYPE="1"
|
TYPE="1"
|
><LI
|
><LI
|
><P
|
><P
|
>The first few characters, in this case the three letters
|
>The first few characters, in this case the three letters
|
<TT
|
<TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>CYG</TT
|
>CYG</TT
|
>, are used to identify the organization that
|
>, are used to identify the organization that
|
produced the package. For historical reasons packages produced by Red
|
produced the package. For historical reasons packages produced by Red
|
Hat tend to use the prefix <TT
|
Hat tend to use the prefix <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>CYG</TT
|
>CYG</TT
|
> rather than
|
> rather than
|
<TT
|
<TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>RHAT</TT
|
>RHAT</TT
|
>. Component writers should use their own
|
>. Component writers should use their own
|
prefix: even when cutting and pasting from an existing <SPAN
|
prefix: even when cutting and pasting from an existing <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>CDL</SPAN
|
>CDL</SPAN
|
> script
|
> script
|
the prefix should be changed to something appropriate to their
|
the prefix should be changed to something appropriate to their
|
organization. </P
|
organization. </P
|
><P
|
><P
|
>It can be argued that a short prefix, often limited to upper case
|
>It can be argued that a short prefix, often limited to upper case
|
letters, is not sufficiently long to eliminate the possibility of
|
letters, is not sufficiently long to eliminate the possibility of
|
name clashes. A longer prefix could be used, for example one based on
|
name clashes. A longer prefix could be used, for example one based on
|
internet domain names. However the C preprocessor has no concept of
|
internet domain names. However the C preprocessor has no concept of
|
namespaces or <TT
|
namespaces or <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>import</TT
|
>import</TT
|
> directives, so it would always
|
> directives, so it would always
|
be necessary to use the full option name in component source code
|
be necessary to use the full option name in component source code
|
which gets tedious - option names tend to be long enough as it is.
|
which gets tedious - option names tend to be long enough as it is.
|
There is a small increased risk of name clashes, but this risk is felt
|
There is a small increased risk of name clashes, but this risk is felt
|
to be acceptable.</P
|
to be acceptable.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>The next three characters indicate the nature of the option, for
|
>The next three characters indicate the nature of the option, for
|
example whether it affects the interface or just the implementation. A
|
example whether it affects the interface or just the implementation. A
|
list of common tags is given below.</P
|
list of common tags is given below.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>The <TT
|
>The <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>KERNEL_SCHED</TT
|
>KERNEL_SCHED</TT
|
> part indicates the location of the
|
> part indicates the location of the
|
option within the overall hierarchy. In this case the option is part of
|
option within the overall hierarchy. In this case the option is part of
|
the scheduling component of the kernel package. Having the hierarchy
|
the scheduling component of the kernel package. Having the hierarchy
|
details as part of the option name can help in understanding
|
details as part of the option name can help in understanding
|
configurable code and further reduces the probability of a name clash.</P
|
configurable code and further reduces the probability of a name clash.</P
|
></LI
|
></LI
|
><LI
|
><LI
|
><P
|
><P
|
>The final part, <TT
|
>The final part, <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>BITMAP</TT
|
>BITMAP</TT
|
>, identifies the option
|
>, identifies the option
|
itself. </P
|
itself. </P
|
></LI
|
></LI
|
></OL
|
></OL
|
><P
|
><P
|
>The three-character tag is intended to provide some additional
|
>The three-character tag is intended to provide some additional
|
information about the nature of the option. There are a number of
|
information about the nature of the option. There are a number of
|
pre-defined tags. However for many options there is a choice:
|
pre-defined tags. However for many options there is a choice:
|
options related to the platform should normally use
|
options related to the platform should normally use
|
<TT
|
<TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>HWR</TT
|
>HWR</TT
|
>, but numerical options should normally use
|
>, but numerical options should normally use
|
<TT
|
<TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>NUM</TT
|
>NUM</TT
|
>; a platform-related numerical option such as
|
>; a platform-related numerical option such as
|
the size of an interrupt stack could therefore use either tag.
|
the size of an interrupt stack could therefore use either tag.
|
There are no absolute rules, and it is left to component writers to
|
There are no absolute rules, and it is left to component writers to
|
interpret the following guidelines:</P
|
interpret the following guidelines:</P
|
><P
|
><P
|
></P
|
></P
|
><DIV
|
><DIV
|
CLASS="VARIABLELIST"
|
CLASS="VARIABLELIST"
|
><DL
|
><DL
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxARC_</TT
|
>xxxARC_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>The <TT
|
>The <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>ARC</TT
|
>ARC</TT
|
> tag is intended for options related
|
> tag is intended for options related
|
to the processor architecture. Typically such options will only occur
|
to the processor architecture. Typically such options will only occur
|
in architectural or variant HAL packages.</P
|
in architectural or variant HAL packages.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxHWR_</TT
|
>xxxHWR_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>The <TT
|
>The <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>HWR</TT
|
>HWR</TT
|
> tag is intended for options related to
|
> tag is intended for options related to
|
the specific target board. Typically such options will only occur in
|
the specific target board. Typically such options will only occur in
|
platform HAL packages.</P
|
platform HAL packages.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxPKG_</TT
|
>xxxPKG_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>This tag is intended for packages or components, in other words
|
>This tag is intended for packages or components, in other words
|
options which extend the configuration hierarchy. Arguably a
|
options which extend the configuration hierarchy. Arguably a
|
<TT
|
<TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>COM</TT
|
>COM</TT
|
> tag would be more appropriate for
|
> tag would be more appropriate for
|
components, but this could be confusing because of the considerable
|
components, but this could be confusing because of the considerable
|
number of computing terms that begin with com.</P
|
number of computing terms that begin with com.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxGLO_</TT
|
>xxxGLO_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>This is intended for global configuration options, especially
|
>This is intended for global configuration options, especially
|
preferences.</P
|
preferences.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxDBG_</TT
|
>xxxDBG_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>The <TT
|
>The <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>DBG</TT
|
>DBG</TT
|
> tag indicates that the option is in
|
> tag indicates that the option is in
|
some way related to debugging, for example it may enable assertions in
|
some way related to debugging, for example it may enable assertions in
|
some part of the system.</P
|
some part of the system.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxTST_</TT
|
>xxxTST_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>This tag is for testing-related options. Typically these do not
|
>This tag is for testing-related options. Typically these do not
|
affect actual application code, instead they control the interaction
|
affect actual application code, instead they control the interaction
|
between target-side test cases and a host-side testing infrastructure.</P
|
between target-side test cases and a host-side testing infrastructure.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxFUN_</TT
|
>xxxFUN_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>This is for configuration options which affect the interface of a
|
>This is for configuration options which affect the interface of a
|
package. There are a number of related tag which are also
|
package. There are a number of related tag which are also
|
interface-related. <TT
|
interface-related. <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxFUN_</TT
|
>xxxFUN_</TT
|
> is intended primarily
|
> is intended primarily
|
for options that control whether or not one or more functions are
|
for options that control whether or not one or more functions are
|
provided by the package, but can also be used if none of the other
|
provided by the package, but can also be used if none of the other
|
interface-related tags is applicable.</P
|
interface-related tags is applicable.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxVAR_</TT
|
>xxxVAR_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>This is analogous to <TT
|
>This is analogous to <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>FUN</TT
|
>FUN</TT
|
> but controls the presence
|
> but controls the presence
|
or absence of one or more variables or objects.</P
|
or absence of one or more variables or objects.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxCLS_</TT
|
>xxxCLS_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>The <TT
|
>The <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>CLS</TT
|
>CLS</TT
|
> tag is intended only for packages that
|
> tag is intended only for packages that
|
provide an object-oriented interface, and controls the presence or
|
provide an object-oriented interface, and controls the presence or
|
absence of an entire class.</P
|
absence of an entire class.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxMFN_</TT
|
>xxxMFN_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>This is also for object-orientated interfaces, and indicates the
|
>This is also for object-orientated interfaces, and indicates the
|
presence or absence of a member function rather than an entire class.</P
|
presence or absence of a member function rather than an entire class.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxSEM_</TT
|
>xxxSEM_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>A <TT
|
>A <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>SEM</TT
|
>SEM</TT
|
> option does not affect the interface (or if
|
> option does not affect the interface (or if
|
does affect the interface, this is incidental). Instead it is used for
|
does affect the interface, this is incidental). Instead it is used for
|
options which have a fundamental effect on the semantic behavior of a
|
options which have a fundamental effect on the semantic behavior of a
|
package. For example the choice of kernel schedulers is semantic in
|
package. For example the choice of kernel schedulers is semantic in
|
nature: it does not affect the interface, in particular the function
|
nature: it does not affect the interface, in particular the function
|
<TT
|
<TT
|
CLASS="FUNCTION"
|
CLASS="FUNCTION"
|
>cyg_thread_create</TT
|
>cyg_thread_create</TT
|
> exists irrespective of which
|
> exists irrespective of which
|
scheduler has been selected. However it does have a major impact on
|
scheduler has been selected. However it does have a major impact on
|
the system's behavior.</P
|
the system's behavior.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxIMP_</TT
|
>xxxIMP_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>IMP</TT
|
>IMP</TT
|
> is for implementation options. These do not
|
> is for implementation options. These do not
|
affect either the interface or the semantic behavior (with the
|
affect either the interface or the semantic behavior (with the
|
possible exception of timing-related changes). A typical
|
possible exception of timing-related changes). A typical
|
implementation option controls whether or not a particular function or
|
implementation option controls whether or not a particular function or
|
set of functions should get inlined.</P
|
set of functions should get inlined.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxNUM_</TT
|
>xxxNUM_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>This tag is for numerical options, for example the number of
|
>This tag is for numerical options, for example the number of
|
scheduling priority levels.</P
|
scheduling priority levels.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxDAT_</TT
|
>xxxDAT_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>This is for data items that are not numerical in nature, for example a
|
>This is for data items that are not numerical in nature, for example a
|
device name.</P
|
device name.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxBLD_</TT
|
>xxxBLD_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>The <TT
|
>The <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>BLD</TT
|
>BLD</TT
|
> tag indicates an option that affects
|
> tag indicates an option that affects
|
the build process, for example compiler flag settings.</P
|
the build process, for example compiler flag settings.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxINT_</TT
|
>xxxINT_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>This should normally be used for <SPAN
|
>This should normally be used for <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>CDL</SPAN
|
>CDL</SPAN
|
> interfaces, which is a language
|
> interfaces, which is a language
|
construct that is largely independent from the interface exported by a
|
construct that is largely independent from the interface exported by a
|
package via its header files. For more details of <SPAN
|
package via its header files. For more details of <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>CDL</SPAN
|
>CDL</SPAN
|
> interfaces
|
> interfaces
|
see <A
|
see <A
|
HREF="language.interface.html"
|
HREF="language.interface.html"
|
>the Section called <I
|
>the Section called <I
|
>Interfaces</I
|
>Interfaces</I
|
></A
|
></A
|
>.</P
|
>.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxPRI_</TT
|
>xxxPRI_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>This tag is not normally used for configuration options. Instead
|
>This tag is not normally used for configuration options. Instead
|
it is used by <SPAN
|
it is used by <SPAN
|
CLASS="APPLICATION"
|
CLASS="APPLICATION"
|
>CDL</SPAN
|
>CDL</SPAN
|
> scripts to pass additional private information to
|
> scripts to pass additional private information to
|
the source code via the configuration header files, typically inside a
|
the source code via the configuration header files, typically inside a
|
<SPAN
|
<SPAN
|
CLASS="PROPERTY"
|
CLASS="PROPERTY"
|
>define_proc</SPAN
|
>define_proc</SPAN
|
> property.</P
|
> property.</P
|
></DD
|
></DD
|
><DT
|
><DT
|
><TT
|
><TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>xxxSRC_</TT
|
>xxxSRC_</TT
|
></DT
|
></DT
|
><DD
|
><DD
|
><P
|
><P
|
>This tag is not normally used for configuration options. Instead
|
>This tag is not normally used for configuration options. Instead
|
it can be used by package source code to interact with such options,
|
it can be used by package source code to interact with such options,
|
especially in the context of the <SPAN
|
especially in the context of the <SPAN
|
CLASS="PROPERTY"
|
CLASS="PROPERTY"
|
>if_define</SPAN
|
>if_define</SPAN
|
> property.</P
|
> property.</P
|
></DD
|
></DD
|
></DL
|
></DL
|
></DIV
|
></DIV
|
><P
|
><P
|
>There is one special case of a potential name clash that is worth
|
>There is one special case of a potential name clash that is worth
|
mentioning here. When the component framework generates a
|
mentioning here. When the component framework generates a
|
configuration header file for a given package, by default it will use
|
configuration header file for a given package, by default it will use
|
a name derived from the package name (the <SPAN
|
a name derived from the package name (the <SPAN
|
CLASS="PROPERTY"
|
CLASS="PROPERTY"
|
>define_header</SPAN
|
>define_header</SPAN
|
> property can
|
> property can
|
be used to override this). The file name is constructed from the
|
be used to override this). The file name is constructed from the
|
package name by removing everything up to and including the first
|
package name by removing everything up to and including the first
|
underscore, converting the remainder of the name to lower case, and
|
underscore, converting the remainder of the name to lower case, and
|
appending a <TT
|
appending a <TT
|
CLASS="LITERAL"
|
CLASS="LITERAL"
|
>.h</TT
|
>.h</TT
|
> suffix. For example the kernel
|
> suffix. For example the kernel
|
package <TT
|
package <TT
|
CLASS="VARNAME"
|
CLASS="VARNAME"
|
>CYGPKG_KERNEL</TT
|
>CYGPKG_KERNEL</TT
|
> will involve a header file
|
> will involve a header file
|
<TT
|
<TT
|
CLASS="FILENAME"
|
CLASS="FILENAME"
|
>pkgconf/kernel.h</TT
|
>pkgconf/kernel.h</TT
|
>. If a
|
>. If a
|
configuration contained some other package
|
configuration contained some other package
|
<TT
|
<TT
|
CLASS="VARNAME"
|
CLASS="VARNAME"
|
>XYZPKG_KERNEL</TT
|
>XYZPKG_KERNEL</TT
|
> then this would attempt to use the
|
> then this would attempt to use the
|
same configuration header file, with unfortunate effects. Case
|
same configuration header file, with unfortunate effects. Case
|
sensitivity could introduce problems as well, so a package
|
sensitivity could introduce problems as well, so a package
|
<TT
|
<TT
|
CLASS="VARNAME"
|
CLASS="VARNAME"
|
>xyzpkg_kernel</TT
|
>xyzpkg_kernel</TT
|
> would involve the same problem. Even
|
> would involve the same problem. Even
|
if the header file names preserved the case of the package name, not
|
if the header file names preserved the case of the package name, not
|
all file systems are case sensitive. There is no simple solution to
|
all file systems are case sensitive. There is no simple solution to
|
this problem. Changing the names of the generated configuration header
|
this problem. Changing the names of the generated configuration header
|
files would involve a major incompatible change to the interface, to
|
files would involve a major incompatible change to the interface, to
|
solve a problem which is essentially hypothetical in nature.</P
|
solve a problem which is essentially hypothetical in nature.</P
|
></DIV
|
></DIV
|
><DIV
|
><DIV
|
CLASS="NAVFOOTER"
|
CLASS="NAVFOOTER"
|
><HR
|
><HR
|
ALIGN="LEFT"
|
ALIGN="LEFT"
|
WIDTH="100%"><TABLE
|
WIDTH="100%"><TABLE
|
SUMMARY="Footer navigation table"
|
SUMMARY="Footer navigation table"
|
WIDTH="100%"
|
WIDTH="100%"
|
BORDER="0"
|
BORDER="0"
|
CELLPADDING="0"
|
CELLPADDING="0"
|
CELLSPACING="0"
|
CELLSPACING="0"
|
><TR
|
><TR
|
><TD
|
><TD
|
WIDTH="33%"
|
WIDTH="33%"
|
ALIGN="left"
|
ALIGN="left"
|
VALIGN="top"
|
VALIGN="top"
|
><A
|
><A
|
HREF="language.properties.html"
|
HREF="language.properties.html"
|
ACCESSKEY="P"
|
ACCESSKEY="P"
|
>Prev</A
|
>Prev</A
|
></TD
|
></TD
|
><TD
|
><TD
|
WIDTH="34%"
|
WIDTH="34%"
|
ALIGN="center"
|
ALIGN="center"
|
VALIGN="top"
|
VALIGN="top"
|
><A
|
><A
|
HREF="cdl-guide.html"
|
HREF="cdl-guide.html"
|
ACCESSKEY="H"
|
ACCESSKEY="H"
|
>Home</A
|
>Home</A
|
></TD
|
></TD
|
><TD
|
><TD
|
WIDTH="33%"
|
WIDTH="33%"
|
ALIGN="right"
|
ALIGN="right"
|
VALIGN="top"
|
VALIGN="top"
|
><A
|
><A
|
HREF="language.tcl.html"
|
HREF="language.tcl.html"
|
ACCESSKEY="N"
|
ACCESSKEY="N"
|
>Next</A
|
>Next</A
|
></TD
|
></TD
|
></TR
|
></TR
|
><TR
|
><TR
|
><TD
|
><TD
|
WIDTH="33%"
|
WIDTH="33%"
|
ALIGN="left"
|
ALIGN="left"
|
VALIGN="top"
|
VALIGN="top"
|
>CDL Properties</TD
|
>CDL Properties</TD
|
><TD
|
><TD
|
WIDTH="34%"
|
WIDTH="34%"
|
ALIGN="center"
|
ALIGN="center"
|
VALIGN="top"
|
VALIGN="top"
|
><A
|
><A
|
HREF="language.html"
|
HREF="language.html"
|
ACCESSKEY="U"
|
ACCESSKEY="U"
|
>Up</A
|
>Up</A
|
></TD
|
></TD
|
><TD
|
><TD
|
WIDTH="33%"
|
WIDTH="33%"
|
ALIGN="right"
|
ALIGN="right"
|
VALIGN="top"
|
VALIGN="top"
|
>An Introduction to Tcl</TD
|
>An Introduction to Tcl</TD
|
></TR
|
></TR
|
></TABLE
|
></TABLE
|
></DIV
|
></DIV
|
></BODY
|
></BODY
|
></HTML
|
></HTML
|
|
|