1Tcl UNIX README 2--------------- 3 4RCS: @(#) $Id: README,v 1.31 2008/02/12 10:07:19 dkf Exp $ 5 6This is the directory where you configure, compile, test, and install UNIX 7versions of Tcl. This directory also contains source files for Tcl that are 8specific to UNIX. Some of the files in this directory are used on the PC or 9MacOSX platform too, but they all depend on UNIX (POSIX/ANSI C) interfaces and 10some of them only make sense under UNIX. 11 12Updated forms of the information found in this file is available at: 13 http://www.tcl.tk/doc/howto/compile.html#unix 14 15For information on platforms where Tcl is known to compile, along with any 16porting notes for getting it to work on those platforms, see: 17 http://www.tcl.tk/software/tcltk/platforms.html 18 19The rest of this file contains instructions on how to do this. The release 20should compile and run either "out of the box" or with trivial changes on any 21UNIX-like system that approximates POSIX, BSD, or System V. We know that it 22runs on workstations from Sun, H-P, DEC, IBM, and SGI, as well as PCs running 23Linux, BSDI, and SCO UNIX. To compile for a PC running Windows, see the README 24file in the directory ../win. To compile for MacOSX, see the README file in 25the directory ../macosx. 26 27How To Compile And Install Tcl: 28------------------------------- 29 30(a) If you have already compiled Tcl once in this directory and are now 31 preparing to compile again in the same directory but for a different 32 platform, or if you have applied patches, type "make distclean" to discard 33 all the configuration information computed previously. 34 35(b) If you need to reconfigure because you changed any of the .in or .m4 36 files, you will need to run autoconf to create a new ./configure script. 37 Most users will NOT need to do this since a configure script is already 38 provided. 39 40 (in the tcl/unix directory) 41 autoconf 42 43(c) Type "./configure". This runs a configuration script created by GNU 44 autoconf, which configures Tcl for your system and creates a Makefile. The 45 configure script allows you to customize the Tcl configuration for your 46 site; for details on how you can do this, type "./configure --help" or 47 refer to the autoconf documentation (not included here). Tcl's "configure" 48 supports the following special switches in addition to the standard ones: 49 50 --enable-threads If this switch is set, Tcl will compile itself 51 with multithreading support. 52 --disable-load If this switch is specified then Tcl will 53 configure itself not to allow dynamic loading, 54 even if your system appears to support it. 55 Normally you can leave this switch out and Tcl 56 will build itself for dynamic loading if your 57 system supports it. 58 --disable-dll-unloading Disables support for the [unload] command even 59 on platforms that can support it. Meaningless 60 when Tcl is compiled with --disable-load. 61 --enable-shared If this switch is specified, Tcl will compile 62 itself as a shared library if it can figure 63 out how to do that on this platform. This is 64 the default on platforms where we know how to 65 build shared libraries. 66 --disable-shared If this switch is specified, Tcl will compile 67 itself as a static library. 68 --enable-symbols Build with debugging symbols. By default 69 standard debugging symbols are used. You can 70 specify the value "mem" to include 71 TCL_MEM_DEBUG memory debugging, "compile" to 72 include TCL_COMPILE_DEBUG debugging, or "all" 73 to enable all internal debugging. 74 --disable-symbols Build without debugging symbols 75 --enable-64bit Enable 64bit support (where applicable) 76 --disable-64bit Disable 64bit support (where applicable) 77 --enable-64bit-vis Enable 64bit Sparc VIS support 78 --disable-64bit-vis Disable 64bit Sparc VIS support 79 --enable-langinfo Allows use of modern nl_langinfo check for 80 better localization support. This is on by 81 default on platforms where nl_langinfo is 82 found. 83 --disable-langinfo Specifically disables use of nl_langinfo. 84 --enable-man-symlinks Use symlinks for linking the manpages that 85 should be reachable under several names. 86 --enable-man-suffix[=STRING] 87 Append STRING to the names of installed manual 88 pages (prior to applying compression, if that 89 is also enabled). If STRING is omitted, 90 defaults to 'tcl'. 91 --enable-man-compression=PROG 92 Compress the manpages using PROG. 93 --enable-dtrace Enable tcl DTrace provider (if DTrace is 94 available on the platform), c.f. tclDTrace.d 95 for descriptions of the probes made available, 96 see http://wiki.tcl.tk/DTrace for more details 97 --with-encoding=ENCODING Specifies the encoding for compile-time 98 configuration values. Defaults to iso8859-1, 99 which is also sufficient for ASCII. 100 --with-tzdata=FLAG Specifies whether to install timezone data. By 101 default, the configure script tries to detect 102 whether a usable timezone database is present 103 on the system already. 104 105 Mac OS X only (i.e. completely unsupported on other platforms): 106 107 --enable-framework Package Tcl as a framework. 108 --disable-corefoundation Disable use of CoreFoundation API and revert 109 to standard select based notifier, required 110 when using naked fork (i.e. not followed by 111 execve). 112 113 Note: by default gcc will be used if it can be located on the PATH. If you 114 want to use cc instead of gcc, set the CC environment variable to "cc" 115 before running configure. It is not safe to edit the Makefile to use gcc 116 after configure is run. Also note that you should use the same compiler 117 when building extensions. 118 119 Note: be sure to use only absolute path names (those starting with "/") in 120 the --prefix and --exec-prefix options. 121 122(d) Type "make". This will create a library archive called "libtcl<version>.a" 123 or "libtcl<version>.so" and an interpreter application called "tclsh" that 124 allows you to type Tcl commands interactively or execute script files. It 125 will also create a stub library archive "libtclstub<version>.a" that 126 developers may link against other C code to produce loadable extensions 127 for Tcl. 128 129(e) If the make fails then you'll have to personalize the Makefile for your 130 site or possibly modify the distribution in other ways. First check the 131 porting Web page above to see if there are hints for compiling on your 132 system. If you need to modify Makefile, there are comments at the 133 beginning of it that describe the things you might want to change and how 134 to change them. 135 136(f) Type "make install" to install Tcl binaries and script files in standard 137 places. You'll need write permission on the installation directories to do 138 this. The installation directories are determined by the "configure" 139 script and may be specified with the standard --prefix and --exec-prefix 140 options to "configure". See the Makefile for information on what 141 directories were chosen; you can override these choices by modifying the 142 "prefix" and "exec_prefix" variables in the Makefile. The installed 143 binaries have embedded within them path values relative to the install 144 directory. If you change your mind about where Tcl should be installed, 145 start this procedure over again from step (a) so that the path embedded in 146 the binaries agrees with the install location. 147 148(g) At this point you can play with Tcl by running the installed "tclsh" 149 executable, or via the "make shell" target, and typing Tcl commands at the 150 interactive prompt. 151 152If you have trouble compiling Tcl, see the URL noted above about working 153platforms. It contains information that people have provided about changes 154they had to make to compile Tcl in various environments. We're also interested 155in hearing how to change the configuration setup so that Tcl compiles on 156additional platforms "out of the box". 157 158Test suite 159---------- 160 161There is a relatively complete test suite for all of the Tcl core in the 162subdirectory "tests". To use it just type "make test" in this directory. You 163should then see a printout of the test files processed. If any errors occur, 164you'll see a much more substantial printout for each error. See the README 165file in the "tests" directory for more information on the test suite. Note: 166don't run the tests as superuser: this will cause several of them to fail. If 167a test is failing consistently, please send us a bug report with as much 168detail as you can manage. Please use the online database at 169 http://tcl.sourceforge.net/ 170 171The Tcl test suite is very sensitive to proper implementation of ANSI C 172library procedures such as sprintf and sscanf. If the test suite generates 173errors, most likely they are due to non-conformance of your system's ANSI C 174library; such problems are unlikely to affect any real applications so it's 175probably safe to ignore them. 176