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

Refactorings.

* build/virtual-target.jam
  (subvariant): Renamed from 'subvariant-dg'.
  (subvariant.created-targets, requested-properties, build-properties,
   sources-usage-requirements): Renamed some methods and added some new ones.

* build/targets.jam
  (basic-target.compute-usage-requirements): Accept 'subvariant' instance.
  This allows derived classes to access all kind of information they'd like,
  without adding terrible number of parameters.


[SVN r20518]
This commit is contained in:
Vladimir Prus
2003-10-28 08:44:44 +00:00
parent 4543f0173f
commit bf82713eb3
4 changed files with 42 additions and 18 deletions

View File

@@ -917,10 +917,11 @@ class basic-target : abstract-target
check-for-unused-sources
$(result) : $(source-target-groups) ;
create-subvariant-dg $(result) : $(property-set) : $(rproperties) ;
local s = [ create-subvariant $(result) : $(property-set)
: $(rproperties) : $(usage-requirements) ] ;
self.generated.$(property-set) =
[ compute-usage-requirements $(rproperties) : $(result) ]
[ compute-usage-requirements $(s) ]
$(result) ;
self.name = $(original-name) ;
@@ -936,8 +937,9 @@ class basic-target : abstract-target
# Given the set of generated targets, and refined build
# properties, determines and sets appripriate usage requirements
# on those targets.
rule compute-usage-requirements ( rproperties : created-targets * )
rule compute-usage-requirements ( subvariant )
{
local rproperties = [ $(subvariant).build-properties ] ;
xusage-requirements = [ $(self.usage-requirements).evaluate-conditionals
$(rproperties) ] ;
@@ -952,7 +954,8 @@ class basic-target : abstract-target
}
# Creates a new subvariant-dg instances for 'targets'
local rule create-subvariant-dg ( targets * : build-request : rproperties )
local rule create-subvariant ( targets * : build-request : rproperties
: usage-requirements )
{
for local e in $(targets)
{
@@ -963,12 +966,13 @@ class basic-target : abstract-target
# is created.
local all-targets =
[ sequence.transform virtual-target.traverse : $(targets) ] ;
local dg = [ new subvariant-dg $(__name__) : $(build-request)
: $(rproperties) : $(all-targets) ] ;
local dg = [ new subvariant $(__name__) : $(build-request)
: $(rproperties) : $(usage-requirements) : $(all-targets) ] ;
for local v in $(all-targets)
{
$(v).dg $(dg) ;
}
return $(dg) ;
}

View File

@@ -889,23 +889,25 @@ local rule clone-action-template ( action from cloned-from : new-source )
return $(cloned) ;
}
class subvariant-dg
class subvariant
{
import sequence ;
rule __init__ ( main-target # The instance of main-target class
: property-set # Properties requested for this target
: actual-properties # Actual used properties
: virtual-targets * )
: build-properties # Actually used properties
: sources-usage-requirements # Properties propagated from sources
: created-targets * ) # Top-level created targets
{
self.main-target = $(main-target) ;
self.properties = $(property-set) ;
self.actual-properties = $(actual-properties) ;
self.virtual-targets = $(virtual-targets) ;
self.build-properties = $(build-properties) ;
self.sources-usage-requirements = $(sources-usage-requirements) ;
self.created-targets = $(created-targets) ;
# Pre-compose the list of other dependency graphs, on which this one
# depends
local deps = [ $(actual-properties).get implicit-dependency ] ;
local deps = [ $(build-properties).get implicit-dependency ] ;
for local d in $(deps)
{
self.other-dg += [ $(d:G=).dg ] ;
@@ -919,12 +921,27 @@ class subvariant-dg
{
return $(self.main-target) ;
}
rule properties ( )
rule created-targets ( )
{
return $(self.created-targets) ;
}
rule requested-properties ( )
{
return $(self.properties) ;
}
rule build-properties ( )
{
return $(self.build-properties) ;
}
rule sources-usage-requirements ( )
{
return $(self.sources-usage-requirements) ;
}
# Returns a list of properties which contain implicit includes,
# needed to handle dependencies of generated headers.
# The name of feature is given by 'feature', this is typically 'include'.
@@ -950,7 +967,7 @@ class subvariant-dg
rule compute-target-directories ( )
{
local result ;
for local t in $(self.virtual-targets)
for local t in $(self.created-targets)
{
result = [ sequence.merge $(result) : [ $(t).path ] ] ;
}

View File

@@ -427,9 +427,11 @@ class lib-target-class : basic-target
: $(property-set) : $(source-targets) : LIB ] ;
}
rule compute-usage-requirements ( rproperties : created-targets * )
rule compute-usage-requirements ( subvariant )
{
local result = [ basic-target.compute-usage-requirements $(rproperties) ] ;
local rproperties = [ $(subvariant).build-properties ] ;
local created-targets = [ $(subvariant).created-targets ] ;
local result = [ basic-target.compute-usage-requirements $(subvariant) ] ;
# For lib targets with <search>, add the value of <search> as <library-path>
# usage requirement.

View File

@@ -129,7 +129,7 @@ class stlport-target-class : basic-target
}
rule compute-usage-requirements ( rproperties : targets * )
rule compute-usage-requirements ( subvariant )
{
local usage-requirements ;
usage-requirements +=
@@ -138,6 +138,7 @@ class stlport-target-class : basic-target
<library-path>$(self.libraries)
;
local rproperties = [ $(subvariant).build-properties ] ;
# CONSIDER: should this "if" sequence be replaced with
# some use of 'property-map' class?
if [ $(rproperties).get <runtime-debugging> ] = "on"