Subversion Repositories tendra.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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.