1Tk UNIX README
2--------------
3
4This is the directory where you configure, compile, test, and install UNIX
5versions of Tk. This directory also contains source files for Tk that are
6specific to UNIX.
7
8The information in this file is maintained at:
9 https://www.tcl-lang.org//doc/howto/compile.html
10
11For information on platforms where Tcl/Tk is known to compile, along with any
12porting notes for getting it to work on those platforms, see:
13 https://www.tcl-lang.org//software/tcltk/platforms.html
14
15The rest of this file contains instructions on how to do this. The release
16should compile and run either "out of the box" or with trivial changes on any
17UNIX-like system that approximates POSIX, BSD, or System V. We know that it
18runs on workstations from Sun, H-P, DEC, IBM, and SGI, as well as PCs running
19Linux, BSDI, and SCO UNIX. To compile for a PC running Windows, see the README
20file in the directory ../win. To compile for MacOSX, see the README file in
21the directory ../macosx.
22
23How To Compile And Install Tk:
24------------------------------
25
26(a) Make sure that the Tcl release is present in the directory
27 ../../tcl<version> (or else use the "--with-tcl" switch described below).
28 This release of Tk will only work with the equivalently versioned Tcl
29 release. Also, be sure that you have configured Tcl before you configure
30 Tk.
31
32(b) Check for patches as described in ../README.
33
34(c) If you have already compiled Tk once in this directory and are now
35 preparing to compile again in the same directory but for a different
36 platform, or if you have applied patches, type "make distclean" to discard
37 all the configuration information computed previously.
38
39(d) Type "./configure". This runs a configuration script created by GNU
40 autoconf, which configures Tk for your system and creates a Makefile. The
41 configure script allows you to customize the Tk configuration for your
42 site; for details on how you can do this, type "./configure -help" or
43 refer to the autoconf documentation (not included here). Tk's "configure"
44 script supports the following special switches in addition to the standard
45 ones:
46
47 --with-tcl=DIR Specifies the directory containing the Tcl
48 binaries and Tcl's platform-dependent
49 configuration information. By default the Tcl
50 directory is assumed to be in the location
51 given by (a) above.
52 --with-x=DIR Tells configure where to find an installation
53 of the X Window System. Not normally needed.
54 --enable-threads If this switch is set, Tk will compile itself
55 with multithreading support.
56 --enable-shared If this switch is specified, Tk will compile
57 itself as a shared library if it can figure
58 out how to do that on this platform. This is
59 the default on platforms where we know how to
60 build shared libraries.
61 --disable-shared If this switch is specified, Tk will compile
62 itself as a static library.
63 --disable-rpath Turns off use of the rpath link option on
64 platforms that would otherwise use it.
65 --enable-symbols Build with debugging symbols. By default
66 standard debugging symbols are used. You can
67 specify the value "mem" to include
68 TCL_MEM_DEBUG memory debugging.
69 --disable-symbols Build without debugging symbols
70 --enable-64bit Enable 64bit support (where applicable)
71 --disable-64bit Disable 64bit support (where applicable)
72 --enable-64bit-vis Enable 64bit Sparc VIS support
73 --disable-64bit-vis Disable 64bit Sparc VIS support
74 --disable-xft Disable support for antialiased fonts via the
75 Freetype/xft library. By default, this is
76 switched on whenever the configure script can
77 detect the required libraries.
78 --enable-man-symlinks Use symlinks for linking the manpages that
79 should be reachable under several names.
80 --enable-man-compression=PROG
81 Compress the manpages using PROG.
82 --enable-man-suffix=STRING
83 Add STRING to the name of each of the manual
84 pages. If specified without giving STRING, the
85 suffix will be "tk".
86
87 Mac OS X only:
88
89 --enable-framework Package Tk as a framework.
90 --disable-corefoundation Disable use of CoreFoundation API.
91 --enable-aqua Use Aqua windowingsystem rather than X11,
92 requires --enable-corefoundation with Tcl and
93 Tk.
94
95 Note: by default gcc will be used if it can be located on the PATH. If you
96 want to use cc instead of gcc, set the CC environment variable to "cc"
97 before running configure. It is not safe to change the Makefile to use gcc
98 after configure is run.
99
100 Note: be sure to use only absolute path names (those starting with "/") in
101 the --prefix and --exec-prefix options.
102
103(e) Type "make". This will create a library archive called "libtk<version>.a"
104 or "libtk<version>.so" and an interpreter application called "wish" that
105 allows you to type Tcl/Tk commands interactively or execute script files.
106 It will also create a stub library archive "libtkstub<version>.a" that
107 developers may link against other C code to produce loadable extensions
108 that call into Tk's public interface routines.
109
110(f) If the make fails then you'll have to personalize the Makefile for your
111 site or possibly modify the distribution in other ways. First check the
112 porting Web page above to see if there are hints for compiling on your
113 system. If you need to modify Makefile, there are comments at the
114 beginning of it that describe the things you might want to change and how
115 to change them.
116
117(g) Type "make install" to install Tk's binaries and script files in standard
118 places. You'll need write permission on the installation directories to do
119 this. The installation directories are determined by the "configure"
120 script and may be specified with the --prefix and --exec-prefix options to
121 "configure". See the Makefile for information on what directories were
122 chosen. You should not override these choices by modifying the Makefile,
123 or by copying files post-install. The installed binaries have embedded
124 within them path values relative to the install directory. If you change
125 your mind about where Tk should be installed, start this procedure over
126 again from step (a) so that the path embedded in the binaries agrees with
127 the install location.
128
129(h) At this point you can play with Tk by running the installed "wish"
130 executable, or via the "make shell" target, and typing Tcl/Tk commands at
131 the interactive prompt.
132
133If you have trouble compiling Tk, see the URL noted above about working
134platforms. It contains information that people have provided about changes
135they had to make to compile Tk in various environments. We're also interested
136in hearing how to change the configuration setup so that Tk compiles on
137additional platforms "out of the box".
138
139Note: Do not specify either of the TCL_LIBRARY and TK_LIBRARY environment
140variables in a production installation, as this can cause conflicts between
141different versions of the libraries. Instead, the libraries should have the
142correct locations of their associated script directories built into them.
143
144Test suite
145----------
146
147Tk has a substantial self-test suite, consisting of a set of scripts in the
148subdirectory "tests". To run the test suite just type "make test" in this
149directory. You should then see a printout of the test files processed. If any
150errors occur, you'll see a much more substantial printout for each error. In
151order to avoid false error reports, be sure to run the tests with an empty
152resource database (e.g., remove your .Xdefaults file or delete any entries
153starting with *). Also, don't try to do anything else with your display or
154keyboard while the tests are running, or you may get false violations. See the
155README file in the "tests" directory for more information on the test suite.
156
157If the test suite generates errors, most likely they are due to non-portable
158tests that are interacting badly with your system configuration. We are
159gradually eliminating the non-portable tests, but this release includes many
160new tests so there will probably be some portability problems. As long as the
161test suite doesn't core dump, it's probably safe to conclude that any errors
162represent portability problems in the test suite and not fundamental flaws
163with Tk.
164
165There are also a number of visual tests for things such as screen layout,
166Postscript generation, etc. These tests all have to be run by manually
167enabling the "userInteraction" constraint when testing, and the results have
168to be verified visually. This can be done with:
169
170 make test TESTFLAGS="-constraints userInteraction"
171
172Some tests will present a main window with a bunch of menus, which you can use
173to select various tests.
174