Compiling AMuZed/ZooM Under Various Platforms

http://www.cs.waikato.ac.nz/Research/fm/amuzed.html


** To compile under Windows, you’ll need:
 
-         The MSYS and MinGW kits (both available at http://www.mingw.org/ ) to provide apps such as make, ld, dlltool etc. Also includes pexports, so don’t worry about finding it when it’s mentioned (with a dead link) in other documentation.
 
-         SED (Stream Editor - http://gnuwin32.sourceforge.net/packages/sed.htm - download sed3028a.zip or the closest it offers). The makefile that generates .a files in the tcl/bin directory uses this.
 
-         GHC 5.02.3 ( http://www.haskell.org/ghc/ ). This is the first version with a Windows installer. Later versions may have trouble compiling TclHaskell, AMuZed and ZooM.
 
-         TclHaskell 1.2 ( http://www.dcs.gla.ac.uk/~meurig/TclHaskell/ ). Quite simply lets you call Tcl/Tk through Haskell. Sadly, the last update was on 3 October 2001.
 
-         Tcl/Tk – You should get this one with the MinGW, if not, there’s a download link from the same page you got MinGW from. Don’t use the Cygwin or ActiveState ones. Some documentation mentions a company called “Scriptics” – don’t worry about them, as they have since dissolved.
 
-         AMuZed/ZooM source ( http://www.cs.waikato.ac.nz/Research/fm/amuzed.html ).
 
-         Sigbjorn Finne’s TclHaskell patch – May or may not be necessary, but it does allow TclHaskell to compile under GHC 6.0.1. There will either be a link to this on the AMuZed/ZooM website mentioned above. Hopefully the TclHaskell page will one day feature the patched code.


And to setup, compile and run under Windows:
 
1. Install MinGW, MSYS, SED, and GHC and include them in your path. Only GHC needs admin privileges. MinGW and MSYS do try to write a .ini file to c:/windows, but it can get by without it.
 
2. Unpack TclHaskell. (The rest of the instructions are from Readme.ghc.txt in the TclHaskell directory, with additions by me).
 
3. In the TclHaskell1.2/src directory copy makefile.nt to makefile
 
4. Modify the makefile to point to the correct installation directory and to set $TCLROOT to point to the root of your Tcl-Tk distribution.
 
Also: add “-package lang” to the GHC command line options variable $GHC_OPTS, and (this one took me a while) the $TCLLIBDIR defaults as tcl/bin – things work out a lot better if you set it to tcl/lib
 
5. Run make install to build TclHaskell.
 
Under Windows 98, it didn’t always build everything, and then complained during the make. Just use the missing file as the target with make (e.g. if foo.o is missing, run make foo.o, then try make install again)
 
6. Put this ( http://www.dcs.gla.ac.uk/~sof/Makefile-dll ) into tcl/bin and rename it as makefile. Run make all here to generate a .a import library for each .dll in the directory. Copy libtcl*.a and libtk*.a to the directory that libHSTclHaskell.a was installed in. In my case, * = 84.
 
This process is taken from http://www.dcs.gla.ac.uk/~sof/ghc-win32-libs.html which gives the reason for doing this and a few notes on compiling .c programs.
 
7. Modify tclhaskell.conf.nt so that it points to the correct installation directory. Also modify the tcl/tk ld options to refer to the correct version of tcl-tk. They say -ltk83 referring to tk8.3
 
8. Modify the $PKGFILE variable in tclhaskell/makefile to point to
  path/to/package.conf where path/to/ points to the directory
  that GHC was installed in.
 
9. Run make pkg to install the TclHaskell package into GHC.

10. Now to compile the AMuZed / ZooM source. The following two lines do the trick:
    ghc --make –package TclHaskell –o AMuZed AMuZed.hs
    ghc --make –package
TclHaskell –o ZooM ZooM.hs

 
 
11. In order to run those AMuZed and ZooM, you’ll need to include the following two directories to your path: The directory where the TclHaskell makefile installed its .dll and .a files, and mingw/bin (for tcl84.dll and tk84.dll). Also set environment variable TCL_LIBRARY to ‘mingw\lib\tcl8.4’. This should be all you need.

** Compiling under Linux:
 
You’ll need:
 
GHC 5.00.2 ( http://www.haskell.org/ghc/ ).
 
Tcl/Tk ( www.tcl.tk ) - Both binaries and source are available.
 
TclHaskell 1.2 ( http://www.dcs.gla.ac.uk/~meurig/TclHaskell/ ). Quite simply lets you call Tcl/Tk through Haskell. Sadly, the last update was on 3 October 2001. 
 
AMuZed/ZooM source ( http://www.cs.waikato.ac.nz/Research/fm/amuzed.html ).
 
You’ll do:
 
-         Install GHC and Tcl/Tk. 
-         Compile TclHaskell1.2 + install. You’ll need access to GHC’s package.conf, which may need admin.
-          Now to compile the AMuZed / ZooM source. The following two lines do the trick:
    ghc --make –package TclHaskell –o AMuZed AMuZed.hs
    ghc --make –package TclHaskell –o ZooM ZooM.hs
-         Run either application under X11 using ./<app name>.

** Compiling under Mac OS X:
 
You’ll need:
 
GHC 5.04 ( http://www.haskell.org/ghc/ ). This is the first version with a Mac OSX installer. Thankfully, it doesn’t give some of the compile errors that the Linux 5.04 version gave.
 
Tcl/Tk ( http://www.apple.com/downloads/macosx/unix_open_source/tcltkaqua.html ) There’s a 15 meg, 5 meg and possibly a smaller one available. There is a note in the documentation about programs compiled under OS 10.1 vs. 10.2, but that doesn’t matter too much as X11 requires 10.3. You could build it from the source, but that’s tricky and time consuming.
 
TclHaskell 1.2 ( http://www.dcs.gla.ac.uk/~meurig/TclHaskell/ ). Quite simply lets you call Tcl/Tk through Haskell. Sadly, the last update was on 3 October 2001. There is no Mac makefile, so a Linux build will do. Check the include directories.
 
X11 ( http://www.apple.com/downloads/macosx/apple/x11formacosx.html ) “An implementation of the X Window System that makes it possible to run X11-based applications in Mac OS X.”
 
AMuZed/ZooM source ( http://www.cs.waikato.ac.nz/Research/fm/amuzed.html ).
 
You’ll do:
 
-         Install GHC, Tcl/Tk and X11. The .dmg installers are great, and will require admin priviledges.
-         Compile TclHaskell1.2 + install. You’ll need access to GHC’s package.conf, which may need admin.
-          Now to compile the AMuZed / ZooM source. The following two lines do the trick:
    ghc --make –package TclHaskell –o AMuZed AMuZed.hs
    ghc --make –package TclHaskell –o ZooM ZooM.hs

-         Run either application under X11 using ./<app name>.