summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Watanabe <steven@providere-consulting.com>2016-02-25 13:42:49 -0700
committerPeter Dimov <pdimov@pdimov.com>2017-12-21 01:55:53 +0200
commit000f1c3a0ded2958fb0a69231a4d7e810998b987 (patch)
tree9e8605a614ef0abaf64acb98a9e5666400882627
parenta233bccaef9960f599ed61e7c3532ad5880f1f42 (diff)
downloadboost-000f1c3a0ded2958fb0a69231a4d7e810998b987.tar.gz
Avoid generating massive numbers of <implicit-dependency>s as this causes a significant performance cost.
-rw-r--r--Jamroot20
1 files changed, 19 insertions, 1 deletions
diff --git a/Jamroot b/Jamroot
index 6871b87d06..662c503345 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 ;
import threadapi-feature ;
path-constant BOOST_ROOT : . ;
@@ -246,7 +250,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.