This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Missed comment removal from NeXT removal
[metaconfig.git] / README_U
1 Line    Description
2 ======= =======================================================================
3
4 ?MAKE:  The ?MAKE: line records dependencies
5
6     ?MAKE:symbol list: dependency list [+optional]
7
8         This is the first dependency line. The first "symbol list"
9         should list all the symbols built by this unit (i.e. whose
10         value is computed by the shell section of the unit). Symbols
11         should be space separated. If a defined symbol is for internal
12         use only and should not appear in the generated "config.sh"
13         file, then it should be preceded by a '+' (not to be confused
14         with optional dependencies defined hereafter).
15         The second part of the list (after the middle ':') is the unit
16         dependency.  It should list all the needed special units, as
17         well as all the symbols used by the shell implementation. If
18         a symbol is nedded but its configuration value is not critical,
19         it can be preceded by a '+', in which case it is called a
20         conditional dependency: its corresponding unit will be loaded
21         if, and only if, that symbol is otherwise really wanted;
22         otherwise the default value will be used.
23
24     ?MAKE: <tab> command
25
26         There can be one or more command lines following the initial
27         dependency lines.  Those commands will be executed when the
28         unit is wanted to load them into "Configure".
29         Note that the leading <tab> character is required before the
30         "command".
31
32 ?INIT:  Initializations printed verbatim
33
34 ?LINT:  Hints for metalint
35
36         set             Listed variables are set
37             ?LINT:set d_getservprotos
38         describe        Listed shell variables are described
39             ?LINT:describe awk ar bash bison byacc cat chgrp chmod chown
40         create          Listed created files in regular units
41             ?LINT:create mips
42         known           Listed C variables are described
43             ?LINT:known StGiFy
44         change          Shell variable ok to be changed
45             ?LINT:change CONFIG_H
46         extern          Variables known to be externally defined
47             ?LINT:extern CONFIG_H
48         usefile         Files marked as being used
49             ?LINT:usefile foobar
50         use             Variables declared as used by unit
51             ?LINT:use PERL_CONFIG_SH
52         define          Listed variables are defined
53             ?LINT:define fieldn
54         empty           Empty unit file
55             ?LINT:empty
56         unclosed        Unclosed here-documents
57             ?LINT:unclosed EOT
58         nothere         Not a here-document name
59         nocomment       OK if leading unit ': comment' missing
60             ?LINT:nocomment
61
62 ?RCS:   RCS comments are ignored
63
64         To be used for RCS comments, at the top of the unit.
65
66 ?C:     C symbols
67
68         Comments for #defines
69
70 ?D:     Default value for conditional symbols
71
72         ?D:osname=''
73
74 ?E:     Example of usage
75
76 ?F:     Produced files
77
78         Defines what files are created by this module
79
80         Files produced in the UU directory and which are identified by the
81         convention ./filename. Files !filename are not produced, i.e. they are
82         temporary or externally provided.
83
84         ?F:cppstdin !testcpp.out !testcpp.c
85
86 ?H:     Process the config.h lines
87
88         Defines the part to be included in the generated config_h.SH
89
90         To get #ifdefs in config_h.SH, you'll need strange constructs like
91
92         ?H:?%<:@if USE_SITECUSTOMIZE
93         ?H:?%<:#ifndef USE_SITECUSTOMIZE
94         ?H:?%<:#$usesitecustomize     USE_SITECUSTOMIZE               /**/
95         ?H:?%<:#endif
96         ?H:?%<:@end
97
98 ?I:     Added includes
99
100 ?L:     Added libraries
101
102 ?M:     Process the confmagic.h lines
103
104 ?O:     Unit obsolescence
105
106 ?P:     Location of PD implementation file
107
108 ?S:     Shell variables
109
110     ?S:symbol_name (obsolete symbol list)]:
111
112         Introduces a shell symbol. This first line names the symbol,
113         optionally followed by a list enclosed between parenthesis and
114         giving the obsolete equivalent. Those obsolete symbols will be
115         remapped to the new "symbol_name" if the -o option is given to
116         "metaconfig".
117
118     ?S: <tab> any text, for "Porting/Glossary"
119
120         Basically a comment describing the shell symbol, which will be
121         extracted by "makegloss" into the Glossary file.
122
123     ?S:.
124
125         Closes the shell symbol comment.
126
127 ?T:     Shell temporaries used
128
129         What variables are used as temporary variables
130
131 ?V:     Visible symbols like 'rp', 'dflt'
132
133         ?V:fieldn
134
135 ?W:     Wanted value for interpreter
136
137 ?X:     User comment is ignored
138
139         General purpose comments. May appear anywhere in the unit but must be
140         left justfied. For RCS comments, please use the ?RCS: comment form.
141
142 ?Y:     User-defined layout preference
143
144         Declare a layout directive for this unit. That directive may be one
145         of the strings "top", "default" or "bottom" (case does not matter,
146         recommended style is to spell them out uppercased). If omitted,
147         "default" is assumed.
148
149         This directive is only required if you wish to force a unit at the
150         top or the bottom of the generated "Configure" script, as unit
151         dependencies permit it. Important questions may thus be forced
152         at the beginning. Within the same layout class, units are sorted
153         alphabetically with two special cases for d_* and i_* units, forced
154         respectively at the top and bottom of their classes (but these
155         should belong to the default class).
156
157         It you force at the top a unit whose dependencies require all the
158         other unit to precede it, you achieve nothing interesting. Therefore,
159         that directive should really be used to increase the priority of
160         some interactive units that do not depend on many other user-visible
161         symbols, like path-related questions.
162
163         ?Y:TOP
164
165 lines can be made conditional (see Config_sh.U)
166
167 @if d_portable
168 :
169 :
170 @end