body { margin:0px; background-color:#fff } img { margin:0px; border-style:none } button { margin:0px; border-style:none; padding:0px; background-color:transparent; vertical-align:top } p:first-child { margin-top:0px } table { empty-cells:hide } .f-sp { font-size:1px; visibility:hidden } .f-lp { margin-bottom:0px } .f-x1 { } .f-x2 { } .f-x3 { } a:visited { color:#8b0000; text-decoration:underline } .capsub { color:#808080; font-weight:bold; text-transform:uppercase; letter-spacing:2.4px } .code { color:#000; font-family:monospace } .bulletlist { margin-left:0px; margin-right:0px; margin-top:0px; margin-bottom:0.1px } .bold { color:#00f; font-weight:bold } .style44 { color:#000; font-family:monospace; font-weight:bold } .rightaligned { margin-left:0px; margin-right:0px; text-align:right; margin-top:0px; margin-bottom:0.1px } .footer { color:#808080; font-size:90% } .FWExtra { } .FWExtra a:link { text-decoration: none; } .FWExtra a:active { text-decoration: none; } .FWExtra a:visited { text-decoration: none; } .FWExtra a:hover { text-decoration: underline; } -->
Equi4 SoftwareTclkit

top pageS

 

Metakit
Tclkit
Starkit
CatFish

 

Soapbox

 

Blog
Musings
Tclers' Wiki
The SAX

Company

 

About
Services
Contact info
Support

 

Site map

Overview

If for any reason you can't (or don't want to) use one of the precompiled binaries of Tclkit listed in the download matrix, then you will have to build Tclkit yourself. This requires some care, since Tclkit is made up of a number of different packages and because the final executable requires some post-link steps to become usable.

The "genkit" script tries to automate all of this. It's a Tcl script which needs to be run a number of times with different arguments. It can fetch all the necessary sources from the net, build each of the different packages, combine them into a final binary, perform the post-linking required, and run a quick test. If any of these steps fail, you can look at the build transcripts, fix the problem, re-run that step, and proceed. Or look at genkit itself, and perform its steps manually. There is no magic.

requirements

To build tclkit with genkit, you'll need:

  • a working "tclsh", probably at least version 8.3
  • a copy of the genkit script, which is available here
  • a working "toolchain", i.e. the usual tools needed to support autoconf's "configure" and make, as well as C and C++ compilers (usually gcc/g++)
  • internet access, to fetch all the necessary files (not essential, see below)

For Windows, there is completely different build process using MSVC6, see below.

Cross-compilation isn't supported - several essential packages are not set up for it.

The need for a working tclsh is unavoidable, since genkit is written in Tcl. Any version of tclsh >= 8.3 or any existing tclkit should do. If none is available, you can download a copy of the standard Tcl distribution and build it yourself.

If internet access is not available, you can prevent genkit from fetching files by placing all of them in a "tars/" subdirectory before calling genkit. The files to fetch are all in this directory.

Customization

There are a some choices you can make w.r.t. how genkit builds things.

E.g. to build with X11 anti-aliasing support in Tk:

  • create a file called "genkit.local" and put these two lines in it:
        set Z(tkconfig) --enable-xft
        set Z(tksuff) -lXft

There is an experimental feature to build Tcl/Tk 8.5 instead of Tcl/Tk 8.4:

  • Add the environment variable setting "KIT_VERSION=5" every time you run genkit. Alternately, you can do the same by prefixing it to each call:
        KIT_VERSION=5 tclsh genkit A
        KIT_VERSION=5 tclsh genkit B tcl
    And so on. Be sure not to mix builds of 8.4 and 8.5 in the same area

Look in the genkit script for other options you could set in the "genkit.local" file.

Building tclkit in 7 easy steps

Ok, start in a new directory with just the genkit script in it (and the tars/ area if you want to avoid over-the-net-fetching).

1.   tclsh genkit A   - fetch/unpack all packages

2.   tclsh genkit B tcl   - build the Tcl core itself

3.   sh genkit B all   - build all remaining packages

4.   sh genkit C   - collect build results into a tar file

5.   sh genkit D   - run a quick test that tclkit works

6.   sh genkit E   - build the final tclkit executable

7.   Fooled ya, there is no step 7!

If all went well, you'll end up with an executable file called "tclkit-<hostname>", which you can rename to "tclkit" and copy wherever you need it. Welcome to the world of self-contained Tcl/Tk systems and Starkit packaging!

If the above did not go as smoothly as described, you'll need to dig a bit deeper. The different steps are described on the next page.

building tclkit on windows

The above process might also work with the Mingw/Msys toolchain, but there is an alternative which uses MSVC6. To use this approach, download and unpack this file, so that you end up with an "msvc6\" directory.

If you do not use "genkit" for step 1, you will have to fetch all files in "tars\" and you will need to manually unpack each of the tar files to create the "src\" area with each of the packages in a subdirectory. The result should be msvc6/ and src/ next to each other.

Then, open the "msvc6\all.dsw" workspace using MSVC6, by double-clicking on it. Make sure the target is "Win32 Release" and build the "all" project. This depends on all the other subprojects and will - eventually - end with various executables called "kit*.exe".

The last step does the post-linking needed to produce a final tclkit executable. From the Windows command line, go to the parent directory of msvc6 and type:

  copy /B msvc6\kit.exe + tars\runtime.kit mytclkit.exe
  copy /B msvc6\kitsh.exe + tars\runtime-sh.kit mytclkitsh.exe

This creates executables called "mytclkit" and "mytclkitsh", respectively.

tclkit index

Intro / News

Overview

Documentation

Licensing

Download

Tclkit Lite

Mailing lists

Acknowledgements

Links