OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [doc/] [html/] [cdl-guide/] [language.properties.html] - Blame information for rev 629

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 28 unneback
<!-- Copyright (C) 2003 Red Hat, Inc.                                -->
2
<!-- This material may be distributed only subject to the terms      -->
3
<!-- and conditions set forth in the Open Publication License, v1.0  -->
4
<!-- or later (the latest version is presently available at          -->
5
<!-- http://www.opencontent.org/openpub/).                           -->
6
<!-- Distribution of the work or derivative of the work in any       -->
7
<!-- standard (paper) book form is prohibited unless prior           -->
8
<!-- permission is obtained from the copyright holder.               -->
9
<HTML
10
><HEAD
11
><TITLE
12
>CDL Properties</TITLE
13
><meta name="MSSmartTagsPreventParsing" content="TRUE">
14
<META
15
NAME="GENERATOR"
16
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
17
"><LINK
18
REL="HOME"
19
TITLE="The eCos Component Writer's Guide"
20
HREF="cdl-guide.html"><LINK
21
REL="UP"
22
TITLE="The CDL Language"
23
HREF="language.html"><LINK
24
REL="PREVIOUS"
25
TITLE="CDL Commands"
26
HREF="language.commands.html"><LINK
27
REL="NEXT"
28
TITLE="Option Naming Convention"
29
HREF="language.naming.html"></HEAD
30
><BODY
31
CLASS="SECT1"
32
BGCOLOR="#FFFFFF"
33
TEXT="#000000"
34
LINK="#0000FF"
35
VLINK="#840084"
36
ALINK="#0000FF"
37
><DIV
38
CLASS="NAVHEADER"
39
><TABLE
40
SUMMARY="Header navigation table"
41
WIDTH="100%"
42
BORDER="0"
43
CELLPADDING="0"
44
CELLSPACING="0"
45
><TR
46
><TH
47
COLSPAN="3"
48
ALIGN="center"
49
>The <SPAN
50
CLASS="APPLICATION"
51
>eCos</SPAN
52
> Component Writer's Guide</TH
53
></TR
54
><TR
55
><TD
56
WIDTH="10%"
57
ALIGN="left"
58
VALIGN="bottom"
59
><A
60
HREF="language.commands.html"
61
ACCESSKEY="P"
62
>Prev</A
63
></TD
64
><TD
65
WIDTH="80%"
66
ALIGN="center"
67
VALIGN="bottom"
68
>Chapter 3. The CDL Language</TD
69
><TD
70
WIDTH="10%"
71
ALIGN="right"
72
VALIGN="bottom"
73
><A
74
HREF="language.naming.html"
75
ACCESSKEY="N"
76
>Next</A
77
></TD
78
></TR
79
></TABLE
80
><HR
81
ALIGN="LEFT"
82
WIDTH="100%"></DIV
83
><DIV
84
CLASS="SECT1"
85
><H1
86
CLASS="SECT1"
87
><A
88
NAME="LANGUAGE.PROPERTIES">CDL Properties</H1
89
><P
90
>Each package, component, option, and interface has a body of
91
properties, which provide the component framework with information
92
about how to handle each option. For example there is a property for a
93
descriptive text message which can be displayed to a user who is
94
trying to figure out just what effect manipulating the option would
95
have on the target application. There is another property for the
96
default value, for example whether a particular option should be
97
enabled or disabled by default.</P
98
><P
99
>All of the properties are optional, it is legal to define a
100
configuration option which has an empty body. However some properties
101
are more optional than others: users will not appreciate having to
102
manipulate an option if they are not given any sort of description or
103
documentation. Other properties are intended only for very specific
104
purposes, for example <SPAN
105
CLASS="PROPERTY"
106
>make_object</SPAN
107
> and <SPAN
108
CLASS="PROPERTY"
109
>include_files</SPAN
110
>, and are used
111
only rarely.</P
112
><P
113
>Because different properties serve very different purposes, their
114
syntax is not as uniform as the top-level commands. Some properties
115
take no arguments at all. Other properties take a single argument such
116
as a description string, or a list of arguments such as a <SPAN
117
CLASS="PROPERTY"
118
>compile</SPAN
119
>
120
property which specifies the file or files that should be compiled if
121
a given option is active and enabled. The <SPAN
122
CLASS="PROPERTY"
123
>define_proc</SPAN
124
> property takes
125
as argument a snippet of <SPAN
126
CLASS="APPLICATION"
127
>Tcl</SPAN
128
> code. The <SPAN
129
CLASS="PROPERTY"
130
>active_if</SPAN
131
>, <SPAN
132
CLASS="PROPERTY"
133
>calculated</SPAN
134
>,
135
<SPAN
136
CLASS="PROPERTY"
137
>default_value</SPAN
138
>, <SPAN
139
CLASS="PROPERTY"
140
>legal_values</SPAN
141
> and <SPAN
142
CLASS="PROPERTY"
143
>requires</SPAN
144
> properties take various
145
expressions. Additional properties may be defined in future which take
146
new kinds of arguments.</P
147
><P
148
>All property parsing code supports options for every property,
149
although at present the majority of properties do not yet take any
150
options. Any initial arguments that begin with a hyphen character
151
<TT
152
CLASS="LITERAL"
153
>-</TT
154
> will be interpreted as an option, for example:</P
155
><TABLE
156
BORDER="5"
157
BGCOLOR="#E0E0F0"
158
WIDTH="70%"
159
><TR
160
><TD
161
><PRE
162
CLASS="PROGRAMLISTING"
163
>cdl_package CYGPKG_HAL_ARM {
164
    &#8230;
165
    make -priority 1 {
166
        &#8230;
167
    }
168
}</PRE
169
></TD
170
></TR
171
></TABLE
172
><P
173
>If the option involves additional data, as for the
174
<TT
175
CLASS="LITERAL"
176
>-priority</TT
177
> example above, then this can be written
178
as either <TT
179
CLASS="LITERAL"
180
>-priority=1</TT
181
> or as
182
<TT
183
CLASS="LITERAL"
184
>-priority&nbsp;1</TT
185
>. On occasion the option parsing
186
code can get in the way, for example:</P
187
><TABLE
188
BORDER="5"
189
BGCOLOR="#E0E0F0"
190
WIDTH="70%"
191
><TR
192
><TD
193
><PRE
194
CLASS="PROGRAMLISTING"
195
>cdl_option CYGNUM_LIBC_TIME_DST_DEFAULT_STATE {
196
    &#8230;
197
    legal_values -1 to 1
198
    default_value -1
199
}</PRE
200
></TD
201
></TR
202
></TABLE
203
><P
204
>Neither the <SPAN
205
CLASS="PROPERTY"
206
>legal_values</SPAN
207
> nor the <SPAN
208
CLASS="PROPERTY"
209
>default_value</SPAN
210
> property will
211
accept <TT
212
CLASS="LITERAL"
213
>-1</TT
214
> as a valid option, so this will result in
215
syntax errors when the <SPAN
216
CLASS="APPLICATION"
217
>CDL</SPAN
218
> script is read in by the component
219
framework. To avoid problems, the option parsing code will recognize
220
the string <TT
221
CLASS="LITERAL"
222
>--</TT
223
> and will not attempt to interpret any
224
subsequent arguments. Hence this option should be written as:</P
225
><TABLE
226
BORDER="5"
227
BGCOLOR="#E0E0F0"
228
WIDTH="70%"
229
><TR
230
><TD
231
><PRE
232
CLASS="PROGRAMLISTING"
233
>cdl_option CYGNUM_LIBC_TIME_DST_DEFAULT_STATE {
234
    &#8230;
235
    legal_values  -- -1 to 1
236
    default_value -- -1
237
}</PRE
238
></TD
239
></TR
240
></TABLE
241
><P
242
>The property parsing code involves a recursive invocation of the Tcl
243
interpreter that is used to parse the top-level commands. This means
244
that some characters in the body of an option will be treated
245
specially. The <TT
246
CLASS="LITERAL"
247
>#</TT
248
> character can be used for
249
comments. The backslash character <TT
250
CLASS="LITERAL"
251
>\</TT
252
>, the
253
dollar character <TT
254
CLASS="LITERAL"
255
>$</TT
256
>, square brackets
257
<TT
258
CLASS="LITERAL"
259
>[</TT
260
> and <TT
261
CLASS="LITERAL"
262
>]</TT
263
>, braces
264
<TT
265
CLASS="LITERAL"
266
>{</TT
267
> and <TT
268
CLASS="LITERAL"
269
>}</TT
270
>, and the quote character
271
<TT
272
CLASS="LITERAL"
273
>"</TT
274
> may all receive special treatment. Most of the
275
time this is not a problem because these characters are not useful for
276
most properties. On occasion having a <SPAN
277
CLASS="APPLICATION"
278
>Tcl</SPAN
279
> interpreter around
280
performing the parser can be very powerful. For more details of
281
how the presence of a <SPAN
282
CLASS="APPLICATION"
283
>Tcl</SPAN
284
> interpreter can affect <SPAN
285
CLASS="APPLICATION"
286
>CDL</SPAN
287
> scripts,
288
see <A
289
HREF="language.tcl.html"
290
>the Section called <I
291
>An Introduction to Tcl</I
292
></A
293
>.</P
294
><P
295
>Many of the properties can be used in any of <TT
296
CLASS="LITERAL"
297
>cdl_package</TT
298
>,
299
<TT
300
CLASS="LITERAL"
301
>cdl_component</TT
302
>, <TT
303
CLASS="LITERAL"
304
>cdl_option</TT
305
> or <TT
306
CLASS="LITERAL"
307
>cdl_interface</TT
308
>. Other properties are
309
more specific. The <SPAN
310
CLASS="PROPERTY"
311
>script</SPAN
312
> property is only relevant to components.
313
The <SPAN
314
CLASS="PROPERTY"
315
>define_header</SPAN
316
>, <SPAN
317
CLASS="PROPERTY"
318
>hardware</SPAN
319
>, <SPAN
320
CLASS="PROPERTY"
321
>include_dir</SPAN
322
>, <SPAN
323
CLASS="PROPERTY"
324
>include_files</SPAN
325
>, and
326
<SPAN
327
CLASS="PROPERTY"
328
>library</SPAN
329
> properties apply to a package as a whole, so can only occur
330
in the body of a <TT
331
CLASS="LITERAL"
332
>cdl_package</TT
333
> command. The <SPAN
334
CLASS="PROPERTY"
335
>calculated</SPAN
336
>,
337
<SPAN
338
CLASS="PROPERTY"
339
>default_value</SPAN
340
>, <SPAN
341
CLASS="PROPERTY"
342
>legal_values</SPAN
343
> and <SPAN
344
CLASS="PROPERTY"
345
>flavor</SPAN
346
> properties are not
347
relevant to packages, as will be explained later. The <SPAN
348
CLASS="PROPERTY"
349
>calculated</SPAN
350
> and
351
<SPAN
352
CLASS="PROPERTY"
353
>default_value</SPAN
354
> properties are also not relevant to interfaces.</P
355
><P
356
>This section lists the various properties, grouped by purpose. Each
357
property also has a full reference page in <A
358
HREF="reference.html"
359
>Chapter 5</A
360
>.
361
Properties related to values and expressions are described in more
362
detail in <A
363
HREF="language.values.html"
364
>the Section called <I
365
>Values and Expressions</I
366
></A
367
>. Properties related to
368
header file generation and to the build process are described in
369
<A
370
HREF="build.html"
371
>Chapter 4</A
372
>.</P
373
><DIV
374
CLASS="SECT2"
375
><H2
376
CLASS="SECT2"
377
><A
378
NAME="LANGUAGE.PROPERTIES.USER">Information-providing Properties</H2
379
><P
380
>Users can only be expected to manipulate configuration options
381
sensibly if they are given sufficient information about these options.
382
There are three properties which serve to explain an option in plain
383
text: the <A
384
HREF="ref.display.html"
385
><SPAN
386
CLASS="PROPERTY"
387
>display</SPAN
388
></A
389
> property gives
390
a textual alias for an option, which is usually more comprehensible
391
than something like <TT
392
CLASS="LITERAL"
393
>CYGPKG_LIBC_TIME_ZONES`</TT
394
>; the
395
<A
396
HREF="ref.description.html"
397
><SPAN
398
CLASS="PROPERTY"
399
>description</SPAN
400
></A
401
> property gives a
402
longer description, typically a paragraph or so; the <A
403
HREF="ref.doc.html"
404
><SPAN
405
CLASS="PROPERTY"
406
>doc</SPAN
407
></A
408
> property specifies the location of
409
additional on-line documentation related to a configuration option. In
410
the context of a graphical tool the <SPAN
411
CLASS="PROPERTY"
412
>display</SPAN
413
> string will be the
414
primary way for users to identify configuration options; the
415
<SPAN
416
CLASS="PROPERTY"
417
>description</SPAN
418
> paragraph will be visible whenever the option is
419
selected; the on-line documentation will only be accessed when the
420
user explicitly requests it.</P
421
><TABLE
422
BORDER="5"
423
BGCOLOR="#E0E0F0"
424
WIDTH="70%"
425
><TR
426
><TD
427
><PRE
428
CLASS="PROGRAMLISTING"
429
>cdl_package CYGPKG_UITRON {
430
    display       "uITRON compatibility layer"
431
    doc           ref/ecos-ref.a.html
432
    description   "
433
        eCos supports a uITRON Compatibility Layer, providing
434
        full Level S (Standard) compliance with Version 3.02 of
435
        the uITRON Standard, plus many Level E (Extended) features.
436
        uITRON is the premier Japanese embedded RTOS standard."
437
    &#8230;
438
}</PRE
439
></TD
440
></TR
441
></TABLE
442
><P
443
>All three properties take a single argument. For <SPAN
444
CLASS="PROPERTY"
445
>display</SPAN
446
> and
447
<SPAN
448
CLASS="PROPERTY"
449
>description</SPAN
450
> this argument is just a string. For <SPAN
451
CLASS="PROPERTY"
452
>doc</SPAN
453
> it should be a
454
pointer to a suitable HTML file, optionally including an anchor within
455
that page. If the <A
456
HREF="package.html#PACKAGE.HIERARCHY"
457
>directory layout
458
conventions</A
459
> are observed then the component framework will look
460
for the HTML file in the package's <TT
461
CLASS="FILENAME"
462
>doc</TT
463
> sub-directory, otherwise the <SPAN
464
CLASS="PROPERTY"
465
>doc</SPAN
466
>
467
filename will be treated as relative to the package's top-level directory.</P
468
></DIV
469
><DIV
470
CLASS="SECT2"
471
><H2
472
CLASS="SECT2"
473
><A
474
NAME="LANGUAGE.PROPERTIES.HIERARCHY">The Configuration Hierarchy</H2
475
><P
476
>There are two properties related to the hierarchical organization of
477
components and options: <A
478
HREF="ref.parent.html"
479
><SPAN
480
CLASS="PROPERTY"
481
>parent</SPAN
482
></A
483
> and
484
<A
485
HREF="ref.script.html"
486
><SPAN
487
CLASS="PROPERTY"
488
>script</SPAN
489
></A
490
>.</P
491
><P
492
>The <SPAN
493
CLASS="PROPERTY"
494
>parent</SPAN
495
> property can be used to move a <SPAN
496
CLASS="APPLICATION"
497
>CDL</SPAN
498
> entity somewhere
499
else in the hierarchy. The most common use is for packages, to avoid
500
having all the packages appear at the top-level of the configuration
501
hierarchy. For example an architectural HAL package such as
502
<TT
503
CLASS="VARNAME"
504
>CYGPKG_HAL_SH</TT
505
> is placed below the common HAL
506
package <TT
507
CLASS="VARNAME"
508
>CYGPKG_HAL</TT
509
> using a <SPAN
510
CLASS="PROPERTY"
511
>parent</SPAN
512
> property.</P
513
><TABLE
514
BORDER="5"
515
BGCOLOR="#E0E0F0"
516
WIDTH="70%"
517
><TR
518
><TD
519
><PRE
520
CLASS="PROGRAMLISTING"
521
>cdl_package CYGPKG_HAL_SH {
522
    display       "SH architecture"
523
    parent        CYGPKG_HAL
524
    &#8230;
525
}</PRE
526
></TD
527
></TR
528
></TABLE
529
><P
530
>The <SPAN
531
CLASS="PROPERTY"
532
>parent</SPAN
533
> property can also be used in the body of a
534
<TT
535
CLASS="LITERAL"
536
>cdl_component</TT
537
>, <TT
538
CLASS="LITERAL"
539
>cdl_option</TT
540
> or <TT
541
CLASS="LITERAL"
542
>cdl_interface</TT
543
>, but this is less
544
common. However care has to be taken since excessive re-parenting can
545
be confusing. Care also has to be taken when reparenting below some
546
other package that may not actually be loaded in a given
547
configuration, since the resulting behavior is undefined.</P
548
><P
549
>As a special case, if the parent is the empty string then the
550
<SPAN
551
CLASS="APPLICATION"
552
>CDL</SPAN
553
> entity is placed at the root of the hierarchy. This is useful
554
for global preferences, default compiler flags, and other settings
555
that may affect every package.</P
556
><P
557
>The <SPAN
558
CLASS="PROPERTY"
559
>script</SPAN
560
> property can only be used in the body of a
561
<TT
562
CLASS="LITERAL"
563
>cdl_component</TT
564
> command. The property takes a single filename as
565
argument, and this should be another <SPAN
566
CLASS="APPLICATION"
567
>CDL</SPAN
568
> script containing
569
additional options, sub-components and interfaces that should go below
570
the current component in the hierarchy. If the <A
571
HREF="package.html#PACKAGE.HIERARCHY"
572
>directory layout conventions</A
573
> are
574
observed then the component framework will look for the specified file
575
relative to the <TT
576
CLASS="FILENAME"
577
>cdl</TT
578
>
579
subdirectory of the package, otherwise the filename will be treated as
580
relative to the package's top-level directory.</P
581
><TABLE
582
BORDER="5"
583
BGCOLOR="#E0E0F0"
584
WIDTH="70%"
585
><TR
586
><TD
587
><PRE
588
CLASS="PROGRAMLISTING"
589
>cdl_component CYGPKG_LIBC_STDIO {
590
    display       "Standard input/output functions"
591
    flavor        bool
592
    requires      CYGPKG_IO
593
    requires      CYGPKG_IO_SERIAL_HALDIAG
594
    default_value 1
595
    description   "
596
        This enables support for standard I/O functions from &lt;stdio.h&gt;."
597
 
598
    script        stdio.cdl
599
}</PRE
600
></TD
601
></TR
602
></TABLE
603
></DIV
604
><DIV
605
CLASS="SECT2"
606
><H2
607
CLASS="SECT2"
608
><A
609
NAME="LANGUAGE.PROPERTIES.VALUE">Value-related Properties</H2
610
><P
611
>There are seven properties which are related to option values and
612
state: <A
613
HREF="ref.flavor.html"
614
><SPAN
615
CLASS="PROPERTY"
616
>flavor</SPAN
617
></A
618
>,
619
<A
620
HREF="ref.calculated.html"
621
><SPAN
622
CLASS="PROPERTY"
623
>calculated</SPAN
624
></A
625
>,
626
<A
627
HREF="ref.default-value.html"
628
><SPAN
629
CLASS="PROPERTY"
630
>default_value</SPAN
631
></A
632
>,
633
<A
634
HREF="ref.legal-values.html"
635
><SPAN
636
CLASS="PROPERTY"
637
>legal_values</SPAN
638
></A
639
>,
640
<A
641
HREF="ref.active-if.html"
642
><SPAN
643
CLASS="PROPERTY"
644
>active_if</SPAN
645
></A
646
>,
647
<A
648
HREF="ref.implements.html"
649
><SPAN
650
CLASS="PROPERTY"
651
>implements</SPAN
652
></A
653
>, and
654
<A
655
HREF="ref.requires.html"
656
><SPAN
657
CLASS="PROPERTY"
658
>requires</SPAN
659
></A
660
>. More detailed
661
information can be found in <A
662
HREF="language.values.html"
663
>the Section called <I
664
>Values and Expressions</I
665
></A
666
>.</P
667
><P
668
>In the context of configurability, the concept of an option's value is
669
somewhat non-trivial. First an option may or may not be loaded: it is
670
possible to build a configuration which has the math library but not
671
the kernel; however the math library's <SPAN
672
CLASS="APPLICATION"
673
>CDL</SPAN
674
> scripts still reference
675
kernel options, for example
676
<TT
677
CLASS="VARNAME"
678
>CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE</TT
679
> has a
680
<SPAN
681
CLASS="PROPERTY"
682
>requires</SPAN
683
> constraint on
684
<TT
685
CLASS="VARNAME"
686
>CYGVAR_KERNEL_THREADS_DATA</TT
687
>. Even if an option is
688
loaded it may or may not be active, depending on what is happening
689
higher up in the hierarchy: if the C library's
690
<TT
691
CLASS="VARNAME"
692
>CYGPKG_LIBC_STDIO</TT
693
> component is disabled then some
694
other options such as <TT
695
CLASS="VARNAME"
696
>CYGNUM_LIBC_STDIO_BUFSIZE</TT
697
>
698
become irrelevant. In addition each option has both a boolean
699
enabled/disabled flag and a data part. For many options only the
700
boolean flag is of interest, while for others only the data part is of
701
interest. The <SPAN
702
CLASS="PROPERTY"
703
>flavor</SPAN
704
> property can be used to control this:</P
705
><P
706
></P
707
><DIV
708
CLASS="VARIABLELIST"
709
><DL
710
><DT
711
><TT
712
CLASS="LITERAL"
713
>flavor none</TT
714
></DT
715
><DD
716
><P
717
>This flavor indicates that neither the boolean nor the data parts are
718
user-modifiable: the option is always enabled and the data is always
719
set to <TT
720
CLASS="LITERAL"
721
>1</TT
722
>. The most common use for this is to have a
723
component that just acts as a placeholder in the hierarchy, allowing
724
various options to be grouped below it.</P
725
></DD
726
><DT
727
><TT
728
CLASS="LITERAL"
729
>flavor bool</TT
730
></DT
731
><DD
732
><P
733
>Only the boolean part of the option is user-modifiable. The data part
734
is fixed at <TT
735
CLASS="LITERAL"
736
>1</TT
737
>.</P
738
></DD
739
><DT
740
><TT
741
CLASS="LITERAL"
742
>flavor data</TT
743
></DT
744
><DD
745
><P
746
>Only the data part of the option is user-modifiable. The boolean part
747
is fixed at enabled.</P
748
></DD
749
><DT
750
><TT
751
CLASS="LITERAL"
752
>flavor booldata</TT
753
></DT
754
><DD
755
><P
756
>Both the boolean and the data part of the option are user-modifiable.</P
757
></DD
758
></DL
759
></DIV
760
><P
761
>For more details of <SPAN
762
CLASS="APPLICATION"
763
>CDL</SPAN
764
> flavors and how a flavor affects expression
765
evaluation, and other consequences, see <A
766
HREF="language.values.html"
767
>the Section called <I
768
>Values and Expressions</I
769
></A
770
>. The <SPAN
771
CLASS="PROPERTY"
772
>flavor</SPAN
773
> property cannot be used for a
774
package because packages always have the <TT
775
CLASS="LITERAL"
776
>booldata</TT
777
>
778
flavor. Options and components have the <TT
779
CLASS="LITERAL"
780
>bool</TT
781
> flavor
782
by default, since most configuration choices are simple yes-or-no
783
choices. Interfaces have the <TT
784
CLASS="LITERAL"
785
>data</TT
786
> flavor by default.</P
787
><P
788
>The <SPAN
789
CLASS="PROPERTY"
790
>calculated</SPAN
791
> property can be used for options which should not be
792
user-modifiable, but which instead are fixed by the target hardware or
793
determined from the current values of other options. In general
794
<SPAN
795
CLASS="PROPERTY"
796
>calculated</SPAN
797
> options should be avoided, since they can be confusing to
798
users who need to figure out whether or not a particular option can
799
actually be changed. There are a number of valid uses for <SPAN
800
CLASS="PROPERTY"
801
>calculated</SPAN
802
>
803
options, and quite a few invalid ones as well. The <A
804
HREF="ref.calculated.html"
805
>reference packages</A
806
> should be consulted
807
for further details. The property takes an <A
808
HREF="language.values.html#LANGUAGE.EXPRESSION"
809
>ordinary <SPAN
810
CLASS="APPLICATION"
811
>CDL</SPAN
812
> expression</A
813
> as
814
argument, for example:</P
815
><TABLE
816
BORDER="5"
817
BGCOLOR="#E0E0F0"
818
WIDTH="70%"
819
><TR
820
><TD
821
><PRE
822
CLASS="PROGRAMLISTING"
823
># A constant on some target hardware, perhaps user-modifiable on other
824
# targets.
825
cdl_option CYGNUM_HAL_RTC_PERIOD {
826
    display       "Real-time clock period"
827
    flavor        data
828
    calculated    12500
829
}</PRE
830
></TD
831
></TR
832
></TABLE
833
><P
834
>The <SPAN
835
CLASS="PROPERTY"
836
>calculated</SPAN
837
> property cannot be used for packages or interfaces.
838
The value of a package always corresponds to the version of that
839
package which is loaded, and this is under user control. Interfaces
840
are implicitly calculated, based on the number of active and enabled
841
implementors.</P
842
><P
843
>The <SPAN
844
CLASS="PROPERTY"
845
>default_value</SPAN
846
> property is similar to <SPAN
847
CLASS="PROPERTY"
848
>calculated</SPAN
849
>, but only
850
specifies a default value which users can modify. Again this property
851
is not relevant to packages or interfaces. A typical example would be:</P
852
><TABLE
853
BORDER="5"
854
BGCOLOR="#E0E0F0"
855
WIDTH="70%"
856
><TR
857
><TD
858
><PRE
859
CLASS="PROGRAMLISTING"
860
>cdl_option CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT {
861
    display       "Include GDB multi-threading debug support"
862
    requires      CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT
863
    default_value CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT
864
    &#8230;
865
}</PRE
866
></TD
867
></TR
868
></TABLE
869
><P
870
>The <SPAN
871
CLASS="PROPERTY"
872
>legal_values</SPAN
873
> property imposes a constraint on the possible
874
values of the data part of an option. Hence it is only applicable to
875
options with the <TT
876
CLASS="LITERAL"
877
>data</TT
878
> or
879
<TT
880
CLASS="LITERAL"
881
>booldata</TT
882
> flavors. It cannot be used for a package
883
since the only valid value for a package is its version number. The
884
arguments to the <SPAN
885
CLASS="PROPERTY"
886
>legal_values</SPAN
887
> property should constitute a <A
888
HREF="language.values.html#LANGUAGE.LIST-EXPRESSION"
889
><SPAN
890
CLASS="APPLICATION"
891
>CDL</SPAN
892
> list expression</A
893
>.</P
894
><TABLE
895
BORDER="5"
896
BGCOLOR="#E0E0F0"
897
WIDTH="70%"
898
><TR
899
><TD
900
><PRE
901
CLASS="PROGRAMLISTING"
902
>cdl_option CYGNUM_LIBC_TIME_STD_DEFAULT_OFFSET {
903
    display       "Default Standard Time offset"
904
    flavor        data
905
    legal_values  -- -90000 to 90000
906
    default_value -- 0
907
    &#8230;
908
}</PRE
909
></TD
910
></TR
911
></TABLE
912
><P
913
>The <SPAN
914
CLASS="PROPERTY"
915
>active_if</SPAN
916
> property does not relate directly to an option's
917
value, but rather to its active state. Usually this is controlled via
918
the configuration hierarchy: if the
919
<TT
920
CLASS="VARNAME"
921
>CYGPKG_LIBC_STDIO</TT
922
> component is disabled then all
923
options below it are inactive and do not have any consequences.
924
In some cases the hierarchy does not provide sufficient control, for
925
example an option should only be active if two disjoint sets of
926
conditions are satisfied: the hierarchy could be used for one of these
927
conditions, and an additional <SPAN
928
CLASS="PROPERTY"
929
>active_if</SPAN
930
> property could be used for
931
the other one. The arguments to <SPAN
932
CLASS="PROPERTY"
933
>active_if</SPAN
934
> should constitute a
935
<A
936
HREF="language.values.html#LANGUAGE.GOAL-EXPRESSION"
937
><SPAN
938
CLASS="APPLICATION"
939
>CDL</SPAN
940
> goal expression</A
941
>.</P
942
><TABLE
943
BORDER="5"
944
BGCOLOR="#E0E0F0"
945
WIDTH="70%"
946
><TR
947
><TD
948
><PRE
949
CLASS="PROGRAMLISTING"
950
># Do not provide extra semaphore debugging if there are no semaphores
951
cdl_option CYGDBG_KERNEL_INSTRUMENT_BINSEM {
952
    active_if CYGPKG_KERNEL_SYNCH
953
    &#8230;
954
}</PRE
955
></TD
956
></TR
957
></TABLE
958
><P
959
>The <SPAN
960
CLASS="PROPERTY"
961
>implements</SPAN
962
> property is related to the concept of <A
963
HREF="language.interface.html"
964
><SPAN
965
CLASS="APPLICATION"
966
>CDL</SPAN
967
> interfaces</A
968
>. If an option is
969
active and enabled and it implements a particular interface then it
970
contributes <TT
971
CLASS="LITERAL"
972
>1</TT
973
> to that interface's value.</P
974
><TABLE
975
BORDER="5"
976
BGCOLOR="#E0E0F0"
977
WIDTH="70%"
978
><TR
979
><TD
980
><PRE
981
CLASS="PROGRAMLISTING"
982
>cdl_package CYGPKG_NET_EDB7XXX_ETH_DRIVERS {
983
    display       "Cirrus Logic ethernet driver"
984
    implements    CYGHWR_NET_DRIVERS
985
    implements    CYGHWR_NET_DRIVER_ETH0
986
    &#8230;
987
}</PRE
988
></TD
989
></TR
990
></TABLE
991
><P
992
>The <SPAN
993
CLASS="PROPERTY"
994
>requires</SPAN
995
> property is used to impose constraints on the user's
996
choices. For example it is unreasonable to expect the C library to
997
provide thread-safe implementations of certain functions if the
998
underlying kernel support has been disabled, or even if the kernel is
999
not being used at all.</P
1000
><TABLE
1001
BORDER="5"
1002
BGCOLOR="#E0E0F0"
1003
WIDTH="70%"
1004
><TR
1005
><TD
1006
><PRE
1007
CLASS="PROGRAMLISTING"
1008
>cdl_option CYGSEM_LIBC_PER_THREAD_ERRNO {
1009
    display       "Per-thread errno"
1010
    doc           ref/ecos-ref.15.html
1011
    requires      CYGVAR_KERNEL_THREADS_DATA
1012
    default_value 1
1013
    &#8230;
1014
}</PRE
1015
></TD
1016
></TR
1017
></TABLE
1018
><P
1019
>The arguments to the <SPAN
1020
CLASS="PROPERTY"
1021
>requires</SPAN
1022
> property should be a <A
1023
HREF="language.values.html#LANGUAGE.GOAL-EXPRESSION"
1024
><SPAN
1025
CLASS="APPLICATION"
1026
>CDL</SPAN
1027
> goal expression</A
1028
>.</P
1029
></DIV
1030
><DIV
1031
CLASS="SECT2"
1032
><H2
1033
CLASS="SECT2"
1034
><A
1035
NAME="LANGUAGE.PROPERTIES.DEFINE">Generating the Configuration Header Files</H2
1036
><P
1037
>When creating or updating a build tree the component framework will
1038
also generate configuration header files, one per package. By default
1039
it will generate a <TT
1040
CLASS="LITERAL"
1041
>#define</TT
1042
> for each option,
1043
component or interface that is active and enabled. For options with
1044
the <TT
1045
CLASS="LITERAL"
1046
>data</TT
1047
> or <TT
1048
CLASS="LITERAL"
1049
>booldata</TT
1050
> flavors the
1051
<TT
1052
CLASS="LITERAL"
1053
>#define</TT
1054
> will use the option's data part, otherwise
1055
it will use the constant <TT
1056
CLASS="LITERAL"
1057
>1</TT
1058
>. Typical output would
1059
include:</P
1060
><TABLE
1061
BORDER="5"
1062
BGCOLOR="#E0E0F0"
1063
WIDTH="70%"
1064
><TR
1065
><TD
1066
><PRE
1067
CLASS="PROGRAMLISTING"
1068
>#define CYGFUN_LIBC_TIME_POSIX 1
1069
#define CYGNUM_LIBC_TIME_DST_DEFAULT_STATE -1</PRE
1070
></TD
1071
></TR
1072
></TABLE
1073
><P
1074
>There are six properties which can be used to control the header file
1075
generation process:
1076
<A
1077
HREF="ref.define-header.html"
1078
><SPAN
1079
CLASS="PROPERTY"
1080
>define_header</SPAN
1081
></A
1082
>,
1083
<A
1084
HREF="ref.no-define.html"
1085
><SPAN
1086
CLASS="PROPERTY"
1087
>no_define</SPAN
1088
></A
1089
>,
1090
<A
1091
HREF="ref.define-format.html"
1092
><SPAN
1093
CLASS="PROPERTY"
1094
>define_format</SPAN
1095
></A
1096
>,
1097
<A
1098
HREF="ref.define.html"
1099
><SPAN
1100
CLASS="PROPERTY"
1101
>define</SPAN
1102
></A
1103
>,
1104
<A
1105
HREF="ref.if-define.html"
1106
><SPAN
1107
CLASS="PROPERTY"
1108
>if_define</SPAN
1109
></A
1110
>, and
1111
<A
1112
HREF="ref.define-proc.html"
1113
><SPAN
1114
CLASS="PROPERTY"
1115
>define_proc</SPAN
1116
></A
1117
>.</P
1118
><P
1119
>By default the component framework will generate a configuration
1120
header file for each package based on the package's name: everything
1121
up to and including the first underscore is discarded, the rest of the
1122
name is lower-cased, and a <TT
1123
CLASS="LITERAL"
1124
>.h</TT
1125
> suffix is appended.
1126
For example the configuration header file for the kernel package
1127
<TT
1128
CLASS="VARNAME"
1129
>CYGPKG_KERNEL</TT
1130
> is <TT
1131
CLASS="FILENAME"
1132
>pkgconf/kernel.h</TT
1133
>. The <SPAN
1134
CLASS="PROPERTY"
1135
>define_header</SPAN
1136
>
1137
property can be used to specify an alternative filename. This applies
1138
to all the components and options within a package, so it can only be
1139
used in the body of a <TT
1140
CLASS="LITERAL"
1141
>cdl_package</TT
1142
> command. For example the following
1143
specifies that the configuration header file for the SPARClite HAL
1144
package is <TT
1145
CLASS="FILENAME"
1146
>pkgconf/hal_sparclite.h</TT
1147
>.</P
1148
><TABLE
1149
BORDER="5"
1150
BGCOLOR="#E0E0F0"
1151
WIDTH="70%"
1152
><TR
1153
><TD
1154
><PRE
1155
CLASS="PROGRAMLISTING"
1156
>cdl_package CYGPKG_HAL_SPARCLITE {
1157
    display "SPARClite architecture"
1158
    parent        CYGPKG_HAL
1159
    hardware
1160
    define_header hal_sparclite.h
1161
    &#8230;
1162
}</PRE
1163
></TD
1164
></TR
1165
></TABLE
1166
><DIV
1167
CLASS="NOTE"
1168
><BLOCKQUOTE
1169
CLASS="NOTE"
1170
><P
1171
><B
1172
>Note: </B
1173
>At present the main use for the <SPAN
1174
CLASS="PROPERTY"
1175
>define_header</SPAN
1176
> property is related
1177
to hardware packages, see the <A
1178
HREF="ref.hardware.html"
1179
>reference
1180
pages</A
1181
> for more details.</P
1182
></BLOCKQUOTE
1183
></DIV
1184
><P
1185
>The <SPAN
1186
CLASS="PROPERTY"
1187
>no_define</SPAN
1188
> property is used to suppress the generation of the
1189
default <TT
1190
CLASS="LITERAL"
1191
>#define</TT
1192
>. This can be useful if an option's
1193
consequences are all related to the build process or to constraints,
1194
and the option is never actually checked in any source code. It can
1195
also be useful in conjunction with the <SPAN
1196
CLASS="PROPERTY"
1197
>define</SPAN
1198
>, <SPAN
1199
CLASS="PROPERTY"
1200
>if_define</SPAN
1201
> or
1202
<SPAN
1203
CLASS="PROPERTY"
1204
>define_proc</SPAN
1205
> properties. The <SPAN
1206
CLASS="PROPERTY"
1207
>no_define</SPAN
1208
> property does not take any
1209
arguments. </P
1210
><TABLE
1211
BORDER="5"
1212
BGCOLOR="#E0E0F0"
1213
WIDTH="70%"
1214
><TR
1215
><TD
1216
><PRE
1217
CLASS="PROGRAMLISTING"
1218
>cdl_component CYG_HAL_STARTUP {
1219
    display       "Startup type"
1220
    flavor        data
1221
    legal_values  { "RAM" "ROM" }
1222
    default_value {"RAM"}
1223
    no_define
1224
    define -file system.h CYG_HAL_STARTUP
1225
    &#8230;
1226
}</PRE
1227
></TD
1228
></TR
1229
></TABLE
1230
><P
1231
>This example also illustrates the <SPAN
1232
CLASS="PROPERTY"
1233
>define</SPAN
1234
> property, which can be used
1235
to generate a <TT
1236
CLASS="LITERAL"
1237
>#define</TT
1238
> in addition to the default
1239
one. It takes a single argument, the name of the symbol to be defined.
1240
It also takes options to control the configuration header file in
1241
which the symbol should be defined and the format to be used.</P
1242
><P
1243
>The <SPAN
1244
CLASS="PROPERTY"
1245
>define_format</SPAN
1246
> property can be used to control how the value part
1247
of the default <TT
1248
CLASS="LITERAL"
1249
>#define</TT
1250
> gets formatted. For example
1251
a format string of  <TT
1252
CLASS="LITERAL"
1253
>"0x%04x"</TT
1254
> could be used to
1255
generate a four-digit hexadecimal number. </P
1256
><P
1257
>The <SPAN
1258
CLASS="PROPERTY"
1259
>if_define</SPAN
1260
> property is intended for use primarily to control
1261
assertions, tracing, and similar functionality. It supports a specific
1262
implementation model for these, allowing control at the grain of
1263
packages or even individual source files. The <A
1264
HREF="ref.if-define.html"
1265
>reference pages</A
1266
> provide additional
1267
information.</P
1268
><P
1269
>The <SPAN
1270
CLASS="PROPERTY"
1271
>define_proc</SPAN
1272
> property provides an escape mechanism for those
1273
cases where something special has to happen at configuration header
1274
file generation time. It takes a single argument, a fragment of <SPAN
1275
CLASS="APPLICATION"
1276
>Tcl</SPAN
1277
>
1278
code, which gets executed when the header file is generated. This code
1279
can output arbitrary data to the header file, or perform any other
1280
actions that might be appropriate.</P
1281
></DIV
1282
><DIV
1283
CLASS="SECT2"
1284
><H2
1285
CLASS="SECT2"
1286
><A
1287
NAME="LANGUAGE.PROPERTIES.BUILD">Controlling what gets Built</H2
1288
><P
1289
>There are six properties which affect the build process:
1290
<A
1291
HREF="ref.compile.html"
1292
><SPAN
1293
CLASS="PROPERTY"
1294
>compile</SPAN
1295
></A
1296
>,
1297
<A
1298
HREF="ref.make.html"
1299
><SPAN
1300
CLASS="PROPERTY"
1301
>make</SPAN
1302
></A
1303
>,
1304
<A
1305
HREF="ref.make-object.html"
1306
><SPAN
1307
CLASS="PROPERTY"
1308
>make_object</SPAN
1309
></A
1310
>,
1311
<A
1312
HREF="ref.library.html"
1313
><SPAN
1314
CLASS="PROPERTY"
1315
>library</SPAN
1316
></A
1317
>,
1318
<A
1319
HREF="ref.include-dir.html"
1320
><SPAN
1321
CLASS="PROPERTY"
1322
>include_dir</SPAN
1323
></A
1324
>, and
1325
<A
1326
HREF="ref.include-files.html"
1327
><SPAN
1328
CLASS="PROPERTY"
1329
>include_files</SPAN
1330
></A
1331
>.
1332
The last three apply to a package as a whole, and can only occur in
1333
the body of a <TT
1334
CLASS="LITERAL"
1335
>cdl_package</TT
1336
> command.</P
1337
><P
1338
>Most of the source files that go into a package should simply be
1339
compiled with the appropriate compiler, selected by the target
1340
architecture, and with the appropriate flags, with an additional set
1341
defined by the target hardware and possible modifications on a
1342
per-package basis. The resulting object files will go into the library
1343
<TT
1344
CLASS="FILENAME"
1345
>libtarget.a</TT
1346
>, which can then be linked against
1347
application code. The <SPAN
1348
CLASS="PROPERTY"
1349
>compile</SPAN
1350
> property is used to list these source
1351
files: </P
1352
><TABLE
1353
BORDER="5"
1354
BGCOLOR="#E0E0F0"
1355
WIDTH="70%"
1356
><TR
1357
><TD
1358
><PRE
1359
CLASS="PROGRAMLISTING"
1360
>cdl_package CYGPKG_ERROR {
1361
    display       "Common error code support"
1362
    compile       strerror.cxx
1363
    include_dir   cyg/error
1364
    &#8230;
1365
}</PRE
1366
></TD
1367
></TR
1368
></TABLE
1369
><P
1370
>The arguments to the <SPAN
1371
CLASS="PROPERTY"
1372
>compile</SPAN
1373
> property should be one or more source
1374
files. Typically most of the sources will be needed for the package as
1375
a whole, and hence they will be listed in one or more <SPAN
1376
CLASS="PROPERTY"
1377
>compile</SPAN
1378
>
1379
properties in the body of the <TT
1380
CLASS="LITERAL"
1381
>cdl_package</TT
1382
>. Some sources may be
1383
specific to particular configuration options, in other words there is
1384
no point in compiling them unless that option is enabled, in which
1385
case the sources should be listed in a <SPAN
1386
CLASS="PROPERTY"
1387
>compile</SPAN
1388
> property in the
1389
corresponding <TT
1390
CLASS="LITERAL"
1391
>cdl_option</TT
1392
>, <TT
1393
CLASS="LITERAL"
1394
>cdl_component</TT
1395
> or <TT
1396
CLASS="LITERAL"
1397
>cdl_interface</TT
1398
> body.</P
1399
><P
1400
>Some packages may have more complicated build requirements, for
1401
example they may involve a special target such as a linker script
1402
which should not end up in the usual library, or they may involve
1403
special build steps for generating an object file. The <SPAN
1404
CLASS="PROPERTY"
1405
>make</SPAN
1406
> and
1407
<SPAN
1408
CLASS="PROPERTY"
1409
>make_object</SPAN
1410
> properties provide support for such requirements, for
1411
example:</P
1412
><TABLE
1413
BORDER="5"
1414
BGCOLOR="#E0E0F0"
1415
WIDTH="70%"
1416
><TR
1417
><TD
1418
><PRE
1419
CLASS="PROGRAMLISTING"
1420
>cdl_package CYGPKG_HAL_MN10300_AM33 {
1421
    display       "MN10300 AM33 variant"
1422
    &#8230;
1423
    make {
1424
        &lt;PREFIX&gt;/lib/target.ld: &lt;PACKAGE&gt;/src/mn10300_am33.ld
1425
        $(CC) -E -P -Wp,-MD,target.tmp -DEXTRAS=1 -xc $(INCLUDE_PATH) \
1426
            $(CFLAGS) -o $@ $&lt;
1427
        @echo $@ ": \\" &gt; $(notdir $@).deps
1428
        @tail +2 target.tmp &gt;&gt; $(notdir $@).deps
1429
        @echo &gt;&gt; $(notdir $@).deps
1430
        @rm target.tmp
1431
    }
1432
}</PRE
1433
></TD
1434
></TR
1435
></TABLE
1436
><P
1437
>For full details of custom build steps and the build process
1438
generally, see <A
1439
HREF="build.html"
1440
>Chapter 4</A
1441
>.</P
1442
><P
1443
>By default all object files go into the library
1444
<TT
1445
CLASS="FILENAME"
1446
>libtarget.a</TT
1447
>. It is possible to override this at
1448
the package level using the <SPAN
1449
CLASS="PROPERTY"
1450
>library</SPAN
1451
> property, but this should be
1452
avoided since it complicates application development: instead of just
1453
linking with a single library for all <SPAN
1454
CLASS="APPLICATION"
1455
>eCos</SPAN
1456
>-related packages, it
1457
suddenly becomes necessary to link with several libraries.</P
1458
><P
1459
>The <SPAN
1460
CLASS="PROPERTY"
1461
>include_dir</SPAN
1462
> and <SPAN
1463
CLASS="PROPERTY"
1464
>include_files</SPAN
1465
> properties relate to a package's
1466
exported header files. By default a package's header files will be
1467
exported to the <TT
1468
CLASS="FILENAME"
1469
>install/include</TT
1470
>
1471
directory. This is the desired behavior for some packages like the C
1472
library, since headers like <TT
1473
CLASS="FILENAME"
1474
>stdio.h</TT
1475
> should exist at that level.
1476
However if all header files were to end up in that directory then
1477
there would be a significant risk of a name clash. Instead it is
1478
better for packages to specify some sub-directory for their exported
1479
header files, for example:</P
1480
><TABLE
1481
BORDER="5"
1482
BGCOLOR="#E0E0F0"
1483
WIDTH="70%"
1484
><TR
1485
><TD
1486
><PRE
1487
CLASS="PROGRAMLISTING"
1488
>cdl_package CYGPKG_INFRA {
1489
    display       "Infrastructure"
1490
    include_dir   cyg/infra
1491
    &#8230;
1492
}</PRE
1493
></TD
1494
></TR
1495
></TABLE
1496
><P
1497
>The various header files exported by the infrastructure, for example
1498
<TT
1499
CLASS="FILENAME"
1500
>cyg_ass.h</TT
1501
> and <TT
1502
CLASS="FILENAME"
1503
>cyg_trac.h</TT
1504
> will now end up in the
1505
<TT
1506
CLASS="FILENAME"
1507
>install/include/cyg/infra</TT
1508
>
1509
sub-directory, where a name clash is very unlikely.</P
1510
><P
1511
>For packages which follow the <A
1512
HREF="package.html#PACKAGE.HIERARCHY"
1513
>directory layout conventions</A
1514
> the
1515
component framework will assume that the package's
1516
<TT
1517
CLASS="FILENAME"
1518
>include</TT
1519
> sub-directory contains
1520
all exported header files. If this is not the case, for example
1521
because the package is sufficiently simple that the layout convention
1522
is inappropriate, then the exported header files can be listed
1523
explicitly in an <SPAN
1524
CLASS="PROPERTY"
1525
>include_files</SPAN
1526
> property.</P
1527
></DIV
1528
><DIV
1529
CLASS="SECT2"
1530
><H2
1531
CLASS="SECT2"
1532
><A
1533
NAME="LANGUAGE.PROPERTIES.MISCELLANEOUS">Miscellaneous Properties</H2
1534
><P
1535
>The <A
1536
HREF="ref.hardware.html"
1537
><SPAN
1538
CLASS="PROPERTY"
1539
>hardware</SPAN
1540
></A
1541
> property is
1542
only relevant to packages. Some packages such as device drivers and
1543
HAL packages are hardware-specific, and generally it makes no sense to
1544
add such packages to a configuration unless the corresponding hardware
1545
is present on your target system. Typically hardware package selection
1546
happens automatically when you select your target. The <SPAN
1547
CLASS="PROPERTY"
1548
>hardware</SPAN
1549
>
1550
property should be used to identify a hardware-specific package, and
1551
does not take any arguments.</P
1552
><TABLE
1553
BORDER="5"
1554
BGCOLOR="#E0E0F0"
1555
WIDTH="70%"
1556
><TR
1557
><TD
1558
><PRE
1559
CLASS="PROGRAMLISTING"
1560
>cdl_package CYGPKG_HAL_MIPS {
1561
    display "MIPS architecture"
1562
    parent        CYGPKG_HAL
1563
    hardware
1564
    include_dir   cyg/hal
1565
    define_header hal_mips.h
1566
    &#8230;
1567
}</PRE
1568
></TD
1569
></TR
1570
></TABLE
1571
><P
1572
>At present the <SPAN
1573
CLASS="PROPERTY"
1574
>hardware</SPAN
1575
> property is largely ignored by the component
1576
framework. This may change in future releases.</P
1577
></DIV
1578
></DIV
1579
><DIV
1580
CLASS="NAVFOOTER"
1581
><HR
1582
ALIGN="LEFT"
1583
WIDTH="100%"><TABLE
1584
SUMMARY="Footer navigation table"
1585
WIDTH="100%"
1586
BORDER="0"
1587
CELLPADDING="0"
1588
CELLSPACING="0"
1589
><TR
1590
><TD
1591
WIDTH="33%"
1592
ALIGN="left"
1593
VALIGN="top"
1594
><A
1595
HREF="language.commands.html"
1596
ACCESSKEY="P"
1597
>Prev</A
1598
></TD
1599
><TD
1600
WIDTH="34%"
1601
ALIGN="center"
1602
VALIGN="top"
1603
><A
1604
HREF="cdl-guide.html"
1605
ACCESSKEY="H"
1606
>Home</A
1607
></TD
1608
><TD
1609
WIDTH="33%"
1610
ALIGN="right"
1611
VALIGN="top"
1612
><A
1613
HREF="language.naming.html"
1614
ACCESSKEY="N"
1615
>Next</A
1616
></TD
1617
></TR
1618
><TR
1619
><TD
1620
WIDTH="33%"
1621
ALIGN="left"
1622
VALIGN="top"
1623
>CDL Commands</TD
1624
><TD
1625
WIDTH="34%"
1626
ALIGN="center"
1627
VALIGN="top"
1628
><A
1629
HREF="language.html"
1630
ACCESSKEY="U"
1631
>Up</A
1632
></TD
1633
><TD
1634
WIDTH="33%"
1635
ALIGN="right"
1636
VALIGN="top"
1637
>Option Naming Convention</TD
1638
></TR
1639
></TABLE
1640
></DIV
1641
></BODY
1642
></HTML
1643
>

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.