[GRASS5] 5.3 shared libraries and other experimental changes

Paul Kelly paul-grass at stjohnspoint.co.uk
Mon Jan 5 07:50:23 EST 2004

Hello everyone
I made some changes to the 5.3 CVS that are quite experimental and will
probably break some things. However it allows to build the core GRASS
libraries as shared, which hugely reduces the size of the binary

Please test it by adding the following option to the configure script:

This enables the alternate build mechanism, and I made some changes to the
Makefiles and used a more up-to-date version of the SC_CONFIG_CFLAGS macro
from the 5.7 aclocal.m4 (I took the latest from the Tcl CVS). This
SC_CONFIG_CFLAGS seems to have already fixed a lot of the issues discussed
in bug 2232 http://intevation.de/rt/webrt?serial_num=2232&display=History

I also added a section for Cygwin. This does not work currently as there
are problems with circular dependencies and resulting undefined symbols
when compiling libraries. In particular the dig2 and vect libraries had
circular dependencies. I didn't look into this more but it may just be a
compiler/linker flag we need like the "-undefined suppress" on OSX. There
was a new version of the OSX flags in Tcl but I commented this and copied
Markus's tried and tested version instead. Somebody could try changing
these flags just to see what happens if they have time.

r.terraflow doesn't compile properly also as its Gmakefile is non-standard
and the mk/genmake.sed conversion filter doesn't work on it. So it can't
be compiled with the alternate build mechanism.

If you wish to use the alternate build mechanism to build static
libraries, add --enable-shared=no as well. (--enable-shared=yes is the

Feel free to fix up and tidy the changes I have made. Seems to work on
Linux (Red Hat 9) and IRIX (6.2) but I haven't tested anywhere else and
much needs tidied anyway. E.g. generating the makefiles for the alternate
build mechanism only needs to be done once but is done every time the
configure script is run, the way I have left it.

Other changes I made were

1) Change the name of the start-up script to grass53 (also for gmake and
gmakelinks). This is quite an important change and should probably go
higher up in this mail or maybe to the users' list.

2) Make --with-gdal the default as there are now several reports that the
gdalbridge code doesn't work.

3) Re-generate the binary nadgrids datum transformation files when
installing a binary distribution, as these are architecture-specific

(For the alternate build mechanism make must be run from a separate build
directory; for make bindist and make srcdist you need to change back to
the top-level source directory and run make there.)

Something I kind of removed was that with mk/mid.mk.shlib (the old shared
library mechanism) the shared libraries had nice version numbers as part
of the filenames. SC_CONFIG_CFLAGS seems to put version numbers in for
some platforms but not very many. I hope it is all right without them as
the GRASS libraries will all be in their own version-specific
sub-directory anyway.

Please test with ./configure --enable-gmake=no and I would hope to make
this the default before the 5.3.0 release.
I will try to fix any bugs I have introduced with these changes but feel
free to tidy things and help with the Cygwin shared dll problem and
r.terraflow's Gmakefile would be much appreciated as well.


More information about the grass-dev mailing list