makestrs - makes string table C source and header(s)
makestrs [-f source] [-abioptions ...]
The makestrs command creates string table C source files and headers. If -f source is not
specified makestrs will read from stdin. The C source file is always written to stdout.
makestrs creates one or more C header files as specified in the source file. The follow-
ing options may be specified: -sparcabi, -intelabi, -functionabi, -arrayperabi, and
-sparcabi is used on SPARC platforms conforming to the SPARC Compliance Definition, i.e.
-intelabi is used on Intel platforms conforming to the System V Application Binary Inter-
face, i.e. SVR4.
-earlyR6abi may be used in addition to -intelabi for situations where the vendor wishes to
maintain binary compatiblity between X11R6 public-patch 11 (and earlier) and X11R6 public-
patch 12 (and later).
-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.
-arrayperabi results in a separate array for each string. This is the default behavior if
makestrs was compiled with -DARRAYPERSTR (it almost never is).
-defaultabi forces the generation of the "normal" string table even if makestrs was com-
piled with -DARRAYPERSTR. Since makestrs is almost never compiled with -DARRAYPERSTR this
is the default behavior if no abioptions are specified.
The syntax for string-list file is (items in square brackets are optional):
In words you may have one or more #file directives. Each #file may have one or more #table
The #prefix directive determines the string that makestr will prefix to each definition.
The #feature directive determines the string that makestr will use for the feature-test
macro, e.g. X[TM]STRINGDEFINES.
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"
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).
The #ctmpl directive determines the name of the file used as a template for the C source
file that is generated
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.
The #htmpl directive determines the name of the file used as a template for the C header
file that is generated.
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 ta-
ble for that file. To conform to the Intel ABI separate tables will be generated with the
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 <<<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.
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.
SPARC Compliance Definition 2.2., SPARC International Inc., 535 Middlefield Road, Suite
210, Menlo Park, CA 94025
System V Application Binary Interface, Third Edition, ISBN 0-13-100439-5 UNIX Press, PTR
Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs, NJ 07632
System V Application Binary Interface, Third Edition, Intel386 Architecture Processor Sup-
plement ISBN 0-13-104670-5 UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood
Cliffs, NJ 07632
System V Application Binary Interface, Third Edition, SPARC Architecture Processor Supple-
ment ISBN 0-13-104696-9 UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood
Cliffs, NJ 07632
X Version 11 Release 6.6 MAKESTRS(1)