aboutsummaryrefslogtreecommitdiff
path: root/build2/cc
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-02-10 08:15:48 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-02-13 12:42:42 +0200
commitabccaf9596461215fce0e32322133fb6c39be44f (patch)
tree3fc16a6e6142d65e6b47ae686ab845cc164478cc /build2/cc
parentbcb2a89e111a918a48a132a2a29e0c26d724591d (diff)
Implement parallel error propagation, keep_going mode
Keep going is the default but there is now the -s|--serial-stop that makes the driver run serially and stop at first error. Also fix some lockups, other minor improvements/features.
Diffstat (limited to 'build2/cc')
-rw-r--r--build2/cc/compile.cxx6
1 files changed, 2 insertions, 4 deletions
diff --git a/build2/cc/compile.cxx b/build2/cc/compile.cxx
index e08b40b..c8394a9 100644
--- a/build2/cc/compile.cxx
+++ b/build2/cc/compile.cxx
@@ -891,9 +891,7 @@ namespace build2
//
auto update = [&trace, a] (path_target& pt, timestamp ts) -> bool
{
- //@@ MT extenal modification sync.
-
- target_state os (pt.atomic_state ()); //@@ MT: do we need atomic?
+ target_state os (pt.synchronized_state ()); //@@ MT? matched?
if (os != target_state::unchanged)
{
@@ -902,7 +900,7 @@ namespace build2
// have been in target_state::changed because of a dependency
// extraction run for some other source file.
//
- target_state ns (execute_direct (a, pt));
+ target_state ns (execute_direct (a, pt)); //@@ MT extenal modification sync.
if (ns != os && ns != target_state::unchanged)
{