Hi Steven,

I have been following your advice and tried to merge the "make0()" function call to compute a target's fate into the state machine implemented in make1.c, to support a more dynamic build process. In general this is working great (i.e. I can now freely mix config-like targets that compute parameters that are later used in the build, with other targets). However, there is one set of use-cases that's still causing me some headache: actions that update more than one target, i.e. that require other targets to be "rebuilt".

While I understand the situation (as well as the implementation with "force_rebuilds()") well, I'm still struggling with some of the code:

Why is the loop in https://github.com/boostorg/build/blob/develop/src/engine/make1.c#L1220-L1227 launching all the targets that are to be updated by the current command, and then letting that command wait for them to be ready ? (I see the corresponding "unlock" code is https://github.com/boostorg/build/blob/develop/src/engine/make1.c#L939-L948, but I don't quite understand that part of the workflow.)

Many thanks for your help,

Stefan
-- 

      ...ich hab' noch einen Koffer in Berlin...