[GRASS5] installer for GRASS libs

Hi everyone,

I am still working on the GEM installer program and need
some help regarding installation of externally compiled
libraries for GRASS 6:

which of the GRASS Makefiles is responsible for copying include
files into place? Where do I have to place include files so
they will get copied to /usr/local/grass-6.0.0/include when
doing "make install"? Does the make system also recursively copy
directories with contents or just *.h files in the top level.

Thanks,

Benjamin.

On Mon, 2005-05-09 at 15:32 +0200, benducke@compuserve.de wrote:

Hi everyone,

I am still working on the GEM installer program and need
some help regarding installation of externally compiled
libraries for GRASS 6:

which of the GRASS Makefiles is responsible for copying include
files into place? Where do I have to place include files so
they will get copied to /usr/local/grass-6.0.0/include when
doing "make install"? Does the make system also recursively copy
directories with contents or just *.h files in the top level.

the 'configure' script is used to create:
- include/Make/Grass.make
- include/Make/Platform.make
- include/version.h
- include/winname.h

The toplevel Makefile is responsible for copying headers into place (in
fact, it is responsible for installation of all files).

If you scroll down to the 'install:' section of Makefile you will see
that various directories are tarballed and extracted into the
installation directory. And yes, they are tarred recursively.

--
Brad Douglas <rez@touchofmadness.com>

benducke@compuserve.de wrote:

I am still working on the GEM installer program and need
some help regarding installation of externally compiled
libraries for GRASS 6:

which of the GRASS Makefiles is responsible for copying include
files into place?

The "headers" target in lib/Makefile copies them into
dist.<arch>/include. The "real-install" target in the top-level
Makefile copies everything under dist.<arch> into the final location.

Where do I have to place include files so
they will get copied to /usr/local/grass-6.0.0/include when
doing "make install"?

The "headers" target in lib/Makefile copies:

  FROM TO
  include/*.h dist.<arch>/include
  include/*.h dist.<arch>/include/grass
  include/vect/*.h dist.<arch>/include/vect
  include/vect/*.h dist.<arch>/include/grass/vect

The "real-install" target in the top-level Makefile copies the entire
tree under dist.<arch>/include to the final location.

Does the make system also recursively copy directories with contents
or just *.h files in the top level.

The first stage only copies *.h and vect/*.h to the dist.<arch>
directory; "make install" copies the entire tree.

--
Glynn Clements <glynn@gclements.plus.com>

benducke@compuserve.de wrote:

Hi everyone,

I am still working on the GEM installer program and need
some help regarding installation of externally compiled
libraries for GRASS 6:

which of the GRASS Makefiles is responsible for copying include
files into place? Where do I have to place include files so
they will get copied to /usr/local/grass-6.0.0/include when
doing "make install"? Does the make system also recursively copy
directories with contents or just *.h files in the top level.

To avoid conflicts, the GRASS header files should be installed in include/grass directory and included as

#include "grass/gis.h"

we are in transition and you can find old files using #include "gis.h" but all new files should use the new location.

Radim

Radim Blazek wrote:

> I am still working on the GEM installer program and need
> some help regarding installation of externally compiled
> libraries for GRASS 6:
>
> which of the GRASS Makefiles is responsible for copying include
> files into place? Where do I have to place include files so
> they will get copied to /usr/local/grass-6.0.0/include when
> doing "make install"? Does the make system also recursively copy
> directories with contents or just *.h files in the top level.

To avoid conflicts, the GRASS header files should be installed in
include/grass directory and included as

#include "grass/gis.h"

That should be:

  #include <grass/gis.h>

Using quotes causes the preprocessor to look for the file relative to
the directory containing the source file, before the directories
specified by -I switches and the system include directories.

IOW, quotes should only be used for headers which are in the same
directory as the source file.

--
Glynn Clements <glynn@gclements.plus.com>