2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-14 00:32:11 +00:00

boostbook.jam:

- Add support for HTML output (multiple files, with a manifest)
  - Add support for man page output (multiple files, with a manifest)


[SVN r17964]
This commit is contained in:
Douglas Gregor
2003-03-17 18:20:38 +00:00
parent 0c2d9952f1
commit 7965e13489

View File

@@ -1,4 +1,5 @@
import class : class new ;
import common ;
import targets ;
import feature ;
import generators ;
@@ -8,7 +9,7 @@ import regex ;
import scanner ;
feature.feature xsl:param : : free ;
feature.feature format : onehtml pdf ps docbook fo
feature.feature format : html onehtml man pdf ps docbook fo
: incidental implicit composite ;
type.register XML : xml ;
@@ -18,11 +19,16 @@ type.register FO : fo ;
type.register PDF : pdf ;
type.register PS : ps ;
type.register XSLT : xsl ;
type.register HTMLDIR ;
type.register MANPAGES ;
# Generates handle -> * rules a bit strangely, so don't try to use them for now
#generators.register-standard boostbook.xslt : XML XSLT : * ;
generators.register-standard boostbook.boostbook-to-docbook : XML : DOCBOOK ;
generators.register-standard boostbook.docbook-to-onehtml : DOCBOOK : HTML ;
generators.register-standard boostbook.docbook-to-htmldir : DOCBOOK : HTMLDIR ;
generators.register-standard boostbook.docbook-to-manpages : DOCBOOK : MANPAGES ;
generators.register-standard boostbook.docbook-to-fo : DOCBOOK : FO ;
generators.register-standard boostbook.fo-to-print : FO : PDF ;
generators.register-standard boostbook.fo-to-print : FO : PS ;
@@ -41,6 +47,27 @@ rule xslt ( target : source stylesheet : properties * )
xslt-xsltproc $(target) : $(source) ;
}
rule xslt-dir ( target : source stylesheet : properties * : dirname )
{
local flags ;
for local param in [ feature.get-values <xsl:param> : $(properties) ]
{
local namevalue = [ regex.split $(param) "=" ] ;
flags += --stringparam $(namevalue[1]) $(namevalue[2]) ;
}
# Make sure we create this path.
# TBD: this is NOT correct, but it works for now...
LOCATE on $(target) = $(dirname) ;
DEPENDS $(target) : $(dirname) ;
common.MkDir $(dirname) ;
STYLESHEET on $(target) = $(stylesheet) ;
FLAGS on $(target) = $(flags) ;
DIRECTORY on $(target) = $(dirname) ;
xslt-xsltproc-dir $(target) : $(source) ;
}
rule boostbook-to-docbook ( target : source : properties * )
{
local dir = [ modules.peek : BOOST_ROOT ] ;
@@ -53,6 +80,18 @@ rule docbook-to-onehtml ( target : source : properties * )
xslt $(target) : $(source) "$(dir)/tools/boostbook/xsl/html-single.xsl" : $(properties) ;
}
rule docbook-to-htmldir ( target : source : properties * )
{
local dir = [ modules.peek : BOOST_ROOT ] ;
xslt-dir $(target) : $(source) "$(dir)/tools/boostbook/xsl/html.xsl" : $(properties) : html ;
}
rule docbook-to-manpages ( target : source : properties * )
{
local dir = [ modules.peek : BOOST_ROOT ] ;
xslt-dir $(target) : $(source) "$(dir)/tools/boostbook/xsl/manpages.xsl" : $(properties) : man ;
}
rule docbook-to-fo ( target : source : properties * )
{
local dir = [ modules.peek : BOOST_ROOT ] ;
@@ -119,22 +158,47 @@ rule boostbook-target-class ( name : project : sources * : requirements *
local targets = ;
local type = none ;
local manifest ;
switch $(format)
{
case html :
{
type = HTMLDIR ;
manifest = HTML.manifest ;
}
case onehtml : type = HTML ;
case man :
{
type = MANPAGES ;
manifest = man.manifest ;
}
case docbook : type = DOCBOOK ;
case fo : type = FO ;
case pdf : type = PDF ;
case ps : type = PS ;
}
for local i in $(source-targets)
if $(manifest)
{
local target = [ generators.construct $(self.project)
: $(type) : $(property-set) : $(i) ] ;
# $(target).depends $(catalog) ;
targets += $(target) ;
for local i in $(source-targets)
{
local base-target = [ generators.construct $(self.project)
: DOCBOOK : $(property-set) : $(i) ] ;
local target = [ generators.construct $(self.project) $(manifest)
: $(type) : $(property-set) : $(base-target) ] ;
targets += $(target) ;
}
}
else {
for local i in $(source-targets)
{
local target = [ generators.construct $(self.project)
: $(type) : $(property-set) : $(i) ] ;
targets += $(target) ;
}
}
return $(targets) ;
@@ -159,6 +223,11 @@ actions xslt-xsltproc
XML_CATALOG_FILES=catalog.xml xsltproc $(FLAGS) --xinclude -o $(<) $(STYLESHEET) $(>)
}
actions xslt-xsltproc-dir
{
XML_CATALOG_FILES=catalog.xml xsltproc $(FLAGS) --xinclude -o $(DIRECTORY)/ $(STYLESHEET) $(>)
}
#############################################################################
# XML Catalog Generation
#############################################################################