]> git.zerfleddert.de Git - micropolis/blame_incremental - src/tcl/readme.txt
src/tk/makefile: Micropolis build fixes for recent macOS
[micropolis] / src / tcl / readme.txt
... / ...
CommitLineData
1Tcl
2
3by John Ousterhout
4University of California at Berkeley
5ouster@sprite.berkeley.edu
6
71. Introduction
8---------------
9
10This directory contains the sources and documentation for Tcl, an
11embeddable tool command language. The information here corresponds
12to release 6.4. This release is identical to the 6.3 release except
13for a few bug fixes and one new feature (the Tcl_GlobalEval procedure).
14The file "changes" has a complete list of all changes made to Tcl,
15with incompatible changes specially marked. Tcl 6.4 has no incompatible
16changes relative to 6.3.
17
18For an introduction to the facilities provided by Tcl, see the paper
19``Tcl: An Embeddable Command Language'', in the Proceedings of the
201990 Winter USENIX Conference. A copy of that paper is included here
21in Postscript form in the file "doc/usenix.ps" and in text form in the
22file "doc/usenix.text". However, the paper corresponds to a much
23earlier version of Tcl (approximately version 3.0), so some details
24of the paper may not be correct anymore and there are many new features
25not documented in the paper.
26
272. Documentation
28----------------
29
30The "doc" subdirectory contains a complete set of manual entries
31for Tcl. The file "doc/Tcl.man" gives an overall description of the
32Tcl language and describes the core Tcl commands. The other ".man"
33files in "doc" describe the library procedures that Tcl provides for
34Tcl-based applications. Read the "Tcl" man page first. To print any
35of the man pages, cd to the "doc" directory and invoke your favorite
36variant of troff using the normal -man macros, for example
37
38 ditroff -man <file>
39
40where <file> is the name of the man page you'd like to print.
41
423. Machines supported
43---------------------
44
45If you follow the directions below, this release should compile
46and run on the following configurations either "out of the box"
47or with only trivial changes:
48
49 - Sun-3's, Sun-4's, SPARCstation-1's and SPARCstation-2's running
50 many variants of SunOS, such as 4.1.
51 - DECstation-3100's and DECstation-5000's running many versions of
52 Ultrix, such as 2.0 and 4.2.
53 - DEC VAXes running many versions of Ultrix or BSD UNIX.
54 - Intel 386 based systems running SCO Unix 3.2v2.
55 - Intel 386 based systems running SCO Xenix 2.3.3.
56 - Intel 386 based systems running Bell-Tech (now Intel) Unix 3.2.0.
57 - Silicon Graphics systems running IRIX 4.0.
58 - Various H-P machines running versions of HP-UX such as 7.05
59 - Sequent Symmetry running versions of Dynix/ptx such as v1.2.4
60
61If you find problems running Tcl on any of the above configurations,
62please let me know. Also, if you are able to compile Tcl and run the
63test suite successfully on configurations not listed above, please
64let me know and tell me what changes, if any, you needed to make to
65do it. I'd like to keep the above list up-to-date and continue to
66improve the portability of Tcl.
67
68Tcl can be used on many other configurations with only a few
69modifications. The file "porting.notes" contains information sent to
70me about what it took to get Tcl to run on various other configurations.
71I make no guarantees that this information is accurate or complete, but
72you may find it useful. If you get Tcl running on a new configuration,
73I'd be deligted to receive new information to add to "porting.notes".
74
754. Compiling Tcl
76----------------
77
78To compile Tcl on any of the configurations listed above, or systems
79similar to them, do the following:
80
81 (a) If your system isn't one of the ones listed above, look in the
82 file "porting.notes" to see if your system is listed there. This
83 file contains additonal notes on getting Tcl to run on various
84 other systems.
85
86 (b) Edit the "set" commands at the beginning of the file "config"
87 if necessary to correspond to your system configuration (they
88 should already be right for most versions of Unix).
89
90 (c) Type "./config" in the top-level directory. "Config" is a script
91 that pokes around in your system to see if certain almost-standard
92 things are missing (header files, library procedures, etc.);
93 if your system doesn't seem to have them, it configures Tcl to
94 use its own copies of these things instead (Tcl's copies are
95 kept in the "compat" subdirectory). Config prints out messages
96 for all the substitutions it made. You can ignore any of the
97 messages unless they say "ERROR!!"; in this case something is
98 fundamentally wrong and the config script couldn't handle your
99 system configuration.
100
101 (d) Type "make" to compile the library. This will create the Tcl
102 library in "libtcl.a". The Makefile should work without any
103 modifications but you may wish to personalize it, e.g. to
104 turn on compiler optimization.
105
106 (e) If the combination of "config" and "make" doesn't work for you,
107 then I suggest the following approach:
108 - Start again with a fresh copy of the distribution.
109 - Set the #defines that appear at the very front of
110 tclUnix.h (before the first #include) to correspond
111 to your system.
112 - Modify Makefile to set CC, CFLAGS, etc. for your system.
113 - If things don't compile or don't link, then you may need
114 to copy some of the .c or .h files from the "compat"
115 directory into the main Tcl directory to compensate for
116 files missing from your system. Modify the COMPAT_OBJS
117 definition in Makefile to include a .o name for each of
118 the .c files that you copied up from the compat directory.
119
120 (f) Create a directory /usr/local/lib/tcl and copy all the files
121 from the "library" subdirectory to /usr/local/lib/tcl. Or,
122 you can use some other directory as library, but you'll need
123 to modify the Makefile to reflect this fact (change the
124 TCL_LIBRARY definition).
125
126 (g) Type "make tclTest", which will create a simple test program that
127 you can use to try out the Tcl facilities. TclTest is just a
128 main-program sandwich around the Tcl library. It reads standard
129 input until it reaches the end of a line where parentheses and
130 backslashes are balanced, then sends everything it's read to the
131 Tcl interpreter. When the Tcl interpreter returns, tclTest prints
132 the return value or error message. TclTest defines a few other
133 additional commands, most notably:
134
135 echo arg arg ...
136
137 The "echo" command prints its arguments on standard output,
138 separated by spaces.
139
1405. Test suite
141-------------
142
143There is a relatively complete test suite for all of the Tcl core in
144the subdirectory "tests". To use it just type "make test" in this
145directory. You should then see a printout of the test files processed.
146If any errors occur, you'll see a much more substantial printout for
147each error. Tcl should pass the test suite cleanly on all of the
148systems listed in Section 3. See the README file in the "tests"
149directory for more information on the test suite.
150
1516. Compiling on non-UNIX systems
152--------------------------------
153
154The Tcl features that depend on system calls peculiar to UNIX (stat,
155fork, exec, times, etc.) are now separate from the main body of Tcl,
156which only requires a few generic library procedures such as malloc
157and strcpy. Thus it should be relatively easy to compile Tcl for
158these machines, although a number of UNIX-specific commands will
159be absent (e.g. exec, time, and glob). See the comments at the
160top of Makefile for information on how to compile without the UNIX
161features.
162
1637. Special thanks
164-----------------
165
166Mark Diekhans and Karl Lehenbauer of Santa Cruz Operation deserve special
167thanks for all their help during the development of Tcl 6.0. Many of the
168new features in Tcl 6.0 were inspired by an enhanced version of Tcl 3.3
169called Extended Tcl 4.0, which was created by Mark, Karl, and Peter
170da Silva. Mark and Karl explained these features to me and provided
171excellent (and challenging) feedback during the 6.0 development process.
172They were also a great help in finding and fixing portability problems.
173Without their ideas and assistance Tcl 6.0 would be much less powerful.
174
1758. Support
176----------
177
178There is no official support organization for Tcl, and I can't promise
179to provide much hand-holding to people learning Tcl. However, I'm very
180interested in receiving bug reports and suggestions for improvements.
181Bugs usually get fixed quickly (particularly if they are serious), but
182enhancements may take a while and may not happen at all unless there
183is widespread support for them.
184
1859. Tcl newsgroup
186-----------------
187
188There is a network news group "comp.lang.tcl" intended for the exchange
189of information about Tcl, Tk, and related applications. Feel free to use
190this newsgroup both for general information questions and for bug reports.
191I read the newsgroup and will attempt to fix bugs and problems reported
192to it.
Impressum, Datenschutz