On Jul 23, 2008, at 3:48 PM, Glynn Clements wrote:

Michael Barton wrote:

Something else to keep in mind. The header I posted is needed by Togl
I think. But I also think that it is 8.5 only.

Do you mean that the packages for earlier versions don't include
tkMacOSXInt.h? Togl definitely requires that header, so if it's only
available with 8.5, then your only choice is 8.5.

Which means that you have to link against 8.5.

OSX 10.5's system TclTk 8.4 includes this, there's a PrivateHeaders folder in the framework that's an alias to Headers/tk-private. OSX 10.4 didn't include it.

I'm not sure how OSX handles shared library versions.

On Linux, a library named e.g. libtk.so will normally be a symlink to
the actual library, which will include the version number. The linker
embeds the versioned library name in the executable, and that is used
for locating the library at run time. The unversioned symlink is only
needed at compile time (and many distributions keep the symlink in the
-devel package, along with the headers).

The end result is that you can have multiple versions of a library
installed, and control which version is used at compile time (without
affecting the loading of libraries at run time) by changing the
unversioned symlink.

If OSX is similar, then you may just be able to delete the symlinks
for the older versions.

Compiling does make use of symlinks to current versions. For unix libraries, it's the same. But for frameworks it's in the framework folder layout. Since frameworks are complete packages of a library, different versions can simply be in a different location.

ie, to override the system tcltk framework v8.4 with your own 8.5, just install yours in /Library/Framworks and it will be found first, if -framework link flags are used.

Yet, even system frameworks that are unix ports often have symlinks in /usr/lib, so you need to make sure that you have -L/path/to/your/ lib in the linking, or link the framework directly instead of the library with -framework FWName.

Alternatively, you could try changing the linking command in
visualization/nviz/src/Makefile, moving XTRA_LDFLAGS (which will
contain the --with-tcltk-libs= directory) to the beginning of the
command, so that it takes precedence over other directories (where the
8.4 libraries are presumably being found by accident).

Or in include/make/platform.make, replace the TCLTKLIBS line with:

TCLTKLIBS = -framework Tcl -framework Tk

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

"Mon Dieu! but they are all alike. Cheating, murdering, lying, fighting, and all for things that the beasts of the jungle would not deign to possess - money to purchase the effeminate pleasures of weaklings. And yet withal bound down by silly customs that make them slaves to their unhappy lot while firm in the belief that they be the lords of creation enjoying the only real pleasures of existence....

- the wisdom of Tarzan


_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to