It is not clear, after reading Critcl pages, exactly what files have to be installed on a Windows machine to use Critcl. Does one have to install the critcl source code and then some other piece(s)?
June 2002 - Yes, you need critcl installed as a normal Tcl package (i.e. so "package require critcl" works in tclsh or tclkit) and you need to set things up so "gcc" works. What I do is install the mingw system, and set up the PATH so "gcc" works from the command line. That's it. -jcw
Paolo Noli: A little question: How to call a tcl commands from inside a c funcion declared with the statement "ccode"? (I need this to implement a callback procedure.. but I think this can be an interesting tip for others people. :)
Instructions for installing critcl in an existing "traditional" (i.e. non-starkit) Tcl installation
- Critcl is supplied as a Starkit; but perhaps you would like to use it with a traditional Tcl distribution, e.g to use your collection of extensions
- these instructions are console commands for a Linux/Unix system. Please adapt for other platforms.
- download the tclkit binary for your platform, and the starkits critcl.kit, and sdx.kit
- follow the instructions for installing tclkit (you can remove it at the end if you wish)
- check that tclkit and critcl.kit work correctly: run the command
tclkit critcl.kit test-critcl.tcl
- (where tclkit is in your command path and critcl.kit, test-critcl.tcl are in your current directory; the file test-critcl.tcl is listed below)
- you should see the console output "three times 123 is 369"
- now use sdx.kit to unpack critcl.kit: run the command
tclkit sdx.kit critcl.kit
- (where tclkit is in your command path and sdx.kit, critcl.kit are in your current directory)
- a directory critcl.vfs will be created that holds the contents of critcl.kit: cd to this folder's lib subfolder
cd critcl.vfs/lib
- ensure that you are the root user and that the folders and their contents have appropriate ownership
- copy the contents of this folder to the lib folder of your Tcl installation, and then cd there
cp -a * /path/to/tcl/lib
cd /path/to/tcl/lib
- open the file app-critcl/critcl.tcl in a text editor and do the following...
- ... in the first non-comment line, 'exec tclkit $0 ${1+"$@"}', replace 'tclkit' with 'tclsh'
- ... find the line with 'Wikit::init' and comment it out (alternatively, install the files from the critcl.vfs/doc folder somewhere on your machine, and specify the path in the 'file join' statement)
- make the file app-critcl/critcl.tcl executable and symlink it from a directory in your PATH, e.g.
ln -s /path/to/tcl/lib/app-critcl/critcl.tcl /usr/local/bin/critcl
- delete your Critcl cache directory ~/.critcl so the next command will test the correct functioning of the compiler
- now test this installation of Critcl:
tclsh test-critcl.tcl
- as before, you should see the console output "three times 123 is 369"
- once again delete your Critcl cache directory ~/.critcl, and now test the command-line critcl tool (which provides useful command-line options)
critcl test-critcl.tcl
- if this is successful, you can now use Critcl from your existing Tcl installation, and you no longer need the tclkit or starkit files to use Critcl
The file test-critcl.tcl:
lappend auto_path .
package require critcl
critcl::cproc triple {int i} int {
return i * 3; /* this is C code */
}
puts "three times 123 is [triple 123]"
Category Critcl