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