$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r79586 - trunk/tools/build/v2/engine
From: jurko.gospodnetic_at_[hidden]
Date: 2012-07-18 10:50:54
Author: jurko
Date: 2012-07-18 10:50:53 EDT (Wed, 18 Jul 2012)
New Revision: 79586
URL: http://svn.boost.org/trac/boost/changeset/79586
Log:
Updated Boost Jam implementation comment related to it adding internal fake INCLUDES relationships between targets built by a single action in order to make sure none of them may get used until their action had successfully completed its work.
Text files modified: 
   trunk/tools/build/v2/engine/compile.c |    17 ++++++++++++++---                       
   1 files changed, 14 insertions(+), 3 deletions(-)
Modified: trunk/tools/build/v2/engine/compile.c
==============================================================================
--- trunk/tools/build/v2/engine/compile.c	(original)
+++ trunk/tools/build/v2/engine/compile.c	2012-07-18 10:50:53 EDT (Wed, 18 Jul 2012)
@@ -172,9 +172,20 @@
          * action if possible and not rebuild targets not actually depending on
          * targets that are not up to date.
          *
-         * TODO: Using the 'include' feature might have side-effects due to
-         * interaction with the actual 'inclusion scanning' system. This should
-         * be checked.
+         * TODO: Current solution using fake INCLUDES relations may cause
+         * actions to be run when the affected targets are built by multiple
+         * actions. E.g. if we have the following actions registered in the
+         * order specified:
+         *     (I) builds targets A & B
+         *     (II) builds target B
+         * and we want to build a target depending on target A, then both
+         * actions (I) & (II) will be run, even though the second one does not
+         * have any direct relationship to target A. Consider whether this is
+         * desired behaviour or not. It could be that Boost Build should (or
+         * possibly already does) run all actions registered for a given target
+         * if any of them needs to be run in which case our INCLUDES relations
+         * are not actually causing any actions to be run that would not have
+         * been run without them.
          */
         if ( action->targets )
         {