[GRASS-dev] building TclTk 8.4 for 64bit OSX 10.5

For any who are interested, here is how I was able to get TclTk 8.4 to build 64bit on OSX 10.5 (Leopard). Note that building the default 32bit on Leopard works without problems (see the macosx/readme.rtf in the GRASS source). TclTk 8.5 builds 64bits, but the GUI doesn't work.

You need at least TclTk 8.4.16. The 64bit build options are only partially complete in 8.4.16. Tcl is done, but Tk needs help. To make it simpler, build both using the ccub trick.

The ccub trick is the key. The problem is that the Tk configure forcibly strips out any 64bit arch flags you add. But it still builds OK in 64bits. With the ccub trick, it doesn't see the arch flags.

Here is the basic ccub info:

http://www.macosxhints.com/article.php?story=20061025213851279

You can customize ccub and c++ub to make 64bit universal and 32+64bit universal versions. I have these (plus their c++ub companions):

ccub_t 32bit universal, uses the Tiger SDK
ccub_l 32bit universal, uses the Leopard SDK
ccub_64 64bit universal
ccub_3264 32+64bit universal (quad-arch)

It's simple to customize the ccub.c and c++ub.c sources for these, just change the ubflags at the top. Valid arch choices are ppc, i386, ppc64 and x86_64. The 64bit variations can only use the Leopard SDK (MacOSX10.5.sdk).

So, for a 64bit TclTk, using the 64bit ccub above, installed in /usr/local/bin:

- Tcl:

CC=ccub_64 ./configure --prefix=/usr/local/tcltk --enable-threads
make
sudo make install

-Tk:

CC=ccub_64 ./configure --prefix=/usr/local/tcltk --enable-threads --with-x --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib --with-tcl=/usr/local/tcltk
make
sudo make install

-----
William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
http://www.kyngchaos.com/

First Pogril: Why is life like sticking your head in a bucket filled with hyena offal?
Second Pogril: I don't know. Why IS life like sticking your head in a bucket filled with hyena offal?
First Pogril: I don't know either. Wretched, isn't it?

-HitchHiker's Guide to the Galaxy