This commit is contained in:
ceriel 1987-02-26 15:44:00 +00:00
parent 0e0071d790
commit a7329c38e3

View file

@ -28,8 +28,8 @@ starting with the next transformation in the table for another
transformation that has as input suffix the output suffix of transformation that has as input suffix the output suffix of
the previous transformation. the previous transformation.
A few special transformations are recognized, among them is the A few special transformations are recognized, among them is the
combiner. combiner, which is
A program combining several files into one. a program combining several files into one.
When no stop suffix was specified (flag \fB\-c.suffix\fP) \fIack\fP When no stop suffix was specified (flag \fB\-c.suffix\fP) \fIack\fP
stops after executing the combiner with as arguments the \- stops after executing the combiner with as arguments the \-
possibly transformed \- input files and libraries. possibly transformed \- input files and libraries.
@ -74,7 +74,8 @@ This descriptions are simply files read in at compile time.
At the moment of writing this document, the descriptions At the moment of writing this document, the descriptions
included are: pdp, fe, i86, m68k2, vax2 and int. included are: pdp, fe, i86, m68k2, vax2 and int.
The name of a description is first searched for internally, The name of a description is first searched for internally,
then in the directory lib/ack and finally in the current then in lib/descr/\fIname\fP, then in
lib/\fIname\fP/descr, band finally in the current
directory of the user. directory of the user.
.NH .NH
Using the description file Using the description file
@ -204,14 +205,13 @@ The possible keywords are:
.br .br
followed by a sequence of suffices. followed by a sequence of suffices.
Each file with one of these suffices is allowed as input file. Each file with one of these suffices is allowed as input file.
Preprocessor transformations, those with the \fBP\fP property Preprocessor transformations do not need the \fIfrom\fP
after the \fIprop\fP keyword, do not need the \fIfrom\fP
keyword. All other transformations do. keyword. All other transformations do.
.nr PD 0 .nr PD 0
.IP \fIto\fP .IP \fIto\fP
.br .br
followed by the suffix of the output file name or in the case of a followed by the suffix of the output file name or in the case of a
linker \-~indicated by C option after the \fIprop\fP keyword~\- linker
the output file name. the output file name.
.IP \fIprogram\fP .IP \fIprogram\fP
.br .br
@ -264,20 +264,32 @@ The variables assigned to by \fImapflags\fP will probably be
used here. used here.
The flags not recognized by \fIack\fP or any of the transformations The flags not recognized by \fIack\fP or any of the transformations
are passed to the linker and inserted before all other arguments. are passed to the linker and inserted before all other arguments.
.IP \fIprop\fP .IP \fIstdin\fP
.br .br
This \-~optional~\- keyword is followed by a sequence of options, This keyword indicates that the transformation reads from standard input.
each option is indicated by one character .IP \fIstdout\fP
signifying a special property of the transformation. .br
This keyword indicates that the transformation writes on standard output.
.IP \fIoptimizer\fP
.br
This keyword indicates that this transformation is an optimizer.
.IP \fIlinker\fP
.br
This keyword indicates that this transformation is the linker.
.IP \fIcombiner\fP
.br
This keyword indicates that this transformation is a combiner. A combiner
is a program combining several files into one, but is not a linker.
An example of a combiner is the global optimizer.
.IP \fIprep\fP
.br
This \-~optional~\- keyword is followed an option indicating its relation
to the preprocessor.
The possible options are: The possible options are:
.DS X .DS X
< the input file will be read from standard input always the input files must be preprocessed
> the output file will be written on standard output cond the input files must be preprocessed when starting with #
p the input files must be preprocessed is this transformation is the preprocessor
m the input files must be preprocessed when starting with #
O this transformation is an optimizer and may be skipped
P this transformation is the preprocessor
C this transformation is the linker
.DE .DE
.IP \fIrts\fP .IP \fIrts\fP
.br .br
@ -308,22 +320,19 @@ transformations.
Amsterdam Compiler Kit. Amsterdam Compiler Kit.
The variable SOURCE is set to the name of the argument that is currently The variable SOURCE is set to the name of the argument that is currently
being massaged, this is usefull for debugging. being massaged, this is usefull for debugging.
The variable SUFFIX is set to the suffix of the argument that is
currently being massaged.
.br .br
The variable M indicates the The variable M indicates the
directory in mach/{M}/lib/tail_..... and NAME is the string to directory in lib/{M}/tail_..... and NAME is the string to
be defined by the preprocessor with \-D{NAME}. be defined by the preprocessor with \-D{NAME}.
The definitions of {w}, {s}, {l}, {d}, {f} and {p} indicate The definitions of {w}, {s}, {l}, {d}, {f} and {p} indicate
EM_WSIZE, EM_SSIZE, EM_LSIZE, EM_DSIZE, EM_FSIZE and EM_PSIZE EM_WSIZE, EM_SSIZE, EM_LSIZE, EM_DSIZE, EM_FSIZE and EM_PSIZE
respectively. respectively.
.br .br
The variable INCLUDES is used as the last argument to \fIcpp\fP, The variable INCLUDES is used as the last argument to \fIcpp\fP.
it is currently used to add the directory {EM}/include to It is used to add directories to
the list of directories containing #include files. the list of directories containing #include files.
{EM}/include contains a few files used by the library routines
for part III from the
.UX
manual.
These routines are included in the kit.
.PP .PP
The variables HEAD, TAIL and RTS are set by \fIack\fP and used The variables HEAD, TAIL and RTS are set by \fIack\fP and used
to compose the arguments for the linker. to compose the arguments for the linker.
@ -346,7 +355,8 @@ name cpp # the C-preprocessor
# then the include dir's for this machine # then the include dir's for this machine
# then the NAME and size valeus finally # then the NAME and size valeus finally
# followed by the input file name # followed by the input file name
prop >P # Output on stdout, is preprocessor stdout # Output on stdout
prep is # Is preprocessor
end end
name cem # the C-compiler proper name cem # the C-compiler proper
from .c # used for files with suffix .c from .c # used for files with suffix .c
@ -357,7 +367,9 @@ name cem # the C-compiler proper
args \-Vw{w}i{w}p{p}f{f}s{s}l{l}d{d} {CEM_F?} args \-Vw{w}i{w}p{p}f{f}s{s}l{l}d{d} {CEM_F?}
# the arguments are the object sizes in # the arguments are the object sizes in
# the \-V... flag and possibly \-l and \-Xp # the \-V... flag and possibly \-l and \-Xp
prop <>p # input on stdin, output on stdout, use cpp stdin # input from stdin
stdout # output on stdout
prep always # use cpp
rts .c # use the C run-time system rts .c # use the C run-time system
need .c # use the C libraries need .c # use the C libraries
end end
@ -366,7 +378,7 @@ name decode # make human readable files from compact code
to .e # produce .e files to .e # produce .e files
program {EM}/lib/em_decode # pathname of loadfile program {EM}/lib/em_decode # pathname of loadfile
args < # the input file name is the only argument args < # the input file name is the only argument
prop > # the output comes on stdout stdout # the output comes on stdout
end end
.DE .DE
@ -379,11 +391,7 @@ var p=2 # pointersize 2
var s=2 # short size 2 var s=2 # short size 2
var l=4 # long size 4 var l=4 # long size 4
var f=4 # float size 4 var f=4 # float size 4
var d=8 # double size 8 var d=8 # douÚXYÂHÈ\<5C>Ùˆš[H˜e startoff
var M=int # Unused in this example
var NAME=int22 # for cpp (NAME=int results in #define int 1)
var LIB=mach/int/lib/tail_ # part of file name for libraries
var RT=mach/int/lib/head_ # part of file name for run-time startoff
var SIZE_FLAG=\-sm # default internal table size flag var SIZE_FLAG=\-sm # default internal table size flag
var INCLUDES=\-I{EM}/include # use {EM}/include for #include files var INCLUDES=\-I{EM}/include # use {EM}/include for #include files
name asld # Assembler/loader name asld # Assembler/loader
@ -404,7 +412,7 @@ name asld # Assembler/loader
# the next line contains the choice for head_cc or head_pc # the next line contains the choice for head_cc or head_pc
# and the specification of in- and output. # and the specification of in- and output.
# the last three args lines choose libraries # the last three args lines choose libraries
prop C # This is the final stage linker
end end
.DE .DE