summaryrefslogtreecommitdiff
path: root/Jamroot
diff options
context:
space:
mode:
authorSteven Watanabe <steven@providere-consulting.com>2016-02-25 13:42:49 -0700
committerSteven Watanabe <steven@providere-consulting.com>2016-02-25 13:42:49 -0700
commit84fdd4d0252dabbba58a9c5140bacd3aa74c7c3d (patch)
tree07a0c413bfaa2c6ec5c72593bc3c85d7e1e3e551 /Jamroot
parent5970585cdabce3b2592cd6bf212ab3c8943a531b (diff)
downloadboost-84fdd4d0252dabbba58a9c5140bacd3aa74c7c3d.tar.gz
Avoid generating massive numbers of <implicit-dependency>s as this causes a significant performance cost.
Diffstat (limited to 'Jamroot')
-rw-r--r--Jamroot20
1 files changed, 19 insertions, 1 deletions
diff --git a/Jamroot b/Jamroot
index a8105c8d36..89129ebdf1 100644
--- a/Jamroot
+++ b/Jamroot
@@ -129,6 +129,10 @@ import xsltproc ;
import set ;
import path ;
import link ;
+import notfile ;
+import virtual-target ;
+import "class" : new ;
+import property-set ;
path-constant BOOST_ROOT : . ;
constant BOOST_VERSION : 1.61.0 ;
@@ -234,7 +238,21 @@ for local l in $(all-libraries)
# Log has an additional target
explicit-alias log_setup : libs/log/build//boost_log_setup ;
-alias headers : $(all-headers)-headers : : : <include>. ;
+rule do-nothing { }
+
+rule generate-alias ( project name : property-set : sources * )
+{
+ local action-name = [ $(property-set).get <action> ] ;
+ local m = [ MATCH ^@(.*) : $(action-name) ] ;
+ property-set = [ property-set.empty ] ;
+ local action = [ new action $(sources) : $(m[1]) : $(property-set) ] ;
+ local t = [ new notfile-target $(name) : $(project) : $(action) ] ;
+ return [ virtual-target.register $(t) ] ;
+}
+
+generate headers : $(all-headers)-headers : <generating-rule>@generate-alias <action>@do-nothing : : <include>. ;
+
+#alias headers : $(all-headers)-headers : : : <include>. ;
explicit headers ;
# Make project ids of all libraries known.