|
Boost-Commit : |
From: jurko.gospodnetic_at_[hidden]
Date: 2008-06-08 17:55:18
Author: jurko
Date: 2008-06-08 17:55:16 EDT (Sun, 08 Jun 2008)
New Revision: 46258
URL: http://svn.boost.org/trac/boost/changeset/46258
Log:
Removed empty internal Boost Build __test__ rules. Made remaining __test__ rules be non-local to correct a defect introduced during last internal testing system reorganization with local __test__ rules not getting called. Minor stylistic changes.
Text files modified:
trunk/tools/build/v2/build/feature.jam | 2
trunk/tools/build/v2/build/project.jam | 6
trunk/tools/build/v2/build/property.jam | 21 ++
trunk/tools/build/v2/build/toolset.jam | 2
trunk/tools/build/v2/kernel/class.jam | 2
trunk/tools/build/v2/kernel/modules.jam | 2
trunk/tools/build/v2/tools/stage.jam | 35 ++++
trunk/tools/build/v2/util/container.jam | 2
trunk/tools/build/v2/util/doc.jam | 281 +++++++++++++++++++++------------------
trunk/tools/build/v2/util/print.jam | 134 +++++++++---------
trunk/tools/build/v2/util/sequence.jam | 2
trunk/tools/build/v2/util/utility.jam | 2
12 files changed, 283 insertions(+), 208 deletions(-)
Modified: trunk/tools/build/v2/build/feature.jam
==============================================================================
--- trunk/tools/build/v2/build/feature.jam (original)
+++ trunk/tools/build/v2/build/feature.jam 2008-06-08 17:55:16 EDT (Sun, 08 Jun 2008)
@@ -1090,7 +1090,7 @@
# Tests of module feature.
#
-local rule __test__ ( )
+rule __test__ ( )
{
# Use a fresh copy of the feature module.
prepare-test feature-test-temp ;
Modified: trunk/tools/build/v2/build/project.jam
==============================================================================
--- trunk/tools/build/v2/build/project.jam (original)
+++ trunk/tools/build/v2/build/project.jam 2008-06-08 17:55:16 EDT (Sun, 08 Jun 2008)
@@ -1031,9 +1031,3 @@
}
}
}
-
-
-local rule __test__ ( )
-{
- import assert ;
-}
Modified: trunk/tools/build/v2/build/property.jam
==============================================================================
--- trunk/tools/build/v2/build/property.jam (original)
+++ trunk/tools/build/v2/build/property.jam 2008-06-08 17:55:16 EDT (Sun, 08 Jun 2008)
@@ -18,6 +18,7 @@
# Refines 'properties' by overriding any non-free and non-conditional properties
# for which a different value is specified in 'requirements'. Returns the
# resulting list of properties.
+#
rule refine ( properties * : requirements * )
{
local result ;
@@ -88,6 +89,7 @@
# Removes all conditional properties whose conditions are not met. For those
# with met conditions, removes the condition. Properties in conditions are
# looked up in 'context'.
+#
rule evaluate-conditionals-in-context ( properties * : context * )
{
local base ;
@@ -165,6 +167,7 @@
# Helper for as-path, below. Orders properties with the implicit ones first, and
# within the two sections in alphabetical order of feature name.
+#
local rule path-order ( x y )
{
if $(y:G) && ! $(x:G)
@@ -219,6 +222,7 @@
# Returns a path representing the given expanded property set.
+#
rule as-path ( properties * )
{
local entry = .result.$(properties:J=-) ;
@@ -250,6 +254,7 @@
# Exit with error if property is not valid.
+#
local rule validate1 ( property )
{
local msg ;
@@ -307,6 +312,7 @@
# Expands any implicit property values in the given property 'specification' so
# they explicitly state their feature.
+#
rule make ( specification * )
{
local result ;
@@ -332,6 +338,7 @@
# Returns a property set containing all the elements in 'properties' that do not
# have their attributes listed in 'attributes'.
+#
rule remove ( attributes + : properties * )
{
local result ;
@@ -348,6 +355,7 @@
# Returns a property set containing all the elements in 'properties' that have
# their attributes listed in 'attributes'.
+#
rule take ( attributes + : properties * )
{
local result ;
@@ -363,6 +371,7 @@
# Selects properties corresponding to any of the given features.
+#
rule select ( features * : properties * )
{
local result ;
@@ -384,6 +393,7 @@
# Returns a modified version of properties with all values of the given feature
# replaced by the given value. If 'value' is empty the feature will be removed.
+#
rule change ( properties * : feature value ? )
{
local result ;
@@ -406,6 +416,7 @@
# property. E.g. <variant>debug,<toolset>gcc:<inlining>full will become
# <variant>debug,<toolset>gcc <inlining>full. Otherwise, returns an empty
# string.
+#
rule split-conditional ( property )
{
local m = [ MATCH "(.+):<(.+)" : $(property) ] ;
@@ -419,6 +430,7 @@
# Interpret all path properties in 'properties' as relative to 'path'. The
# property values are assumed to be in system-specific form, and will be
# translated into normalized form.
+#
rule translate-paths ( properties * : path )
{
local result ;
@@ -456,6 +468,7 @@
# in 'context-module'. Such rules can be either local to the module or global.
# Converts such values into 'indirect-rule' format (see indirect.jam), so they
# can be called from other modules.
+#
rule translate-indirect ( specification * : context-module )
{
local result ;
@@ -498,6 +511,7 @@
# Class which maintains a property set -> string mapping.
+#
class property-map
{
import errors ;
@@ -509,7 +523,8 @@
self.next-flag = 1 ;
}
- # Associate 'value' with 'properties'
+ # Associate 'value' with 'properties'.
+ #
rule insert ( properties + : value )
{
self.all-flags += $(self.next-flag) ;
@@ -522,6 +537,7 @@
# Returns the value associated with 'properties' or any subset of it. If
# more than one subset has a value assigned to it, returns the value for the
# longest subset, if it's unique.
+ #
rule find ( properties + )
{
return [ find-replace $(properties) ] ;
@@ -529,6 +545,7 @@
# Returns the value associated with 'properties'. If 'value' parameter is
# given, replaces the found value.
+ #
rule find-replace ( properties + : value ? )
{
# First find all matches
@@ -558,7 +575,7 @@
}
-local rule __test__ ( )
+rule __test__ ( )
{
import assert ;
import "class" : new ;
Modified: trunk/tools/build/v2/build/toolset.jam
==============================================================================
--- trunk/tools/build/v2/build/toolset.jam (original)
+++ trunk/tools/build/v2/build/toolset.jam 2008-06-08 17:55:16 EDT (Sun, 08 Jun 2008)
@@ -484,7 +484,7 @@
}
-local rule __test__ ( )
+rule __test__ ( )
{
import assert ;
local p = <b>0 <c>1 <d>2 <e>3 <f>4 ;
Modified: trunk/tools/build/v2/kernel/class.jam
==============================================================================
--- trunk/tools/build/v2/kernel/class.jam (original)
+++ trunk/tools/build/v2/kernel/class.jam 2008-06-08 17:55:16 EDT (Sun, 08 Jun 2008)
@@ -159,7 +159,7 @@
}
-local rule __test__ ( )
+rule __test__ ( )
{
import assert ;
import "class" : new ;
Modified: trunk/tools/build/v2/kernel/modules.jam
==============================================================================
--- trunk/tools/build/v2/kernel/modules.jam (original)
+++ trunk/tools/build/v2/kernel/modules.jam 2008-06-08 17:55:16 EDT (Sun, 08 Jun 2008)
@@ -324,7 +324,7 @@
IMPORT modules : $(globalize) : : modules.$(globalize) ;
-local rule __test__ ( )
+rule __test__ ( )
{
import assert ;
import modules : normalize-raw-paths ;
Modified: trunk/tools/build/v2/tools/stage.jam
==============================================================================
--- trunk/tools/build/v2/tools/stage.jam (original)
+++ trunk/tools/build/v2/tools/stage.jam 2008-06-08 17:55:16 EDT (Sun, 08 Jun 2008)
@@ -22,6 +22,14 @@
feature.feature <install-dependencies> : off on : incidental ;
feature.feature <install-type> : : free incidental ;
feature.feature <install-source-root> : : free path ;
+# <install-target-root> must not be a path feature since it always specifies a
+# path relative to the install action's <location> property and not the Jamfile.
+# TODO: We should find a way to make this feature be converted to the internal
+# path format when specified from the outside as a command line parameter but be
+# interpreted as already being in internal path format when read from the
+# Jamfile. However, unlike 'path' features these values should not be rebased to
+# point to their target relative to the Jamfile location.
+feature.feature <install-target-root> : : free ;
feature.feature <so-version> : : free incidental ;
# If 'on', version symlinks for shared libraries will not be created. Affects
@@ -117,6 +125,30 @@
ps-raw += $(d:G=<install-source-root>) ;
}
+ local d = [ $(build-property-set).get <install-target-root> ] ;
+ if $(d)
+ {
+ # We need to manually convert the <install-target-root> property
+ # value into internal Boost Build path representation since its
+ # feature does not represent a path relative to the project's
+ # Jamfile and so could not be marked with the 'path' attribute.
+ d = [ path.make $(d) ] ;
+ if [ path.is-rooted $(d) ]
+ {
+ local error-message =
+ "The <install-target-root> property must specify a relative"
+ "and not an absolute path. That is the path prepended to"
+ "all target names installed with this property." ;
+ if ! ( "--debug-building" in [ modules.peek : ARGV ] )
+ {
+ error-message += "Use the --debug-building command line"
+ "option to get more detailed information." ;
+ }
+ errors.user-error $(error-message) ;
+ }
+ }
+ ps-raw += $(d:G=<install-target-root>) ;
+
if $(ps-raw)
{
return [ property-set.create $(ps-raw) ] ;
@@ -290,6 +322,7 @@
local new-a = [ new non-scanning-action $(source) : common.copy :
$(properties) ] ;
+ local target-root = [ $(properties).get <install-target-root> ] ;
local source-root = [ $(properties).get <install-source-root> ] ;
if $(source-root)
{
@@ -309,7 +342,7 @@
# need to explicitly check that relative is not ".", otherwise we might get
# paths like '<prefix>/boost/.', try to create it and mkdir would obviously
# fail.
- name = [ path.join $(relative) $(name:D=) ] ;
+ name = [ path.join $(target-root) $(relative) $(name:D=) ] ;
return [ new file-target $(name) exact : [ $(source).type ] : $(project) :
$(new-a) ] ;
Modified: trunk/tools/build/v2/util/container.jam
==============================================================================
--- trunk/tools/build/v2/util/container.jam (original)
+++ trunk/tools/build/v2/util/container.jam 2008-06-08 17:55:16 EDT (Sun, 08 Jun 2008)
@@ -242,7 +242,7 @@
}
-local rule __test__ ( )
+rule __test__ ( )
{
import assert ;
import "class" : new ;
Modified: trunk/tools/build/v2/util/doc.jam
==============================================================================
--- trunk/tools/build/v2/util/doc.jam (original)
+++ trunk/tools/build/v2/util/doc.jam 2008-06-08 17:55:16 EDT (Sun, 08 Jun 2008)
@@ -17,6 +17,7 @@
import sequence ;
import path ;
+
# The type of output to generate.
# "console" is formated text echoed to the console (the default);
# "text" is formated text appended to the output file;
@@ -24,9 +25,10 @@
#
help-output = console ;
-# The file to output documentation to when generating "text" or "html"
-# help. This is without extension as the extension is determined by the
-# type of output.
+
+# The file to output documentation to when generating "text" or "html" help.
+# This is without extension as the extension is determined by the type of
+# output.
#
help-output-file = help ;
@@ -39,45 +41,43 @@
#
.option.detailed ?= ;
-# Generate debug output as the help is generated and modules
-# are parsed.
+# Generate debug output as the help is generated and modules are parsed.
#
.option.debug ?= ;
# Enable or disable a documentation option.
#
local rule set-option (
- option # The option name.
- : value ? # Enabled (non-empty), or disabled (empty)
- )
+ option # The option name.
+ : value ? # Enabled (non-empty), or disabled (empty)
+)
{
.option.$(option) = $(value) ;
}
+
# Set the type of output.
#
-local rule set-output (
- type
- )
+local rule set-output ( type )
{
help-output = $(type) ;
}
+
# Set the output to a file.
#
-local rule set-output-file (
- file
- )
+local rule set-output-file ( file )
{
help-output-file = $(file) ;
}
-# Extracts the brief comment from a complete comment. The brief
-# comment is the first sentence.
+
+# Extracts the brief comment from a complete comment. The brief comment is the
+# first sentence.
#
local rule brief-comment (
- docs * # The comment documentation.
- )
+ docs * # The comment documentation.
+)
{
local d = $(docs:J=" ") ;
local p = [ MATCH ".*([.])$" : $(d) ] ;
@@ -93,12 +93,13 @@
return $(brief:J="") ;
}
+
# Specifies the documentation for the current module.
#
local rule set-module-doc (
- module-name ? # The name of the module to document.
- : docs * # The documentation for the module.
- )
+ module-name ? # The name of the module to document.
+ : docs * # The documentation for the module.
+)
{
module-name ?= * ;
@@ -111,12 +112,13 @@
}
}
+
# Specifies the documentation for the current module.
#
local rule set-module-copyright (
- module-name ? # The name of the module to document.
- : copyright * # The copyright for the module.
- )
+ module-name ? # The name of the module to document.
+ : copyright * # The copyright for the module.
+)
{
module-name ?= * ;
@@ -129,15 +131,16 @@
}
}
-# Specifies the documentation for a rule in the current module.
-# If called in the global module, this documents a global rule.
+
+# Specifies the documentation for a rule in the current module. If called in the
+# global module, this documents a global rule.
#
local rule set-rule-doc (
- name # The name of the rule.
- module-name ? # The name of the module to document.
- is-local ? # Whether the rule is local to the module.
- : docs * # The documentation for the rule.
- )
+ name # The name of the rule.
+ module-name ? # The name of the module to document.
+ is-local ? # Whether the rule is local to the module.
+ : docs * # The documentation for the rule.
+)
{
module-name ?= * ;
@@ -151,13 +154,14 @@
}
}
+
# Specify a class, will turn a rule into a class.
#
local rule set-class-doc (
- name # The name of the class.
- module-name ? # The name of the module to document.
- : super-name ? # The super class name.
- )
+ name # The name of the class.
+ module-name ? # The name of the module to document.
+ : super-name ? # The super class name.
+)
{
module-name ?= * ;
@@ -174,28 +178,30 @@
$(name) $($(module-name).$(name).class-rules) ] ;
}
+
# Set the argument call signature of a rule.
#
local rule set-rule-arguments-signature (
- name # The name of the rule.
- module-name ? # The name of the module to document.
- : signature * # The arguments signature.
- )
+ name # The name of the rule.
+ module-name ? # The name of the module to document.
+ : signature * # The arguments signature.
+)
{
module-name ?= * ;
$(module-name).$(name).signature = $(signature) ;
}
+
# Specifies the documentation for an argument of a rule.
#
local rule set-argument-doc (
- name # The name of the argument.
- qualifier # Argument syntax qualifier, "*", "+", etc.
- rule-name # The name of the rule.
- module-name ? # THe optional name of the module.
- : docs * # The documentation.
- )
+ name # The name of the argument.
+ qualifier # Argument syntax qualifier, "*", "+", etc.
+ rule-name # The name of the rule.
+ module-name ? # THe optional name of the module.
+ : docs * # The documentation.
+)
{
module-name ?= * ;
@@ -208,16 +214,17 @@
}
}
-# Specifies the documentation for a variable in the current module.
-# If called in the global module, the global variable is documented.
+
+# Specifies the documentation for a variable in the current module. If called in
+# the global module, the global variable is documented.
#
local rule set-variable-doc (
- name # The name of the variable.
- default # The default value.
- initial # The initial value.
- module-name ? # The name of the module to document.
- : docs * # The documentation for the variable.
- )
+ name # The name of the variable.
+ default # The default value.
+ initial # The initial value.
+ module-name ? # The name of the module to document.
+ : docs * # The documentation for the variable.
+)
{
module-name ?= * ;
@@ -232,6 +239,7 @@
}
}
+
# Generates a general description of the documentation and help system.
#
local rule print-help-top ( )
@@ -268,6 +276,7 @@
print.list-end ;
}
+
# Generate Jam/Boost.Jam command usage information.
#
local rule print-help-usage ( )
@@ -344,13 +353,14 @@
print.list-end ;
}
-# Generates description of options controlling the help system.
-# This automatically reads the options as all variables in the doc
-# module of the form ".option.*".
+
+# Generates description of options controlling the help system. This
+# automatically reads the options as all variables in the doc module of the form
+# ".option.*".
#
local rule print-help-options (
- module-name # The doc module.
- )
+ module-name # The doc module.
+)
{
print.section "Help Options"
These are all the options available for enabling or disabling to control
@@ -376,15 +386,16 @@
}
}
-# Generate brief documentation for all the known items in the section
-# for a module. Possible sections are: "rules", and "variables".
+
+# Generate brief documentation for all the known items in the section for a
+# module. Possible sections are: "rules", and "variables".
#
local rule print-help-module-section (
- module # The module name.
- section # rules or variables.
- : section-head # The title of the section.
- section-description * # The detailed description of the section.
- )
+ module # The module name.
+ section # rules or variables.
+ : section-head # The title of the section.
+ section-description * # The detailed description of the section.
+)
{
if $($(module).$(section))
{
@@ -410,12 +421,13 @@
}
}
+
# Generate documentation for all possible modules. We attempt to list all known
# modules together with a brief description of each.
#
local rule print-help-all (
ignored # Usually the module name, but is ignored here.
- )
+)
{
print.section "Modules"
"These are all the known modules. Use --help <module> to get more"
@@ -442,12 +454,13 @@
}
}
-# Generate documentation for a module. Basic information about
-# the module is generated.
+
+# Generate documentation for a module. Basic information about the module is
+# generated.
#
local rule print-help-module (
- module-name # The module to generate docs for.
- )
+ module-name # The module to generate docs for.
+)
{
# Print the docs.
print.section "Module '$(module-name)'" $($(module-name).docs) ;
@@ -473,12 +486,13 @@
}
}
+
# Generate documentation for a set of rules in a module.
#
local rule print-help-rules (
- module-name # Module of the rules.
- : name * # Optional list of rules to describe.
- )
+ module-name # Module of the rules.
+ : name * # Optional list of rules to describe.
+)
{
name ?= $($(module-name).rules) ;
if [ set.intersection $(name) : $($(module-name).rules) $($(module-name).class-rules) ]
@@ -506,12 +520,13 @@
}
}
+
# Generate documentation for a set of classes in a module.
#
local rule print-help-classes (
- module-name # Module of the classes.
- : name * # Optional list of classes to describe.
- )
+ module-name # Module of the classes.
+ : name * # Optional list of classes to describe.
+)
{
name ?= $($(module-name).classes) ;
if [ set.intersection $(name) : $($(module-name).classes) ]
@@ -550,12 +565,13 @@
}
}
+
# Generate documentation for a set of variables in a module.
#
local rule print-help-variables (
- module-name ? # Module of the variables.
- : name * # Optional list of variables to describe.
- )
+ module-name ? # Module of the variables.
+ : name * # Optional list of variables to describe.
+)
{
name ?= $($(module-name).variables) ;
if [ set.intersection $(name) : $($(module-name).variables) ]
@@ -582,12 +598,13 @@
}
}
+
# Generate documentation for a project.
#
local rule print-help-project (
unused ?
- : jamfile * # The project Jamfile.
- )
+ : jamfile * # The project Jamfile.
+)
{
if $(jamfile<$(jamfile)>.docs[1])
{
@@ -599,13 +616,14 @@
}
}
+
# Generate documentation for a config file.
#
local rule print-help-config (
unused ?
- : type # The type of configuration file user or site.
- config-file # The configuration Jamfile.
- )
+ : type # The type of configuration file user or site.
+ config-file # The configuration Jamfile.
+)
{
if $(jamfile<$(config-file)>.docs[1])
{
@@ -617,17 +635,14 @@
}
}
-local rule __test__
-{
-}
ws = " " ;
# Extract the text from a block of comments.
#
local rule extract-comment (
- var # The name of the variable to extract from.
- )
+ var # The name of the variable to extract from.
+)
{
local comment = ;
local line = $($(var)[1]) ;
@@ -643,11 +658,12 @@
return $(comment) ;
}
+
# Extract s single line of Jam syntax, ignoring any comments.
#
local rule extract-syntax (
- var # The name of the variable to extract from.
- )
+ var # The name of the variable to extract from.
+)
{
local syntax = ;
local line = $($(var)[1]) ;
@@ -664,12 +680,13 @@
return $(syntax) ;
}
-# Extract the next token, this is either a single Jam construct
-# or a comment as a single token.
+
+# Extract the next token, this is either a single Jam construct or a comment as
+# a single token.
#
local rule extract-token (
- var # The name of the variable to extract from.
- )
+ var # The name of the variable to extract from.
+)
{
local parts = ;
while ! $(parts)
@@ -694,18 +711,19 @@
return $(token) ;
}
+
# Scan for a rule declaration as the next item in the variable.
#
local rule scan-rule (
- syntax ? # The first part of the text which contains the rule declaration.
- : var # The name of the variable to extract from.
- )
+ syntax ? # The first part of the text which contains the rule declaration.
+ : var # The name of the variable to extract from.
+)
{
local rule-parts =
[ MATCH "^[$(ws)]*(rule|local[$(ws)]*rule)[$(ws)]+([^$(ws)]+)[$(ws)]*(.*)" : $(syntax:J=" ") ] ;
if $(rule-parts[1])
{
- # mark as doc for rule.
+ # Mark as doc for rule.
local rule-name = $(rule-parts[2]) ;
if $(scope-name)
{
@@ -716,10 +734,10 @@
{
set-rule-doc $(rule-name) $(module-name) $(is-local) : $(comment-block) ;
}
- # parse args of rule.
+ # Parse args of rule.
$(var) = $(rule-parts[3-]) $($(var)) ;
set-rule-arguments-signature $(rule-name) $(module-name) : [ scan-rule-arguments $(var) ] ;
- # scan within this rules scope.
+ # Scan within this rules scope.
local scope-level = [ extract-token $(var) ] ;
local scope-name = $(rule-name) ;
while $(scope-level)
@@ -743,11 +761,12 @@
}
}
+
# Scan the arguments of a rule.
#
local rule scan-rule-arguments (
- var # The name of the variable to extract from.
- )
+ var # The name of the variable to extract from.
+)
{
local arg-syntax = ;
local token = [ extract-token $(var) ] ;
@@ -801,11 +820,13 @@
return $(arg-signature) ;
}
+
# Scan for a variable declaration.
+#
local rule scan-variable (
- syntax ? # The first part of the text which contains the variable declaration.
- : var # The name of the variable to extract from.
- )
+ syntax ? # The first part of the text which contains the variable declaration.
+ : var # The name of the variable to extract from.
+)
{
# [1] = name, [2] = value(s)
local var-parts =
@@ -833,10 +854,12 @@
}
}
+
# Scan a class declaration.
+#
local rule scan-class (
- syntax ? # The syntax text for the class declaration.
- )
+ syntax ? # The syntax text for the class declaration.
+)
{
# [1] = class?, [2] = name, [3] = superclass
local class-parts =
@@ -847,24 +870,25 @@
}
}
+
# Scan a module file for documentation comments. This also invokes any actions
# assigned to the module. The actions are the rules that do the actual output of
# the documentation. This rule is invoked as the header scan rule for the module
# file.
#
rule scan-module (
- target # The module file.
- : text * # The text in the file, one item per line.
- : action * # Rule to call to output docs for the module.
- )
+ target # The module file.
+ : text * # The text in the file, one item per line.
+ : action * # Rule to call to output docs for the module.
+)
{
if $(.option.debug) { ECHO "HELP:" scanning module target '$(target)' ; }
local module-name = $(target:B) ;
local module-documented = ;
local comment-block = ;
local syntax-block = ;
- # This is a hack because we can't get the line of a file if it
- # happens to not have a new-line termination.
+ # This is a hack because we can not get the line of a file if it happens to
+ # not have a new-line termination.
text += "}" ;
while $(text)
{
@@ -902,16 +926,19 @@
}
}
-# Import scan-module to global scope, so that it's available during
-# header scanning phase.
+
+# Import scan-module to global scope, so that it is available during header
+# scanning phase.
+#
IMPORT $(__name__) : scan-module : : doc.scan-module ;
-# Read in a file using the SHELL builtin and return the
-# individual lines as would be done for header scanning.
+
+# Read in a file using the SHELL builtin and return the individual lines as
+# would be done for header scanning.
#
local rule read-file (
- file # The file to read in.
- )
+ file # The file to read in.
+)
{
file = [ path.native [ path.root [ path.make $(file) ] [ path.pwd ] ] ] ;
if ! $(.file<$(file)>.lines)
@@ -940,15 +967,15 @@
return $(.file<$(file)>.lines) ;
}
-# Add a scan action to perform to generate the help documentation.
-# The action rule is passed the name of the module as the first argument.
-# The second argument(s) are optional and passed directly as specified
-# here.
+
+# Add a scan action to perform to generate the help documentation. The action
+# rule is passed the name of the module as the first argument. The second
+# argument(s) are optional and passed directly as specified here.
#
local rule do-scan (
- modules + # The modules to scan and perform the action on.
- : action * # The action rule, plus the secondary arguments to pass to the action rule.
- )
+ modules + # The modules to scan and perform the action on.
+ : action * # The action rule, plus the secondary arguments to pass to the action rule.
+)
{
if $(help-output) = text
{
Modified: trunk/tools/build/v2/util/print.jam
==============================================================================
--- trunk/tools/build/v2/util/print.jam (original)
+++ trunk/tools/build/v2/util/print.jam 2008-06-08 17:55:16 EDT (Sun, 08 Jun 2008)
@@ -16,22 +16,22 @@
# The current output target. Defaults to console.
output-target = console ;
-# The current output type. Defaults to plain.
+# The current output type. Defaults to plain. Other possible values are "html".
output-type = plain ;
# Whitespace.
.whitespace = [ string.whitespace ] ;
-# Set the target and type of output to generate. This sets both
-# the destination output and the type of docs to generate to that
-# output. The target can be either a file or "console" for echoing
-# to the console. If the type of output is not specified it defaults
-# to plain text.
+
+# Set the target and type of output to generate. This sets both the destination
+# output and the type of docs to generate to that output. The target can be
+# either a file or "console" for echoing to the console. If the type of output
+# is not specified it defaults to plain text.
#
rule output (
- target # The target file or device; file or "console".
- type ? # The type of output; "plain", or "html".
- )
+ target # The target file or device; file or "console".
+ type ? # The type of output; "plain" or "html".
+)
{
type ?= plain ;
if $(output-target) != $(target)
@@ -57,15 +57,14 @@
}
}
-# Generate a section with a description. The type of output can be
-# controlled by the value of the 'output-type' variable. If not set
-# it defaults to 'console' indicating immediate display to the console.
-# Other possible values are: 'html-file'.
+
+# Generate a section with a description. The type of output can be controlled by
+# the value of the 'output-type' variable.
#
rule section (
- name # The name of the section.
- description * # A number of description lines.
- )
+ name # The name of the section.
+ description * # A number of description lines.
+)
{
if $(output-type) = plain
{
@@ -165,10 +164,9 @@
}
}
-# Generate the start of a list of items. The type of output can be
-# controlled by the value of the 'output-type' variable. If not set
-# it defaults to 'console' indicating immediate display to the console.
-# Other possible values are: 'html-file'.
+
+# Generate the start of a list of items. The type of output can be controlled by
+# the value of the 'output-type' variable.
#
rule list-start ( )
{
@@ -181,14 +179,13 @@
}
}
-# Generate an item in a list. The type of output can be
-# controlled by the value of the 'output-type' variable. If not set
-# it defaults to 'console' indicating immediate display to the console.
-# Other possible values are: 'html-file'.
+
+# Generate an item in a list. The type of output can be controlled by the value
+# of the 'output-type' variable.
#
rule list-item (
- item + # The item to list.
- )
+ item + # The item to list.
+)
{
if $(output-type) = plain
{
@@ -200,10 +197,9 @@
}
}
-# Generate the end of a list of items. The type of output can be
-# controlled by the value of the 'output-type' variable. If not set
-# it defaults to 'console' indicating immediate display to the console.
-# Other possible values are: 'html-file'.
+
+# Generate the end of a list of items. The type of output can be controlled by
+# the value of the 'output-type' variable.
#
rule list-end ( )
{
@@ -217,13 +213,14 @@
}
}
-# Split the given text into separate lines, word-wrapping to a margin.
-# The default margin is 78 characters.
+
+# Split the given text into separate lines, word-wrapping to a margin. The
+# default margin is 78 characters.
#
rule split-at-words (
- text + # The text to split.
- : margin ? # An optional margin, default is 78.
- )
+ text + # The text to split.
+ : margin ? # An optional margin, default is 78.
+)
{
local lines = ;
text = [ string.words $(text:J=" ") ] ;
@@ -264,15 +261,16 @@
return $(lines) ;
}
-# Generate a set of fixed lines. Each single item passed in is
-# output on a separate line. For console this just echos each line,
-# but for html this will split them with <br>.
+
+# Generate a set of fixed lines. Each single item passed in is output on a
+# separate line. For console this just echos each line, but for html this will
+# split them with <br>.
#
rule lines (
- text * # The lines of text.
- : indent ? # Optional indentation prepended to each line after the first one.
- outdent ? # Optional indentation to prepend to the first line.
- )
+ text * # The lines of text.
+ : indent ? # Optional indentation prepended to each line after the first one.
+ outdent ? # Optional indentation to prepend to the first line.
+)
{
text ?= "" ;
indent ?= "" ;
@@ -296,19 +294,20 @@
}
}
-# Output text directly to the current target. When doing output
-# to a file, one can indicate if the text should be output to
-# "prefix" it, as the "body" (default), or "suffix" of the file. This is
-# independant of the actual execution order of the text rule. This rule
-# invokes a singular action, one action only once, which does the
-# build of the file. Therefore actions on the target outside of this
-# rule will happen entirely before and/or after all output using this rule.
+
+# Output text directly to the current target. When doing output to a file, one
+# can indicate if the text should be output to "prefix" it, as the "body"
+# (default), or "suffix" of the file. This is independant of the actual
+# execution order of the text rule. This rule invokes a singular action, one
+# action only once, which does the build of the file. Therefore actions on the
+# target outside of this rule will happen entirely before and/or after all
+# output using this rule.
#
rule text (
- strings * # The strings of text to output.
- : overwrite ? # true to overwrite the output (if it is a file)
- : prefix-body-suffix ? # Indication to output prefix, body, or suffix (for a file).
- )
+ strings * # The strings of text to output.
+ : overwrite ? # true to overwrite the output (if it is a file)
+ : prefix-body-suffix ? # Indication to output prefix, body, or suffix (for a file).
+)
{
prefix-body-suffix ?= body ;
if $(output-target) = console
@@ -350,21 +349,24 @@
$($(output-target).text-suffix) ;
}
+
# Outputs the text to the current targets, after word-wrapping it.
+#
rule wrapped-text ( text + )
{
local lines = [ split-at-words $(text) ] ;
text $(lines) ;
}
-# Escapes text into html/xml printable equivalents.
-# Does not know about tags and therefore tags fed into
-# this will also be escaped. Currently escapes space, "<", ">", and "&".
+
+# Escapes text into html/xml printable equivalents. Does not know about tags and
+# therefore tags fed into this will also be escaped. Currently escapes space,
+# "<", ">", and "&".
#
rule escape-html (
- text + # The text to escape.
- : space ? # What to replace spaces with, defaults to " ".
- )
+ text + # The text to escape.
+ : space ? # What to replace spaces with, defaults to " ".
+)
{
local html-text = ;
while $(text)
@@ -383,24 +385,26 @@
return $(html-text) ;
}
-# Outputs the text strings collected by the text rule to the output
-# file.
+
+# Outputs the text strings collected by the text rule to the output file.
#
actions quietly text-action
{
@($(STDOUT):E=$(text-content:J=$(nl))) $(text-redirect) "$(<)"
}
-local rule __test__ ( )
+
+rule __test__ ( )
{
import assert ;
- assert.result one two three : split-at-words one two three : 5 ;
+ assert.result one two three : split-at-words one two three : 5 ;
assert.result "one two" three : split-at-words one two three : 8 ;
assert.result "one two" three : split-at-words one two three : 9 ;
assert.result "one two three" : split-at-words one two three ;
- # VP, 2004-12-03 The following test fails for some reason,
- # so commenting it out.
+
+ # VP, 2004-12-03 The following test fails for some reason, so commenting it
+ # out.
#assert.result "one two three" "&<>" :
# escape-html "one two three" "&<>" ;
}
Modified: trunk/tools/build/v2/util/sequence.jam
==============================================================================
--- trunk/tools/build/v2/util/sequence.jam (original)
+++ trunk/tools/build/v2/util/sequence.jam 2008-06-08 17:55:16 EDT (Sun, 08 Jun 2008)
@@ -247,7 +247,7 @@
NATIVE_RULE sequence : select-highest-ranked ;
-local rule __test__ ( )
+rule __test__ ( )
{
# Use a unique module so we can test the use of local rules.
module sequence.__test__
Modified: trunk/tools/build/v2/util/utility.jam
==============================================================================
--- trunk/tools/build/v2/util/utility.jam (original)
+++ trunk/tools/build/v2/util/utility.jam 2008-06-08 17:55:16 EDT (Sun, 08 Jun 2008)
@@ -108,7 +108,7 @@
-local rule __test__ ( )
+rule __test__ ( )
{
import assert ;
import "class" : new ;
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