Boost logo

Boost-Build :

From: Douglas Gregor (gregod_at_[hidden])
Date: 2003-03-17 13:50:39


On Friday 14 March 2003 03:24 am, Vladimir Prus wrote:
> > > > If "target" is a normal file, then it's just a normal target in
> > > > Jam. If "target" is a directory, it would have to be a pseudo-target
> > > > because we can't generally guess at what the output files will be to
> > > > build a target set.
> > >
> > > One gotcha here: if we generate a directory, then I don't know any
> > > way to track dependencies. I would assume that timestamp of directory
> > > is changed whenver anything in it changes, but it's not so :-(
> >
> > I could generate a manifest file in the output directory. Then the
> > manifest timestamp could be used instead of the directory timestamp.
> > Actually, a manifest file is a good idea anyway for "clean" targets and,
> > eventually, installation.
>
> "I could" means you can teach your stylesheet to do that? It will be very
> good.

'Tis done now, but not (IMHO) cleanly. HTML (multiple files) and man pages are
now supported in the BoostBook module. Here's how I did it:

- Added HTMLDIR and MANPAGES types, but with no extension because they won't
really by files.
- When creating targets of type HTMLDIR (or MANPAGES) from a BoostBook
document:
1) Create a DocBook target (a single file) like we normally would
2) Create a HTMLDIR (or MANPAGES) target whose source is the DocBook file,
and override the name to be the name of the manifest file
3) The DocBook -> HTML (multiple files) and DocBook -> man pages actions
call a special version of the XSLT rule that also accepts a directory name
('html' for HTML, 'man' for man pages).

Everything seems to be working well. There are a few things that bother me:
- BBv2 correctly looks for 'html/HTML.manifest' (or 'man/man,manifest'), but
I've only given it the name 'manifest'. I'm guessing this comes from the
"format" parameter name, but it's at least a little scary how this just
magically works :). Also, the rest of the path that is used for single files
(e.g., bin/gcc/debug/boost.docbook) doesn't show up. That's good, but I don't
see where it went...

- Not sure how to handle "clean" targets here

- The whole thing just feels like a hack to me. Or maybe I'm paranoid?

Still no clue how to handle catalogs, unfortunately :(

Doug

 


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk