[GRASS-dev] make install targets?
Glynn Clements
glynn at gclements.plus.com
Sun Jul 5 17:49:52 EDT 2009
Markus Neteler wrote:
> > Either way, any Makefile whose "default" rule isn't simply
> > "default: cmd", "default: lib", etc will need a custom "install"
> > target to install the additional files.
>
> I.e. the "multi" targets and maybe more.
Makefiles which rely upon one of the *.make files to do most of the
work aren't really significant. The main issue is that many libraries
and modules have support files which get installed, usually under
$(ARCH_DISTDIR)/etc. Each such Makefile will need a custom install
target which installs those files from $(ARCH_DISTDIR) to $(INST_DIR).
The actual installation rule can be generalised to something like:
$(INST_DIR)/%: $(ARCH_DISTDIR)/%
-test -d $(dir $@) || $(MKDIR) $(dir $@)
if [ -x $< ] ; then $(INSTALL) $< $@ ; else $(INSTALL_DATA) $< $@ ; fi
But the module still needs to specify which files need to be installed
by the install target. This might be as simple as defining an
EXTRA_FILES variable, but it still has to be done in each Makefile.
> >> > Wouldn't it be simpler to just point ARCH_DISTDIR at the installed
> >> > version?
> >>
> >> Still no clue how to do that.
> >
> > make ARCH_DISTDIR=/usr/local/grass-7.0svn
> >
> > The main issue here is that it won't use the files in dist.<arch>, but
> > will re-create them, e.g. modules and libraries will be re-linked,
> > HTML files will be re-generated, etc.
>
> You mean also for GRASS 6?
I don't know how well setting ARCH_DISTDIR it will work in GRASS 6.
I recently made a large number of changes to the Makefiles to separate
ARCH_DISTDIR, GISBASE, and RUN_GISBASE. The aim was to allow building
individual directories using an installed version, rather than having
to build the entire source tree, having GISBASE and MODULE_TOPDIR
pointing to e.g. /usr/local/grass-7.0.svn but with ARCH_DISTDIR
pointing to $srcdir/dist.$ARCH. But the reverse should also work.
Essentially, GISBASE is used to find existing files (libraries,
headers, etc) while ARCH_DISTDIR determines where new files are
created.
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-dev
mailing list