adding GNU dc ("desk calculator")
[unix-history] / gnu / lib / libg++ / README.gnu
CommitLineData
15637ed4
RG
1This is version 1.39.0 of libg++, the GNU C++ class library.
2Release date Tue Feb 19 06:43:04 1991 Doug Lea (dl at g.oswego.edu)
3
4* Please skim through this once BEFORE attempting to make and install libg++.
5
6* Contents
7
8 * g++ source files are in the ./src directory
9 * Some simple tests and demo programs are in ./tests
10 * Header files are in ./g++-include
11 * documentation is in ./libg++.texinfo.
12 * Some miscellaneous files of possible interest are in ./etc
13 (These files are not officially a part of the libg++ distribution,
14 and are subject to arbitrary changes, deletions, etc. from release
15 to release.)
16
17* Pre-installation
18
19 * Install a version of g++ with at least as high a version
20 number as this version of libg++. You also need gcc installed.
21
22 * If there is a version of the GNU as (gas) assembler that
23 works on your machine, get it, and install it as gcc-as,
24 in whatever lib directory holds gcc-cc1plus. Otherwise,
25 you may have to remake g++ with -DFASCIST_ASSEMBLER in CFLAGS,
26 and disable the -PIPE_AS flag in the libg++ Makefile.
27
28 * With only trivial modifications (like changing file extensions,
29 etc.) everything (perhaps except for some demos in ./etc)
30 should compile and run with any 2.0 C++ compiler. Please tell me
31 if this is not so.
32
33* Installation (see libg++.texinfo more more details)
34
35 * For VMS, cd to ./vms, and read AAAREADME.TXT
36
37 * Except for how to set the `PWD' make variable (which you must
38 manually change if you do not use GNU make), the Makefiles
39 are reported to be compatible with all flavors of `make'.
40
41 * Check the declared indicated pathnames, etc. in the top-level Makefile
42
43 Be sure to use USG-oriented switches if you run SystemV unix.
44
45 If you run into problems, check through system-dependent
46 #defines in g++-include/stdio.h, g++-include/math.h
47 and g++-include/values.h, especially, and report any
48 incompatibilities or problems to bug-lib-g++@prep.ai.mit.edu.
49
50 * Choose functionality flags.
51
52 In the libg++ Makefile, `XTRAFLAGS' are selectable. By default,
53 none of these are enabled:
54
55 -DEFAULT_filebuf, if included in XTRAFLAGS, causes standard
56 cin, cout, and cerr streams to bypass your libc stdio facilities.
57 I know of no system for which this is absolutely required. However,
58 if there are known bugs with your stdio implementation, or if
59 you wish to give up some functionality in order to be conservative,
60 then select this. If you use this, expect an innocuous difference
61 between the expected and obtained results of tFile in how the
62 final status of standard streams is printed.
63
64 -DNO_GNULIB3 suppresses compilation of a dummy `main',
65 which calls global constructors and destructors around a
66 user main. Select this if you have made alternative arrangements
67 for doing this.
68
69 -DCOFF_ENCAPSULATE is required for systems in which all
70 executables use GNU COFF encapsulation.
71
72 -DNO_LINE_BUFFER_STREAMBUF suppresses line-buffering (automatic
73 flushing of output whenever a newline is encountered). Selecting
74 this may result in slightly smaller code, but will require
75 manual flushing when lines are expected to be printed right
76 when they are written.
77
78 -DUSE_LIBGXX_INLINES forces inlines to be compiled even if
79 not compiling with optimization turned on. This is
80 required when compiling src files only if -O does not work
81 for you.
82
83 -DNO_LIBGXX_MALLOC suppresses compilation of libg++ malloc
84 routines, thus causing all malloc, free, realloc, operator
85 new() and operator delete() calls to go through your libc
86 version of malloc. Select this if your system requires a
87 the system version of malloc (possibly necessary on some
88 shared memory multiprocessors, since libg++ malloc does not
89 contain any concurrency control), or, perhaps, if your applications
90 are specially tuned for or otherwise work better with your
91 system malloc.
92
93 -DMALLOC_STATS compiles statistics counting into libg++ malloc
94 (but also slows it down a little). Select this if you are
95 interested in examining the performance of libg++ malloc.
96 (I welcome this, and would be grateful to receive statistics
97 (printed via `malloc_stats()') for programs with heavy
98 dynamic allocation requirements.)
99
100 * Other compilation flags are tunable, but the default versions
101 should normally suffice.
102
103 * type `make all', or, step-by-step:
104
105 `make src' -- to compile libg++.a
106 `make tests' -- to make some tests/demos of libg++.
107 This will first compile tests, then run them,
108 then diff the results against expected
109 results.
110 `make etc' -- (optional) to compile various other things
111
112 `make run_etc' -- (optional) to run tests on some of the
113 things compiled in etc.
114
115 `make gperf' -- (optional) to compile Doug Schmidt's
116 perfect hash function generator.
117
118 * Type `make install' to install
119
120 libg++.a (from src)
121 include files (from g++-include)
122 prototype files (from g++-include/gen)
123 etags (from etc)
124 g++dep (from etc)
125
126 You may also want to install etc/c++-mode.el in your
127 emacs/lisp directory, probably in byte-compiled form.
128
129 * Install the documentation
130
131 If you are a systems administrator installing libg++ for others,
132 please make the documentation available to users!
133
134 The libg++.texinfo file may be formatted as a paper document by
135
136 * Get a copy of texinfo.tex.
137 This file defines various tex macros used in libg++.texinfo
138 One is in the gcc release.
139 You can temporarily copy it into the current directory.
140 * Run tex on libg++.texinfo
141 and do whatever you normally do from there to print it.
142
143 It may be made into an emacs info file by
144
145 * Inside emacs, run M-x texinfo-format-buffer on libg++.texinfo.
146 * Save the resulting files:
147 libg++
148 libg++-1
149 libg++-2
150 ...
151
152 * Copy these files into your emacs info directory
153 (normally somewhere like /usr/gnu/emacs/info).
154 * If you have not done so before, edit the emacs/info/dir file
155 to add a libg++ node, by inserting a line like
156
157 * Libg++: (libg++). The GNU C++ Library
158
159 to the bottom of the file.
160
161 * (Optional) Install, from ./etc
162 etags (version of etags that understands c++)
163 g++dep (a version of mkdep that understands c++)
164 c++-mode.el (a c++-mode for GNU emacs)
165
166* General compilation notes
167
168By default, everything is compiled with the g++/gcc -Wall flag
169enabled. This causes g++ to produce numerous diagnostic warnings and
170reminders. This is perfectly normal. Only true error messages, which
171cause the `makes' to halt indicate real problems. If you do not like
172to look at the warnings, disable the -Wall in the Makefile. -Wall is
173enabled because, if there are true errors, warnings leading up to
174them may prove helpful.
175
176* Notes on compiling and running libg++/tests
177
178tCurses is not automatically run through `checktests'.
179You must run it manually:
180
181tCurses attempts to place one of each curses library primitive (boxes,
182strings, numbers...) on your screen, and asks for some input, to test
183curses input routines. Since there is no way to describe the output
184in a system- and terminal- independent way, you will have to be the
185judge of whether it works acceptably.
186
187tCurses (and the curses-based classes generally) may fail on the
188Sequent and perhaps other systems with unusual or old curses library
189implementations if you do not end input with a <linefeed> instead of
190the normal <carriage-return>.
191
192It is a very good idea to also cd to the test directory and run tests
193manually, to see what they do.
194
195Compiling and running the tests consumes a fair amount of time and
196disk space!
197
198Some reported diffs may be perfectly reasonable, owing to things like
199floating point precision differences: The expected.out file was created
200on a Sun4/110.
201
202 Some tRational and tFix results depend on floating point precision
203 and may generate slightly different output on different machines.
204
205 tRandom seeds some random-numbers in a way that also relies on
206 floating-point representations -- Your output should be numerically
207 similar, but probably not identical.
208
209* changes from libg++-1.37.0
210
211 * All files use the new g++ #pragma interface / #pragma implementation
212 convention, which minimies duplication of `outlined' inlines
213 and vtables. This also causes no inlines to be used at
214 all when not compiling with `-O', which speeds compilation
215 and simplifies debugging.
216
217 * Many .h header file names had to be shortened so as to simulaneously
218 work with SYSV and with #pragma interface (since .h and .cc file
219 base names must match.) Sorry!
220
221 * All genclass-able files have been moved to g++-include/gen.
222
223 * various and sundry bug fixes, minor enhancements, and/or portability
224 improvements as described in the ChangeLog.
225
226* Known bugs and problems
227
228 * Support for the DecStation3100 and other MIPS-based machines is
229 still uncertain.
230
231 * The file etc/HINTS is an emacs RMAIL file that contains recent
232 bug-lib-g++ list mail and related messages that may be useful.
233
234* Lots of other information is in the libg++.texinfo file. It really is
235 very important to actually read the documentation before using
236 library classes. Examination of the demo files in the test directory
237 may also be useful. (Note however, that the demo files are merely
238 designed to test examples of each class capability,
239 and are not especially good examples of client functions that might
240 use these classes.)
241
242* There is now a gnu libg++ mailing list (bug-lib-g++@prep.ai.mit.edu) and
243 associated usenet gnu news group.
244
245* You will be performing a valuable service if you use libg++
246 classes and report back any comments, and suggestions, or bugs,
247 preferably to the bug-lib-g++ list. Your feedback is extremely
248 helpful in efforts to make libg++ as useful and reliable as possible.
249
250* See file `etc/release.log' for changes from previous versions
251
252
253* I continue to solicit
254
255 * bug reports.
256 * suggestions.
257 * comments.
258 * questions about installing and using libg++
259 * other contributions to be incorporated into libg++.
260 * sample programs using libg++.
261
262 Often, the best place to send such things is bug-lib-g++@prep.ai.mit.edu,
263 although direct mail to me is also welcome.
264
265* Good luck!
266
267Doug Lea, Computer Science Dept., SUNY Oswego, Oswego, NY, 13126 (315)341-2367
268email: dl@g.oswego.edu or dl@cat.syr.edu
269UUCP :...cornell!devvax!oswego!dl or ...rutgers!sunybcs!oswego!dl