|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r80005 - in trunk/tools/build/v2: build tools util
From: jurko.gospodnetic_at_[hidden]
Date: 2012-08-13 10:35:58
Author: jurko
Date: 2012-08-13 10:35:56 EDT (Mon, 13 Aug 2012)
New Revision: 80005
URL: http://svn.boost.org/trac/boost/changeset/80005
Log:
Boost Build cleanup - minor stylistic changes.
Text files modified:
trunk/tools/build/v2/build/targets.jam | 53 ++++-----
trunk/tools/build/v2/build/virtual-target.jam | 46 ++++---
trunk/tools/build/v2/tools/doxygen.jam | 213 +++++++++++++++++----------------------
trunk/tools/build/v2/tools/stage.jam | 120 ++++++++++-----------
trunk/tools/build/v2/util/regex.jam | 3
5 files changed, 204 insertions(+), 231 deletions(-)
Modified: trunk/tools/build/v2/build/targets.jam
==============================================================================
--- trunk/tools/build/v2/build/targets.jam (original)
+++ trunk/tools/build/v2/build/targets.jam 2012-08-13 10:35:56 EDT (Mon, 13 Aug 2012)
@@ -22,7 +22,7 @@
# create an instance of that class and add it to the list of alternatives for
# the main target.
#
-# Rules supplied by the build system will use only targets derived from
+# Rules supplied by the build system will use only targets derived from the
# 'basic-target' class, which will provide some default behaviour. There will be
# different classes derived from it such as 'make-target', created by the 'make'
# rule, and 'typed-target', created by rules such as 'exe' and 'lib'.
@@ -1115,7 +1115,8 @@
abstract-target.__init__ $(name) : $(project) ;
self.sources = $(sources) ;
- if ! $(requirements) {
+ if ! $(requirements)
+ {
requirements = [ property-set.empty ] ;
}
self.requirements = $(requirements) ;
@@ -1153,8 +1154,8 @@
{
for local s in $(self.sources)
{
- self.source-targets +=
- [ targets.resolve-reference $(s) : $(self.project) ] ;
+ self.source-targets += [ targets.resolve-reference $(s) :
+ $(self.project) ] ;
}
}
return $(self.source-targets) ;
@@ -1210,7 +1211,8 @@
}
# Takes a target reference, which might be either target id or a dependency
- # property, and generates that target using 'property-set' as build request.
+ # property, and generates that target using 'property-set' as a build
+ # request.
#
# The results are added to the variable called 'result-var'. Usage
# requirements are added to the variable called 'usage-requirements-var'.
@@ -1303,7 +1305,7 @@
# We might get duplicate sources, for example if we link to two
# libraries having the same <library> usage requirement. Use
# stable sort, since for some targets the order is important,
- # e.g. RUN_PY target need a python source to come first.
+ # e.g. RUN_PY targets need a python source to come first.
source-targets = [ sequence.unique $(source-targets) : stable ]
;
@@ -1640,38 +1642,35 @@
}
-# Creates a new metargets with the specified properties, using 'klass' as
-# the class. The 'name', 'sources',
-# 'requirements', 'default-build' and 'usage-requirements' are assumed to be in
-# the form specified by the user in Jamfile corresponding to 'project'.
+# Creates a metatarget with the specified properties, using 'klass' as the
+# class. The 'name', 'sources', 'requirements', 'default-build' and
+# 'usage-requirements' are assumed to be in the form specified by the user in
+# the Jamfile corresponding to 'project'.
#
rule create-metatarget ( klass : project : name : sources * : requirements * :
default-build * : usage-requirements * )
{
- return [
- targets.main-target-alternative
- [ new $(klass) $(name) : $(project)
- : [ targets.main-target-sources $(sources) : $(name) ]
- : [ targets.main-target-requirements $(requirements) : $(project) ]
- : [ targets.main-target-default-build $(default-build) : $(project) ]
- : [ targets.main-target-usage-requirements $(usage-requirements) : $(project) ]
- ] ] ;
+ return [ targets.main-target-alternative [ new $(klass) $(name) : $(project)
+ : [ targets.main-target-sources $(sources) : $(name) ]
+ : [ targets.main-target-requirements $(requirements) : $(project) ]
+ : [ targets.main-target-default-build $(default-build) : $(project) ]
+ : [ targets.main-target-usage-requirements $(usage-requirements) :
+ $(project) ] ] ] ;
}
# Creates a typed-target with the specified properties. The 'name', 'sources',
# 'requirements', 'default-build' and 'usage-requirements' are assumed to be in
-# the form specified by the user in Jamfile corresponding to 'project'.
+# the form specified by the user in the Jamfile corresponding to 'project'.
#
rule create-typed-target ( type : project : name : sources * : requirements * :
default-build * : usage-requirements * )
{
- return [
- targets.main-target-alternative
- [ new typed-target $(name) : $(project) : $(type)
- : [ targets.main-target-sources $(sources) : $(name) ]
- : [ targets.main-target-requirements $(requirements) : $(project) ]
- : [ targets.main-target-default-build $(default-build) : $(project) ]
- : [ targets.main-target-usage-requirements $(usage-requirements) : $(project) ]
- ] ] ;
+ return [ targets.main-target-alternative [ new typed-target $(name) :
+ $(project) : $(type)
+ : [ targets.main-target-sources $(sources) : $(name) ]
+ : [ targets.main-target-requirements $(requirements) : $(project) ]
+ : [ targets.main-target-default-build $(default-build) : $(project) ]
+ : [ targets.main-target-usage-requirements $(usage-requirements) :
+ $(project) ] ] ] ;
}
Modified: trunk/tools/build/v2/build/virtual-target.jam
==============================================================================
--- trunk/tools/build/v2/build/virtual-target.jam (original)
+++ trunk/tools/build/v2/build/virtual-target.jam 2012-08-13 10:35:56 EDT (Mon, 13 Aug 2012)
@@ -9,16 +9,7 @@
# build, but are not yet targets in Jam sense. They are needed, for example,
# when searching for possible transformation sequences, when it is not yet known
# whether a particular target should be created at all.
-
-import "class" : new ;
-import errors ;
-import path ;
-import sequence ;
-import set ;
-import type ;
-import utility ;
-
-
+#
# +--------------------------+
# | virtual-target |
# +==========================+
@@ -66,6 +57,13 @@
# The 'compile-action' and 'link-action' classes are not defined here but in
# builtin.jam modules. They are shown in the diagram to give the big picture.
+import "class" : new ;
+import path ;
+import sequence ;
+import set ;
+import type ;
+import utility ;
+
# Models a potential target. It can be converted into a Jam target and used in
# building, if needed. However, it can be also dropped, which allows us to
@@ -168,6 +166,7 @@
#
rule actualize-action ( target )
{
+ import errors : error : errors.error ;
errors.error "method should be defined in derived classes" ;
}
@@ -175,6 +174,7 @@
#
rule actualize-location ( target )
{
+ import errors : error : errors.error ;
errors.error "method should be defined in derived classes" ;
}
@@ -183,6 +183,7 @@
#
rule path ( )
{
+ import errors : error : errors.error ;
errors.error "method should be defined in derived classes" ;
}
@@ -191,6 +192,7 @@
#
rule actual-name ( )
{
+ import errors : error : errors.error ;
errors.error "method should be defined in derived classes" ;
}
@@ -201,6 +203,7 @@
# abstract-file-target as the latter is the only class derived from the
# former. But that has been left for later.
+ import errors : error : errors.error ;
errors.error "method should be defined in derived classes" ;
}
}
@@ -286,8 +289,8 @@
# Gets or sets the subvariant which created this target. Subvariant is set
# when target is brought into existance and is never changed after that. In
- # particular, if a target is shared by a subvariant, only the first is
- # stored.
+ # particular, if a target is shared by multiple subvariants, only the first
+ # one is stored.
#
rule creating-subvariant ( s ? # If specified, specifies the value to set,
# which should be a 'subvariant' class
@@ -446,8 +449,9 @@
{
if $(tag[2])
{
- errors.error "<tag>@rulename is present but is not the only"
- "<tag> feature" ;
+ import errors : error : errors.error ;
+ errors.error <tag>@rulename is present but is not the only
+ <tag> feature. ;
}
self.name = [ indirect.call $(rule-name) $(specified-name)
@@ -455,8 +459,8 @@
}
else
{
- errors.error
- "The value of the <tag> feature must be '@rule-name'" ;
+ import errors : error : errors.error ;
+ errors.error <tag> property value must be '@rule-name'. ;
}
}
@@ -547,7 +551,6 @@
{
import "class" : new ;
import common ;
- import errors ;
rule __init__ (
name exact ?
@@ -702,13 +705,12 @@
class action
{
import "class" ;
- import errors ;
- import type ;
- import toolset ;
- import property-set ;
import indirect ;
import path ;
+ import property-set ;
import set : difference ;
+ import toolset ;
+ import type ;
rule __init__ ( sources * : action-name + : property-set ? )
{
@@ -723,6 +725,7 @@
if ! [ class.is-instance $(property-set) ]
{
+ import errors : error : errors.error ;
errors.error "Property set instance required" ;
}
@@ -1075,6 +1078,7 @@
properties-added = [ set.difference $(p2) : $(p1) ] ;
properties-added ?= "none" ;
}
+ import errors : error : errors.error ;
errors.error "Duplicate name of actual target:" $(actual-name)
: "previous virtual target" [ $(.actual.$(actual-name)).str ]
: "created from" [ $(cmt1).full-name ]
Modified: trunk/tools/build/v2/tools/doxygen.jam
==============================================================================
--- trunk/tools/build/v2/tools/doxygen.jam (original)
+++ trunk/tools/build/v2/tools/doxygen.jam 2012-08-13 10:35:56 EDT (Mon, 13 Aug 2012)
@@ -33,15 +33,14 @@
import path ;
import print ;
import project ;
-import regex ;
import stage ;
import toolset ;
import utility ;
import xsltproc ;
-# Use to specify extra configuration paramters. These get translated
-# into a doxyfile which configures the building of the docs.
+# Use to specify extra configuration paramters. These get translated into a
+# doxyfile which configures the building of the docs.
feature.feature doxygen:param : : free ;
# Specify the "<xsl:param>boost.doxygen.header.prefix" XSLT option.
@@ -85,6 +84,7 @@
type.register DOXYGEN_XML_IMAGES : doxygen-xml-images ;
+
# Initialize the Doxygen module. Parameters are:
# name: the name of the 'doxygen' executable. If not specified, the name
# 'doxygen' will be used
@@ -131,17 +131,17 @@
}
}
+
local rule freeze-config ( )
{
if ! $(.initialized)
{
import errors ;
- errors.user-error "doxygen must be initialized before it can be used." ;
+ errors.user-error doxygen must be initialized before it can be used. ;
}
if ! $(.config-frozen)
{
.config-frozen = true ;
-
if [ .is-cygwin ]
{
.is-cygwin = true ;
@@ -149,6 +149,7 @@
}
}
+
local rule modify-config ( )
{
if $(.config-frozen)
@@ -158,6 +159,7 @@
}
}
+
local rule check-doxygen ( )
{
if --debug-configuration in [ modules.peek : ARGV ]
@@ -181,12 +183,14 @@
$(extra-paths) ] ;
}
+
rule name ( )
{
freeze-config ;
return $(.doxygen) ;
}
+
local rule .is-cygwin ( )
{
if [ os.on-windows ]
@@ -205,6 +209,7 @@
}
}
+
# Runs Doxygen on the given Doxygen configuration file (the source) to generate
# the Doxygen files. The output is dumped according to the settings in the
# Doxygen configuration file, not according to the target! Because of this, we
@@ -281,7 +286,7 @@
# Translate <doxygen:param> into command line flags.
for local param in [ feature.get-values <doxygen:param> : $(properties) ]
{
- local namevalue = [ regex.match ([^=]*)=(.*) : $(param) ] ;
+ local namevalue = [ MATCH ([^=]*)=(.*) : $(param) ] ;
if $(namevalue[1]) = OUTPUT_DIRECTORY
{
output-dir = [ translate-path [ utility.unquote $(namevalue[2]) ] ]
@@ -343,6 +348,7 @@
return $(LOCATE) ] ] $(target:B:S=) *.xml ] ] ;
}
+
if [ os.name ] = NT
{
RMDIR = rmdir /s /q ;
@@ -357,6 +363,7 @@
$(RMDIR) $(HTMLDIR)
}
+
# The rules below require Boost.Book stylesheets, so we need some code to check
# that the boostbook module has actualy been initialized.
#
@@ -499,6 +506,7 @@
echo "Stamped" > "$(<)"
}
+
# Building latex images for doxygen XML depends on latex, dvips, and ps being in
# your PATH. This is true for most Unix installs, but not on Win32, where you
# will need to install MkTex and Ghostscript and add these tools to your path.
@@ -528,6 +536,7 @@
}
}
+
rule check-tools ( project )
{
if ! $(.check-tools-targets)
@@ -561,6 +570,7 @@
return $(.check-tools-targets) ;
}
+
project.initialize $(__name__) ;
project doxygen ;
@@ -573,17 +583,14 @@
}
}
-{
- local project = [ project.current ] ;
- targets.main-target-alternative
- [ new doxygen-check-tools-target-class check-tools : $(project)
- : [ targets.main-target-sources : check-tools : no-renaming ]
- : [ targets.main-target-requirements : $(project) ]
- : [ targets.main-target-default-build : $(project) ]
- : [ targets.main-target-usage-requirements : $(project) ] ] ;
+
+targets.create-metatarget doxygen-check-tools-target-class : [ project.current ]
+ : check-tools ;
}
-# User-level rule to generate BoostBook XML from a set of headers via Doxygen.
+
+# User-level rule to generate HTML files or BoostBook XML from a set of headers
+# via Doxygen.
#
rule doxygen ( target : sources * : requirements * : default-build * :
usage-requirements * )
@@ -614,42 +621,32 @@
local output-dir-native = [ path.native $(output-dir) ] ;
requirements = [ property.change $(requirements) : <location> ] ;
- ## The doxygen configuration file.
- targets.main-target-alternative
- [ new typed-target $(target:S=.tag) : $(project) : DOXYFILE
- : [ targets.main-target-sources $(sources) : $(target:S=.tag) ]
- : [ targets.main-target-requirements $(requirements)
- <doxygen:param>GENERATE_HTML=YES
- <doxygen:param>GENERATE_XML=NO
- <doxygen:param>"OUTPUT_DIRECTORY=\"$(output-dir-native)\""
- <doxygen:param>HTML_OUTPUT=$(target:B)
- : $(project) ]
- : [ targets.main-target-default-build $(default-build) :
- $(project) ] ] ;
+ # The doxygen configuration file.
+ targets.create-typed-target DOXYFILE : $(project) : $(target:S=.tag)
+ : $(sources)
+ : $(requirements)
+ <doxygen:param>GENERATE_HTML=YES
+ <doxygen:param>GENERATE_XML=NO
+ <doxygen:param>"OUTPUT_DIRECTORY=\"$(output-dir-native)\""
+ <doxygen:param>HTML_OUTPUT=$(target:B)
+ : $(default-build) ;
$(project).mark-target-as-explicit $(target:S=.tag) ;
- ## The html directory to generate by running doxygen.
- targets.main-target-alternative
- [ new typed-target $(target:S=.dir) : $(project)
- : DOXYGEN_HTML_MULTIFILE
- : $(target:S=.tag)
- : [ targets.main-target-requirements $(requirements)
- <doxygen:param>"OUTPUT_DIRECTORY=\"$(output-dir-native)\""
- <doxygen:param>HTML_OUTPUT=$(target:B)
- : $(project) ]
- : [ targets.main-target-default-build $(default-build) :
- $(project) ] ] ;
+ # The html directory to generate by running doxygen.
+ targets.create-typed-target DOXYGEN_HTML_MULTIFILE : $(project)
+ : $(target:S=.dir) # Name.
+ : $(target:S=.tag) # Sources.
+ : $(requirements)
+ <doxygen:param>"OUTPUT_DIRECTORY=\"$(output-dir-native)\""
+ <doxygen:param>HTML_OUTPUT=$(target:B)
+ : $(default-build) ;
$(project).mark-target-as-explicit $(target:S=.dir) ;
- ## The redirect html file into the generated html.
- targets.main-target-alternative
- [ new typed-target $(target) : $(project) : DOXYGEN_HTML
- : $(target:S=.dir)
- : [ targets.main-target-requirements $(requirements)
- <location>$(output-dir)
- : $(project) ]
- : [ targets.main-target-default-build $(default-build) :
- $(project) ] ] ;
+ # The redirect html file into the generated html.
+ targets.create-typed-target DOXYGEN_HTML : $(project) : $(target)
+ : $(target:S=.dir) # Sources.
+ : $(requirements) <location>$(output-dir)
+ : $(default-build) ;
}
else
{
@@ -660,34 +657,28 @@
local target-xml = $(target:B=$(target:B)-xml) ;
# Check whether we need to build images.
- local images-location =
- [ feature.get-values <doxygen:xml-imagedir> : $(requirements) ] ;
+ local images-location = [ feature.get-values <doxygen:xml-imagedir> :
+ $(requirements) ] ;
if $(images-location)
{
- doxygen $(target).doxygen-xml-images.html : $(sources)
- : $(requirements)
- <doxygen.rmdir>on
- <doxygen:param>QUIET=YES
- <doxygen:param>WARNINGS=NO
- <doxygen:param>WARN_IF_UNDOCUMENTED=NO
- <dependency>/doxygen//check-tools ;
- $(project).mark-target-as-explicit
- $(target).doxygen-xml-images.html ;
-
- targets.main-target-alternative
- [ new typed-target $(target).doxygen-xml-images
- : $(project) : DOXYGEN_XML_IMAGES
- : $(target).doxygen-xml-images.html
- : [ targets.main-target-requirements $(requirements)
- : $(project) ]
- : [ targets.main-target-default-build $(default-build)
- : $(project) ]
- ] ;
+ doxygen $(target).doxygen-xml-images.html : $(sources) :
+ $(requirements)
+ <doxygen.rmdir>on
+ <doxygen:param>QUIET=YES
+ <doxygen:param>WARNINGS=NO
+ <doxygen:param>WARN_IF_UNDOCUMENTED=NO
+ <dependency>/doxygen//check-tools ;
+ $(project).mark-target-as-explicit $(target).doxygen-xml-images.html
+ ;
- $(project).mark-target-as-explicit
- $(target).doxygen-xml-images ;
+ targets.create-typed-target DOXYGEN_XML_IMAGES : $(project)
+ : $(target).doxygen-xml-images # Name.
+ : $(target).doxygen-xml-images.html # Sources.
+ : $(requirements)
+ : $(default-build) ;
+ $(project).mark-target-as-explicit $(target).doxygen-xml-images ;
- if ! [ regex.match "^(.*/)$" : $(images-location) ]
+ if ! [ MATCH (/)$ : $(images-location) ]
{
images-location = $(images-location)/ ;
}
@@ -697,61 +688,45 @@
<xsl:param>boost.doxygen.formuladir=$(images-location) ;
}
- ## The doxygen configuration file.
- targets.main-target-alternative
- [ new typed-target $(target-xml:S=.tag) : $(project) : DOXYFILE
- : [ targets.main-target-sources $(sources) :
- $(target-xml:S=.tag) ]
- : [ targets.main-target-requirements $(requirements)
- <doxygen:param>GENERATE_HTML=NO
- <doxygen:param>GENERATE_XML=YES
- <doxygen:param>XML_OUTPUT=$(target-xml)
- : $(project) ]
- : [ targets.main-target-default-build $(default-build) :
- $(project) ] ] ;
+ # The doxygen configuration file.
+ targets.create-typed-target DOXYFILE : $(project) : $(target-xml:S=.tag)
+ : $(sources)
+ : $(requirements)
+ <doxygen:param>GENERATE_HTML=NO
+ <doxygen:param>GENERATE_XML=YES
+ <doxygen:param>XML_OUTPUT=$(target-xml)
+ : $(default-build) ;
$(project).mark-target-as-explicit $(target-xml:S=.tag) ;
- ## The Doxygen XML directory of the processed source files.
- targets.main-target-alternative
- [ new typed-target $(target-xml:S=.dir) : $(project)
- : DOXYGEN_XML_MULTIFILE
- : $(target-xml:S=.tag)
- : [ targets.main-target-requirements $(requirements)
- : $(project) ]
- : [ targets.main-target-default-build $(default-build) :
- $(project) ] ] ;
+ # The Doxygen XML directory for the processed source files.
+ targets.create-typed-target DOXYGEN_XML_MULTIFILE : $(project)
+ : $(target-xml:S=.dir) # Name.
+ : $(target-xml:S=.tag) # Sources.
+ : $(requirements)
+ : $(default-build) ;
$(project).mark-target-as-explicit $(target-xml:S=.dir) ;
- ## The resulting BoostBook file is generated by the processor tool. The
- ## tool can be either the xsltproc plus accompanying XSL scripts. Or it
- ## can be the python doxproc.py script.
- targets.main-target-alternative
- [ new typed-target $(target-xml) : $(project) : BOOSTBOOK
- : $(target-xml:S=.dir)
- : [ targets.main-target-requirements $(requirements)
- : $(project) ]
- : [ targets.main-target-default-build $(default-build) :
- $(project) ] ] ;
+ # The resulting BoostBook file is generated by the processor tool. The
+ # tool can be either the xsltproc plus accompanying XSL scripts. Or it
+ # can be the python doxproc.py script.
+ targets.create-typed-target BOOSTBOOK : $(project) : $(target-xml)
+ : $(target-xml:S=.dir) # Sources.
+ : $(requirements)
+ : $(default-build) ;
$(project).mark-target-as-explicit $(target-xml) ;
- targets.main-target-alternative
- [ new install-target-class $(target:S=.xml) : $(project)
- : $(target-xml)
- : [ targets.main-target-requirements $(requirements)
- <location>$(location-xml:E=.)
- <name>$(target:S=.xml)
- : $(project) ]
- : [ targets.main-target-default-build $(default-build) :
- $(project) ] ] ;
+ stage $(target:S=.xml) # Name.
+ : $(target-xml) # Sources.
+ : $(requirements)
+ <location>$(location-xml:E=.)
+ <name>$(target:S=.xml)
+ : $(default-build) ;
$(project).mark-target-as-explicit $(target:S=.xml) ;
- targets.main-target-alternative
- [ new alias-target-class $(target) : $(project) :
- : [ targets.main-target-requirements $(requirements)
- : $(project) ]
- : [ targets.main-target-default-build $(default-build) :
- $(project) ]
- : [ targets.main-target-usage-requirements $(usage-requirements)
- <dependency>$(target:S=.xml) : $(project) ] ] ;
+ # TODO: See why this alias target is used here instead of simply naming
+ # the previous stage target $(target) and having it specify the alias
+ # target's usage requirements directly.
+ alias $(target) : : $(requirements) : $(default-build) :
+ $(usage-requirements) <dependency>$(target:S=.xml) ;
}
}
Modified: trunk/tools/build/v2/tools/stage.jam
==============================================================================
--- trunk/tools/build/v2/tools/stage.jam (original)
+++ trunk/tools/build/v2/tools/stage.jam 2012-08-13 10:35:56 EDT (Mon, 13 Aug 2012)
@@ -2,21 +2,21 @@
# Copyright 2005, 2006 Rene Rivera
# Copyright 2002, 2003, 2004, 2005, 2006 Vladimir Prus
# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
# This module defines the 'install' rule, used to copy a set of targets to a
# single location.
-import targets ;
import "class" : new ;
-import errors ;
-import type ;
-import generators ;
import feature ;
-import project ;
-import virtual-target ;
+import generators ;
import path ;
+import project ;
+import targets ;
+import type ;
import types/register ;
+import virtual-target ;
feature.feature <install-dependencies> : off on : incidental ;
@@ -31,19 +31,23 @@
class install-target-class : basic-target
{
+ import "class" : new ;
import feature ;
- import project ;
- import type ;
- import errors ;
import generators ;
import path ;
- import stage ;
- import "class" : new ;
+ import project ;
import property ;
import property-set ;
+ import stage ;
+ import type ;
- rule __init__ ( name-and-dir : project : sources * : requirements * : default-build * )
+ rule __init__ ( name-and-dir : project : sources * : requirements * :
+ default-build * : usage-requirements * )
{
+ # The usage-requirements specified here are ignored but are taken as a
+ # parameter to have this metatarget class have the same standard
+ # instantiation interface as all the other Boost Build metatarget
+ # classes.
basic-target.__init__ $(name-and-dir) : $(project) : $(sources) :
$(requirements) : $(default-build) ;
}
@@ -140,8 +144,9 @@
if $(ename) && $(source-targets[2])
{
- errors.error "When <name> property is used in 'install', only one"
- "source is allowed" ;
+ import errors : error : $(__name__) : errors.error ;
+ errors.error When <name> property is used "in" 'install', only one
+ source is allowed. ;
}
local result ;
@@ -159,7 +164,9 @@
{
if $(ename)
{
- errors.error "In 'install': <name> property specified with target that requires relinking." ;
+ import errors : error : $(__name__) : errors.error ;
+ errors.error In 'install': <name> property specified with
+ target that requires relinking. ;
}
else
{
@@ -176,7 +183,9 @@
if ! $(staged-targets)
{
- errors.error "Unable to generate staged version of " [ $(source).str ] ;
+ import errors : error : $(__name__) : errors.error ;
+ errors.error Unable to generate staged version of
+ [ $(source).str ] ;
}
for t in $(staged-targets)
@@ -226,8 +235,8 @@
}
else if ! $(included-types)
{
- # Don't install typeless target if there is an explicit list of
- # allowed types.
+ # Do not install typeless targets if there is an explicit list
+ # of allowed types.
result += $(r) ;
}
}
@@ -246,10 +255,10 @@
s += [ $(t).creating-subvariant ] ;
}
s = [ sequence.unique $(s) ] ;
-
+
local result = [ new set ] ;
$(result).add $(targets) ;
-
+
for local i in $(s)
{
$(i).all-referenced-targets $(result) ;
@@ -357,38 +366,25 @@
rule run ( project name ? : property-set : source : multiple ? )
{
- local need-relink ;
-
- if [ $(property-set).get <os> ] in NT CYGWIN ||
- [ $(property-set).get <target-os> ] in windows cygwin
- {
- }
- else
+ local stage-rule = stage.copy-file ;
+
+ if ! [ $(property-set).get <os> ] in NT CYGWIN &&
+ ! [ $(property-set).get <target-os> ] in windows cygwin
{
- # See if the dll-path properties are not changed during
- # install. If so, copy, don't relink.
+ # If dll-path properties have been changed for the stage target,
+ # relink instead of copying.
local a = [ $(source).action ] ;
local p = [ $(a).properties ] ;
local original = [ $(p).get <dll-path> ] ;
local current = [ $(property-set).get <dll-path> ] ;
-
+
if $(current) != $(original)
{
- need-relink = true ;
- }
- }
-
-
- if $(need-relink)
- {
- return [ stage.relink-file $(project)
- : $(source) : $(property-set) ] ;
- }
- else
- {
- return [ stage.copy-file $(project)
- : $(source) : $(property-set) ] ;
+ stage-rule = stage.relink-file ;
+ }
}
+
+ return [ $(stage-rule) $(project) : $(source) : $(property-set) ] ;
}
}
@@ -410,8 +406,8 @@
rule __init__ ( )
{
- generator.__init__ install-shared-lib : SHARED_LIB
- : INSTALLED_SHARED_LIB ;
+ generator.__init__ install-shared-lib : SHARED_LIB :
+ INSTALLED_SHARED_LIB ;
}
rule run ( project name ? : property-set : source : multiple ? )
@@ -458,8 +454,9 @@
# If the name is in the form NNN.XXX.YYY.ZZZ, where all 'X', 'Y' and
# 'Z' are numbers, we need to create NNN.XXX and NNN.XXX.YYY
# symbolic links.
- local m = [ MATCH (.*)\\.([0123456789]+)\\.([0123456789]+)\\.([0123456789]+)$
- : [ $(copied).name ] ] ;
+ local m = [ MATCH
+ (.*)\\.([0123456789]+)\\.([0123456789]+)\\.([0123456789]+)$ :
+ [ $(copied).name ] ] ;
if $(m)
{
# Symlink without version at all is used to make
@@ -472,15 +469,15 @@
# libfoo.N. That happens when the library makes some binary
# compatibility guarantees. If not, it is possible to skip those
# symlinks.
- local suppress =
- [ $(property-set).get <install-no-version-symlinks> ] ;
+ local suppress = [ $(property-set).get
+ <install-no-version-symlinks> ] ;
if $(suppress) != "on"
{
- result += [ stage.symlink $(m[1]).$(m[2]) : $(project)
- : $(copied) : $(property-set) ] ;
- result += [ stage.symlink $(m[1]).$(m[2]).$(m[3]) : $(project)
- : $(copied) : $(property-set) ] ;
+ result += [ stage.symlink $(m[1]).$(m[2]) : $(project) :
+ $(copied) : $(property-set) ] ;
+ result += [ stage.symlink $(m[1]).$(m[2]).$(m[3]) :
+ $(project) : $(copied) : $(property-set) ] ;
}
}
@@ -507,16 +504,13 @@
if <tag> in $(requirements:G)
{
- errors.user-error
- "The <tag> property is not allowed for the 'install' rule" ;
+ import errors ;
+ errors.user-error The <tag> property is not allowed for the 'install'
+ rule. ;
}
- targets.main-target-alternative
- [ new install-target-class $(name) : $(project)
- : [ targets.main-target-sources $(sources) : $(name) ]
- : [ targets.main-target-requirements $(requirements) : $(project) ]
- : [ targets.main-target-default-build $(default-build) : $(project) ]
- ] ;
+ targets.create-metatarget install-target-class : $(project) : $(name) :
+ $(sources) : $(requirements) : $(default-build) ;
}
Modified: trunk/tools/build/v2/util/regex.jam
==============================================================================
--- trunk/tools/build/v2/util/regex.jam (original)
+++ trunk/tools/build/v2/util/regex.jam 2012-08-13 10:35:56 EDT (Mon, 13 Aug 2012)
@@ -3,7 +3,8 @@
# Copyright 2003 Rene Rivera
# Copyright 2002, 2003, 2004, 2005 Vladimir Prus
# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
#
# Returns a list of the following substrings:
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