# This file is maintained at http://git.mdcc.cx/caspar

caspar - Makefile snippets for common tasks

See doc/caspar.txt for general information about this package, see INSTALL
for generic installation instructions.

The caspar homepage is at http://mdcc.cx/caspar/ .  Feedback (bugs, feature
requests, etc.) can be sent to joostvb *dash* caspar *at* mdcc *dot* cx.

After install, directories /usr/local/share/doc/caspar/,
/usr/local/share/caspar/mk/ /usr/local/include/caspar/mk/
/usr/local/share/sgml/caspar/ are created and populated, and manpages caspar(7)
and caspar-typesetting(7) are installed.


- requirements, packages  - - - - - - - - - - - - - - - - - - - - - - - - -

GNU make.

For the typesetting functionality, one needs OpenJade, LaTeX, W3M, Ghostscript, and
Docbook DSSSL.

Debian and Ubuntu ship a packaged caspar.

If you're interested in a caspar RPM, the spec file on
http://mdcc.cx/pub/caspar/caspar.spec might be helpful.


- gimme some of the stuff you've been smoking!  - - - - - - - - - - - - - - - -

"What've you been smoking!?  A completely fullblown autoconfiscated tarball for
just a eeny weeny Makefile snippet, to be able to install my hosts
configuration files from CVS!?  I'm not gonna install that!  No way!"

Well, there's no accounting for taste...  If I use the same files on many
hosts, I prefer to install them from a tarball.  If you were asked to work with
a caspar-ized CVS tree, you can work around installing the tarball by doing
something like this:

 cd ~/cvs/kingkong/include

kingkong is a CVS module, holding files which should get installed on host
kingkong.

Create a file install.mk there, which looks like

 csp_UHOST = admin@kingkong.example.org
 include caspar/mk/caspar.mk

Now, do

 echo caspar >> .cvsignore
 mkdir -p caspar/mk

and copy caspar.mk to the just created directory caspar/mk/ .


- hacking on caspar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Since 2009-12, the caspar code is maintained using git on
http://git.mdcc.cx/caspar; start using it by running

 git clone http://git.mdcc.cx/caspar.git

.

Contact the author if you'd like to get commit messages in your mailbox.  I
might get to setting up a mailinglist for that.

(The page at http://alioth.debian.org/projects/caspar/ is no longer very
useful.)

- some thoughts on include path - - - - - - - - - - - - - - - - - - - - - - - -

The default GNU make include path is .:PREFIX/include:/usr/gnu/include:
/usr/local/include:/usr/include .  See make.info, node `Include'.  FHS however
says: '/usr/include [...] is where all of the system's general-use include
files for the C and C++ programming languages should be placed.'  This makes
GNU make somewhat incompatible with the FHS :( .  GNU make could better use
something like '/usr/share/mk' in its default include path.

We work around this by creating the following symlink when being 'make
install'-ed:

 /usr/local/include/caspar/mk/caspar.mk ->
                                    /usr/local/share/caspar/mk/caspar.mk

.

This enables us to be able to call

 include caspar/mk/caspar.mk

from a Makefile.


- some thoughts on implicit rules - - - - - - - - - - - - - - - - - - - - - - -

Add our implicit pattern rules to Make built-in implicit rules?

When no ./Makefile exists, but ./foo.c does, make knows what to do when asked
to ``make foo''.  Furthermore, in absence of ./Makefile, ``TEX=latex make
blah.dvi'' does something sane with blah.tex.

It'd be cool if we could add to Make's built-in implicit rules, and have our
implicit rules work, even if no Makefile exists in the current directory.
However, I don't think this is possible with current (3.80-6) Make.  The
built-in implicit rules are compiled in make binary, so adding the caspar ones
to some magic directory will likely not work.


