|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r68662 - trunk/tools/build/v2/tools
From: steven_at_[hidden]
Date: 2011-02-05 16:42:27
Author: steven_watanabe
Date: 2011-02-05 16:42:26 EST (Sat, 05 Feb 2011)
New Revision: 68662
URL: http://svn.boost.org/trac/boost/changeset/68662
Log:
Update boostbook configuration to allow parameters to be overridden. Also, add validation of parameters.
Text files modified:
trunk/tools/build/v2/tools/boostbook.jam | 177 +++++++++++++++++++++++++++++++++------
1 files changed, 147 insertions(+), 30 deletions(-)
Modified: trunk/tools/build/v2/tools/boostbook.jam
==============================================================================
--- trunk/tools/build/v2/tools/boostbook.jam (original)
+++ trunk/tools/build/v2/tools/boostbook.jam 2011-02-05 16:42:26 EST (Sat, 05 Feb 2011)
@@ -108,7 +108,53 @@
# The same about Jamfile main target rules.
IMPORT $(__name__) : boostbook : : boostbook ;
- }
+ }
+ else
+ {
+ if $(docbook-xsl-dir)
+ {
+ modify-config ;
+ .docbook-xsl-dir = [ path.make $(docbook-xsl-dir) ] ;
+ check-docbook-xsl-dir ;
+ }
+ if $(docbook-dtd-dir)
+ {
+ modify-config ;
+ .docbook-dtd-dir = [ path.make $(docbook-dtd-dir) ] ;
+ check-docbook-dtd-dir ;
+ }
+ if $(boostbook-dir)
+ {
+ modify-config ;
+ check-boostbook-dir $(boostbook-dir) ;
+ local boostbook-xsl-dir = [ path.glob $(boostbook-dir) : xsl ] ;
+ local boostbook-dtd-dir = [ path.glob $(boostbook-dir) : dtd ] ;
+ .boostbook-xsl-dir = $(boostbook-xsl-dir[1]) ;
+ .boostbook-dtd-dir = $(boostbook-dtd-dir[1]) ;
+ check-boostbook-xsl-dir ;
+ check-boostbook-dtd-dir ;
+ }
+ }
+}
+
+rule lock-config ( )
+{
+ if ! $(.initialized)
+ {
+ errors.user-error "BoostBook has not been configured." ;
+ }
+ if ! $(.config-locked)
+ {
+ .config-locked = true ;
+ }
+}
+
+rule modify-config ( )
+{
+ if $(.config-locked)
+ {
+ errors.user-error "BoostBook configuration cannot be changed after it has been used." ;
+ }
}
rule find-boost-in-registry ( keys * )
@@ -127,6 +173,88 @@
return $(boost-root) ;
}
+rule check-docbook-xsl-dir ( )
+{
+ if $(.docbook-xsl-dir)
+ {
+ if ! [ path.glob $(.docbook-xsl-dir) : common/common.xsl ]
+ {
+ errors.user-error "BoostBook: could not find docbook XSL stylesheets in:" [ path.native $(.docbook-xsl-dir) ] ;
+ }
+ else
+ {
+ if --debug-configuration in [ modules.peek : ARGV ]
+ {
+ ECHO "notice: BoostBook: found docbook XSL stylesheets in:" [ path.native $(.docbook-xsl-dir) ] ;
+ }
+ }
+ }
+}
+
+rule check-docbook-dtd-dir ( )
+{
+ if $(.docbook-dtd-dir)
+ {
+ if ! [ path.glob $(.docbook-dtd-dir) : docbookx.dtd ]
+ {
+ errors.user-error "error: BoostBook: could not find docbook DTD in:" [ path.native $(.docbook-dtd-dir) ] ;
+ }
+ else
+ {
+ if --debug-configuration in [ modules.peek : ARGV ]
+ {
+ ECHO "notice: BoostBook: found docbook DTD in:" [ path.native $(.docbook-dtd-dir) ] ;
+ }
+ }
+ }
+}
+
+rule check-boostbook-xsl-dir ( )
+{
+ if ! $(.boostbook-xsl-dir)
+ {
+ errors.user-error "error: BoostBook: could not find boostbook XSL stylesheets." ;
+ }
+ else if ! [ path.glob $(.boostbook-xsl-dir) : docbook.xsl ]
+ {
+ errors.user-error "error: BoostBook: could not find docbook XSL stylesheets in:" [ path.native $(.boostbook-xsl-dir) ] ;
+ }
+ else
+ {
+ if --debug-configuration in [ modules.peek : ARGV ]
+ {
+ ECHO "notice: BoostBook: found boostbook XSL stylesheets in:" [ path.native $(.boostbook-xsl-dir) ] ;
+ }
+ }
+}
+
+rule check-boostbook-dtd-dir ( )
+{
+ if ! $(.boostbook-dtd-dir)
+ {
+ errors.user-error "error: BoostBook: could not find boostbook DTD." ;
+ }
+ else if ! [ path.glob $(.boostbook-dtd-dir) : boostbook.dtd ]
+ {
+ errors.user-error "error: BoostBook: could not find boostbook DTD in:" [ path.native $(.boostbook-dtd-dir) ] ;
+ }
+ else
+ {
+ if --debug-configuration in [ modules.peek : ARGV ]
+ {
+ ECHO "notice: BoostBook: found boostbook DTD in:" [ path.native $(.boostbook-dtd-dir) ] ;
+ }
+ }
+}
+
+rule check-boostbook-dir ( boostbook-dir ? )
+{
+ if $(boostbook-dir) && ! [ path.glob $(boostbook-dir) : xsl ]
+ {
+ errors.user-error "error: BoostBook: could not find boostbook in:" [ path.native $(boostbook-dir) ] ;
+ }
+}
+
rule find-tools ( docbook-xsl-dir ? : docbook-dtd-dir ? : boostbook-dir ? )
{
docbook-xsl-dir ?= [ modules.peek : DOCBOOK_XSL_DIR ] ;
@@ -234,101 +362,89 @@
.boostbook-xsl-dir = $(boostbook-xsl-dir[1]) ;
.boostbook-dtd-dir = $(boostbook-dtd-dir[1]) ;
- if --debug-configuration in [ modules.peek : ARGV ]
- {
- if $(.docbook-xsl-dir)
- {
- ECHO "notice: Boost.Book: found docbook XSL stylesheets in:" [ path.native $(.docbook-xsl-dir) ] ;
- }
- if $(.docbook-dtd-dir)
- {
- ECHO "notice: Boost.Book: found docbook DTD in:" [ path.native $(.docbook-dtd-dir) ] ;
- }
- if $(.boostbook-xsl-dir)
- {
- ECHO "notice: Boost.Book: found boostbook XSL stylesheets in:" [ path.native $(.boostbook-xsl-dir) ] ;
- }
- if $(.boostbook-dtd-dir)
- {
- ECHO "notice: Boost.Book: found boostbook DTD in:" [ path.native $(.boostbook-dtd-dir) ] ;
- }
- }
-
- if ! $(.boostbook-xsl-dir) || ! $(.boostbook-dtd-dir)
- {
- errors.warning
- "couldn't find BoostBook xsl or dtd directories;"
- : please set \"BOOST_ROOT\" variable to the root directory of
- your boost installation. Searched in:
- : $(boostbook-dir:J="
-") ;
- }
+ check-boostbook-dir $(boostbook-dir) ;
+ check-docbook-xsl-dir ;
+ check-docbook-dtd-dir ;
+ check-boostbook-xsl-dir ;
+ check-boostbook-dtd-dir ;
}
rule xsl-dir
{
+ lock-config ;
return $(.boostbook-xsl-dir) ;
}
rule dtd-dir
{
+ lock-config ;
return $(.boostbook-dtd-dir) ;
}
rule docbook-xsl-dir
{
+ lock-config ;
return $(.docbook-xsl-dir) ;
}
rule docbook-dtd-dir
{
+ lock-config ;
return $(.docbook-dtd-dir) ;
}
rule dtdxml-to-boostbook ( target : source : properties * )
{
+ lock-config ;
xslt $(target) : $(source) "$(.boostbook-xsl-dir)/dtd/dtd2boostbook.xsl"
: $(properties) ;
}
rule boostbook-to-docbook ( target : source : properties * )
{
+ lock-config ;
local stylesheet = [ path.native $(.boostbook-xsl-dir)/docbook.xsl ] ;
xslt $(target) : $(source) $(stylesheet) : $(properties) ;
}
rule docbook-to-onehtml ( target : source : properties * )
{
+ lock-config ;
local stylesheet = [ path.native $(.boostbook-xsl-dir)/html-single.xsl ] ;
xslt $(target) : $(source) $(stylesheet) : $(properties) ;
}
rule docbook-to-htmldir ( target : source : properties * )
{
+ lock-config ;
local stylesheet = [ path.native $(.boostbook-xsl-dir)/html.xsl ] ;
xslt-dir $(target) : $(source) $(stylesheet) : $(properties) : html ;
}
rule docbook-to-xhtmldir ( target : source : properties * )
{
+ lock-config ;
local stylesheet = [ path.native $(.boostbook-xsl-dir)/xhtml.xsl ] ;
xslt-dir $(target) : $(source) $(stylesheet) : $(properties) : xhtml ;
}
rule docbook-to-htmlhelp ( target : source : properties * )
{
+ lock-config ;
local stylesheet = [ path.native $(.boostbook-xsl-dir)/html-help.xsl ] ;
xslt-dir $(target) : $(source) $(stylesheet) : $(properties) : htmlhelp ;
}
rule docbook-to-manpages ( target : source : properties * )
{
+ lock-config ;
local stylesheet = [ path.native $(.boostbook-xsl-dir)/manpages.xsl ] ;
xslt-dir $(target) : $(source) $(stylesheet) : $(properties) : man ;
}
rule docbook-to-fo ( target : source : properties * )
{
+ lock-config ;
local stylesheet = [ path.native $(.boostbook-xsl-dir)/fo.xsl ] ;
xslt $(target) : $(source) $(stylesheet) : $(properties) ;
}
@@ -598,6 +714,7 @@
rule boostbook-to-tests ( target : source : properties * )
{
+ lock-config ;
local boost_root = [ modules.peek : BOOST_ROOT ] ;
local native-path =
[ path.native [ path.join $(.boostbook-xsl-dir) testing Jamfile ] ] ;
Boost-Commit 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