7 |
7u83 |
1 |
TENDRA 5.0.0 RELEASE INFORMATION
|
2 |
7u83 |
2 |
================================
|
|
|
3 |
|
7 |
7u83 |
4 |
REVISION INFORMATION
|
|
|
5 |
--------------------
|
|
|
6 |
$Id$
|
2 |
7u83 |
7 |
|
|
|
8 |
COPYRIGHT INFORMATION
|
|
|
9 |
---------------------
|
|
|
10 |
|
7 |
7u83 |
11 |
Please read the file COPYRIGHT for the copyright notice.
|
2 |
7u83 |
12 |
|
|
|
13 |
|
|
|
14 |
ORGANISATION OF RELEASE
|
|
|
15 |
-----------------------
|
|
|
16 |
|
|
|
17 |
The src subdirectory, which contains the source code, is organised into
|
|
|
18 |
the following top-level directories:
|
|
|
19 |
|
|
|
20 |
build which contains various information used during
|
|
|
21 |
installation;
|
|
|
22 |
|
|
|
23 |
installers which contains the compiler back-ends, which
|
|
|
24 |
translate the compiler intermediate form, TDF,
|
|
|
25 |
to the appropriate machine instructions;
|
|
|
26 |
|
|
|
27 |
lib which contains everything not included in the
|
|
|
28 |
other directories;
|
|
|
29 |
|
|
|
30 |
producers which contains the compiler front-ends, which
|
|
|
31 |
translate C and C++ to the compiler intermediate
|
|
|
32 |
form, TDF;
|
|
|
33 |
|
|
|
34 |
tools which contains various tools for manipulating,
|
|
|
35 |
viewing and generating TDF;
|
|
|
36 |
|
|
|
37 |
utilities which contains various compiler generator
|
|
|
38 |
utilities used in the development of the TenDRA
|
|
|
39 |
software.
|
|
|
40 |
|
|
|
41 |
The installers directory is split into a common section, containing code
|
|
|
42 |
which is used by all the back ends, plus a directory for each of the
|
|
|
43 |
target CPUs:
|
|
|
44 |
|
|
|
45 |
680x0 Motorola 68020, 68030 and 68040,
|
|
|
46 |
80x86 Intel i386, i486 and Pentium,
|
|
|
47 |
alpha DEC Alpha,
|
7 |
7u83 |
48 |
amd64 AMD64,
|
2 |
7u83 |
49 |
hppa HP Precision Architecture,
|
|
|
50 |
mips SGI/DEC MIPS,
|
|
|
51 |
power POWER,
|
|
|
52 |
ppc601 POWER PC,
|
|
|
53 |
sparc SPARC.
|
|
|
54 |
|
|
|
55 |
Each CPU directory is also divided into a common section, plus a directory
|
|
|
56 |
for each of the target operating systems:
|
|
|
57 |
|
|
|
58 |
680x0/sunos 680x0 on SunOS 4,
|
|
|
59 |
80x86/cygwin32 Intel on Cygwin32,
|
7 |
7u83 |
60 |
80x86/dragonfly Intel on DragonFly,
|
2 |
7u83 |
61 |
80x86/freebsd Intel on FreeBSD,
|
|
|
62 |
80x86/linux Intel on Linux,
|
7 |
7u83 |
63 |
80x86/minix Intel on Minix,
|
|
|
64 |
80x86/netbsd Intel on NetBSD,
|
|
|
65 |
80x86/openbsd Intel on OpenBSD,
|
2 |
7u83 |
66 |
80x86/sco Intel on SCO,
|
|
|
67 |
80x86/solaris Intel on Solaris 2,
|
|
|
68 |
80x86/svr4.2 Intel on Unixware,
|
|
|
69 |
alpha/osf1 Alpha on OSF/1,
|
7 |
7u83 |
70 |
amd64/dragonfly AMD64 on DragonFly,
|
|
|
71 |
amd64/freebsd AMD64 on FreeBSD,
|
|
|
72 |
amd64/linux AMD64 on Linux,
|
|
|
73 |
amd64/netbsd AMD64 on NetBSD,
|
|
|
74 |
amd64/openbsd AMD64 on OpenBSD,
|
2 |
7u83 |
75 |
hppa/hpux HP-PA on HP-UX,
|
|
|
76 |
mips/irix MIPS on Irix,
|
|
|
77 |
mips/ultrix MIPS on Ultrix,
|
|
|
78 |
power/aix POWER on AIX,
|
|
|
79 |
ppc601/aix POWER PC on AIX,
|
|
|
80 |
sparc/solaris SPARC on Solaris 2,
|
|
|
81 |
sparc/sunos SPARC on SunOS 4.
|
|
|
82 |
|
|
|
83 |
The common installer directory is also subdivided, for convenience, into
|
|
|
84 |
a number of different subdirectories:
|
|
|
85 |
|
|
|
86 |
construct which contains the main routines for transforming
|
|
|
87 |
and optimising the internal representation;
|
|
|
88 |
|
|
|
89 |
diag which contains routines for reading and processing
|
|
|
90 |
diagnostic information contained within the TDF;
|
|
|
91 |
|
|
|
92 |
dwarf which contains routines for writing out diagnostic
|
|
|
93 |
information as DWARF directives;
|
|
|
94 |
|
|
|
95 |
dwarf2 which contains routines for writing out diagnostic
|
|
|
96 |
information as DWARF 2 directives;
|
|
|
97 |
|
|
|
98 |
linkinfo which contains routines for reading linkage
|
|
|
99 |
information contained within the TDF;
|
|
|
100 |
|
|
|
101 |
reader which contains the main routine for reading the
|
|
|
102 |
input TDF and building up the internal representation;
|
|
|
103 |
|
|
|
104 |
templ which contains template files used to generate
|
|
|
105 |
the TDF reading routines.
|
|
|
106 |
|
|
|
107 |
The producers subdirectory is divided into a common directory, containing
|
|
|
108 |
code shared by both the C and C++ producers, plus directories c and cpp,
|
|
|
109 |
containing the language specific components. The differences between
|
|
|
110 |
the languages are driven from the parser, which is found in the syntax
|
|
|
111 |
subdirectory of c and cpp. C merely uses a subset of the routines
|
|
|
112 |
available for the C++ producer, with a number of run-time or compile-time
|
|
|
113 |
flags to control the differences between the languages.
|
|
|
114 |
|
|
|
115 |
The common producer directory is divided, for convenience into a number
|
|
|
116 |
of subdirectories:
|
|
|
117 |
|
|
|
118 |
construct which contains the main routines for building up
|
|
|
119 |
and checking the internal representation;
|
|
|
120 |
|
|
|
121 |
obj_c which contains macros describing the internal
|
|
|
122 |
representation;
|
|
|
123 |
|
|
|
124 |
obj_templ which contains various template files used in
|
|
|
125 |
automatic code generation;
|
|
|
126 |
|
|
|
127 |
obj_tok which contains TenDRA tokens describing the
|
|
|
128 |
internal representation;
|
|
|
129 |
|
|
|
130 |
output which contains the routines of writing the
|
|
|
131 |
internal representation to disk as TDF;
|
|
|
132 |
|
|
|
133 |
parse which contains routines for lexical analysis
|
|
|
134 |
and preprocessing;
|
|
|
135 |
|
|
|
136 |
utility which contains routines for error reporting,
|
|
|
137 |
memory allocation etc.
|
|
|
138 |
|
|
|
139 |
The tools directory contains the source for a number of different tools:
|
|
|
140 |
|
|
|
141 |
disp translates TDF into a human readable form;
|
|
|
142 |
|
|
|
143 |
tcc is the front-end to the TenDRA compiler;
|
|
|
144 |
|
|
|
145 |
tld links a number of TDF capsules into one;
|
|
|
146 |
|
|
|
147 |
tnc is an unstructured TDF assember and disassembler;
|
|
|
148 |
|
7 |
7u83 |
149 |
tpl is a structured TDF assembler;
|
|
|
150 |
|
2 |
7u83 |
151 |
tspec is a specification tool used in the TenDRA API
|
|
|
152 |
descriptions.
|
|
|
153 |
|
|
|
154 |
The utilities directory contains the source for a number of different
|
|
|
155 |
compiler generator tools:
|
|
|
156 |
|
|
|
157 |
calculus is used to manage the complex type system used
|
|
|
158 |
in the producers;
|
|
|
159 |
|
|
|
160 |
lexi is a simple lexical analyser generator (lex is
|
|
|
161 |
not used);
|
|
|
162 |
|
|
|
163 |
make_err is used to manage the producer error catalogue;
|
|
|
164 |
|
|
|
165 |
make_tdf is used to generate TDF encoding and decoding
|
|
|
166 |
routines from the TDF specification;
|
|
|
167 |
|
|
|
168 |
shared contains code common to a number of tools;
|
|
|
169 |
|
|
|
170 |
sid is a parser generator (yacc is not used);
|
|
|
171 |
|
|
|
172 |
The lib directory is divided into a number of subdirectories:
|
|
|
173 |
|
|
|
174 |
apis containing the TenDRA API descriptions used in
|
|
|
175 |
its API checking facilities;
|
|
|
176 |
|
|
|
177 |
cpp containing the C++ support library (note that this
|
|
|
178 |
is only a minimal language support subset of the
|
|
|
179 |
complete C++ standard library);
|
|
|
180 |
|
|
|
181 |
env containing the compiler front-end configuration
|
|
|
182 |
files;
|
|
|
183 |
|
|
|
184 |
libtdf containing a support library certain aspects of
|
|
|
185 |
TDF (such as 64 bits integers);
|
|
|
186 |
|
|
|
187 |
machines containing machine specific tools, libraries and
|
|
|
188 |
configuration files;
|
|
|
189 |
|
|
|
190 |
startup containing the C and C++ producer configuration
|
|
|
191 |
files;
|
|
|
192 |
|
|
|
193 |
tdf containing a description of the TDF specification
|
|
|
194 |
used by make_tdf to generate TDF encoders and
|
|
|
195 |
decoders.
|
|
|
196 |
|
|
|
197 |
|
|
|
198 |
ORGANISATION OF INSTALLED RELEASE
|
|
|
199 |
---------------------------------
|
|
|
200 |
|
|
|
201 |
The installation script creates three shell scripts in the public
|
|
|
202 |
binaries directory (/usr/local/bin in the default set-up). These are
|
|
|
203 |
the compiler, tcc, the stand-alone static checker, tchk, and the
|
|
|
204 |
API specification tool, tspec. The manual pages for these tools and
|
|
|
205 |
those which they invoke are installed in the manual page directory
|
|
|
206 |
(/usr/local/man in the default set-up). The remaining files are
|
|
|
207 |
installed into the TenDRA configuration directory (/usr/local/lib/TenDRA
|
|
|
208 |
in the default set-up). The remainder of this section describes the
|
|
|
209 |
files installed into this directory.
|
|
|
210 |
|
|
|
211 |
For each target machine, a directory:
|
|
|
212 |
|
|
|
213 |
machines/<os>/<os_vers>/<cpu>
|
|
|
214 |
|
|
|
215 |
is created to hold the machine dependent files, where <os> denotes the
|
|
|
216 |
operating system name, <os_vers> denotes the operating system version
|
|
|
217 |
and <cpu> denotes the CPU type (as above). This machine directory
|
|
|
218 |
has five subdirectories:
|
|
|
219 |
|
|
|
220 |
bin containing the compiled executables for this
|
|
|
221 |
machine; advanced users may wish to put this
|
|
|
222 |
directory on their PATH, but the executables
|
|
|
223 |
in the public binaries directory should suffice
|
|
|
224 |
for most users;
|
|
|
225 |
|
|
|
226 |
env containing the tcc configuration files for this
|
|
|
227 |
machine (see above);
|
|
|
228 |
|
|
|
229 |
include containing the modified system headers for this
|
|
|
230 |
machine; these are copied directly from the
|
|
|
231 |
src/lib/machines directory in the release;
|
|
|
232 |
|
|
|
233 |
lib containing the API token libraries describing the
|
|
|
234 |
implementation of the various standard APIs on
|
|
|
235 |
this machine; the generation of these libraries
|
|
|
236 |
from the API descriptions and the system headers
|
|
|
237 |
is the most complex part of the installation;
|
|
|
238 |
|
|
|
239 |
startup containing the compiler configuration files
|
|
|
240 |
describing how to navigate through the system
|
|
|
241 |
headers on this machine; these are copied directly
|
|
|
242 |
from the src/lib/machines directory in the
|
|
|
243 |
release.
|
|
|
244 |
|
|
|
245 |
The remainder of the directories created by the installation are common
|
|
|
246 |
to all machines. These are:
|
|
|
247 |
|
|
|
248 |
building containing files automatically generated by tspec
|
|
|
249 |
from the API descriptions which are used to build
|
|
|
250 |
the API token libraries; these files are only used
|
|
|
251 |
during installation and may be deleted if space is
|
|
|
252 |
short;
|
|
|
253 |
|
|
|
254 |
include containing the include files automatically generated
|
|
|
255 |
by tspec from the API descriptions;
|
|
|
256 |
|
|
|
257 |
startup containing the C and C++ producer configuration
|
|
|
258 |
files copied directly from the src/lib/startup
|
|
|
259 |
directory in the release.
|