summaryrefslogtreecommitdiff
path: root/util/makestrs.man
blob: 83027fdeabe137a81d3ac9743bf80ab4738ecd75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
.\" Copyright (c) 1993, 1994, 1998 The Open Group
.\"
.\" Permission to use, copy, modify, distribute, and sell this software and its
.\" documentation for any purpose is hereby granted without fee, provided that
.\" the above copyright notice appear in all copies and that both that
.\" copyright notice and this permission notice appear in supporting
.\" documentation.
.\"
.\" The above copyright notice and this permission notice shall be included in
.\" all copies or substantial portions of the Software.
.\"
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
.\" THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
.\" WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
.\" OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
.\" SOFTWARE.
.\"
.\" Except as contained in this notice, the name of The Open Group shall not
.\" be used in advertising or otherwise to promote the sale, use or other
.\" dealing in this Software without prior written authorization from The
.\" Open Group.
.\"
.TH MAKESTRS 1 __xorgversion__
.SH NAME
makestrs \- makes string table C source and header(s)
.SH SYNOPSIS
.B makestrs [-f source] [-i includedir] [-abioptions ...]
.SH DESCRIPTION
The
.I makestrs
command creates string table C source files and headers.
If
.I -f
.I source
is not specified
.I makestrs
will read from
.IR stdin .
The C source file is always written to
.IR stdout .
.I makestrs
creates one or more C header files as specified in the source file.
The following options may be specified:
.IR -sparcabi ,
.IR -intelabi ,
.IR -functionabi ,
.IR -arrayperabi ,
and
.I -defaultabi.
.LP
.I -sparcabi
is used on SPARC platforms conforming to the SPARC
Compliance Definition, i.e. SVR4/Solaris.
.LP
.I -intelabi
is used on Intel platforms conforming to the System
V Application Binary Interface, i.e. SVR4.
.LP
.I -earlyR6abi
may be used in addition to
.I -intelabi
for situations
where the vendor wishes to maintain binary compatibility between
X11R6 public-patch 11 (and earlier) and X11R6 public-patch 12 (and later).
.LP
.I -functionabi
generates a functional abi to the string table. This
mechanism imposes a severe performance penalty and it's recommended
that you not use it.
.LP
.I -arrayperabi
results in a separate array for each string. This is
the default behavior if makestrs was compiled with -DARRAYPERSTR
(it almost never is).
.LP
.I -defaultabi
forces the generation of the "normal" string table even
if makestrs was compiled with -DARRAYPERSTR. Since makestrs is almost
never compiled with -DARRAYPERSTR this is the default behavior if
no abioptions are specified.
.LP
.I -i includedir
forces the reading of templates from the includedir instead of the local
directory. This is useful to have separate source and build directories.
.SH SYNTAX
The syntax for string-list file is (items in square brackets are optional):
.RS 4
\&#prefix <text>
.RE
.RS 4
\&#feature <text>
.RE
.RS 4
\&#externref <text>
.RE
.RS 4
\&#externdef [<text>]
.RE
.RS 4
[#ctempl <text>]
.RE
.LP
.RS 4
\&#file <filename>
.RE
.RS 4
\&#table <tablename>
.RE
.RS 4
[#htempl]
.RE
.RS 4
<text>
.RE
.RS 4
\&...
.RE
.RS 4
<text>
.RE
.RS 4
[#table <tablename>
.RE
.RS 4
<text>
.RE
.RS 4
\&...
.RE
.RS 4
<text>
.RE
.RS 4
\& ...
.RE
.RS 4
\&#table <tablename>
.RE
.RS 4
\& ...]
.RE
.RS 4
[#file <filename>
.RE
.RS 4
\& ...]
.RE
.LP
In words you may have one or more #file directives. Each #file may have
one or more #table directives.
.LP
The #prefix directive determines the string that makestr will prefix
to each definition.
.LP
The #feature directive determines the string that makestr will use
for the feature-test macro, e.g. X[TM]STRINGDEFINES.
.LP
The #externref directive determines the string that makestr will use
for the extern clause, typically this will be "extern" but Motif wants
it to be "externalref"
.LP
The #externdef directive determines the string that makestr will use
for the declaration, typically this will be the null string (note that
makestrs requires a trailing space in this case, i.e. "#externdef "),
and Motif will use "externaldef(_xmstrings).
.LP
The #ctmpl directive determines the name of the file used as a template
for the C source file that is generated
.LP
Each #file <filename> directive will result in a corresponding header
file by that name containing the appropriate definitions as specified
by command line options. A single C source file containing the
declarations for the definitions in all the headers will be printed
to stdout.
.LP
The #htmpl directive determines the name of the file used as a template
for the C header file that is generated.
.LP
Each #table <tablename> directive will be processed in accordance with
the ABI. On most platforms all tables will be catenated into a single
table with the name of the first table for that file. To conform to
the Intel ABI separate tables will be generated with the names indicated.
.LP
The template files specified by the #ctmpl and #htmpl directives
are processed by copying line for line from the template file to
the appropriate output file. The line containing the string
.I <<<STRING_TABLE_GOES_HERE>>>
is not copied to the output file. The appropriate data is then
copied to the output file and then the remainder of the template
file is copied to the output file.
.SH BUGS
makestrs is not very forgiving of syntax errors. Sometimes you need
a trailing space after # directives, other times they will mess you
up. No warning messages are emitted.
.SH SEE ALSO
SPARC Compliance Definition 2.2., SPARC International Inc.,
535 Middlefield Road, Suite 210, Menlo Park, CA  94025
.LP
System V Application Binary Interface, Third Edition,
ISBN 0-13-100439-5
UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs,
NJ  07632
.LP
System V Application Binary Interface, Third Edition, Intel386
Architecture Processor Supplement
ISBN 0-13-104670-5
UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs,
NJ  07632
.LP
System V Application Binary Interface, Third Edition, SPARC
Architecture Processor Supplement
ISBN 0-13-104696-9
UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs,
NJ  07632