> In think the key question is at which level such filtering should be done. The
possible places are

Right now I have only remote idea what is the different between three different places is. I'll need to familiarize myself with the code better.

> Note that neither of those approaches will affect property propagation.

I see at least one case when it is needed. Imagine the conversion:

EXE <- OBJ <- C <- ... <- EXE <- OBJ <- C

The left most EXE is the final executable that we want to produce. The right most - is an intermediate tool that we build in order to generate source C files for the first EXE. The ellipsis in the middle represent some custom generator (like a quick book one) that links the tools and generated sources together.

Now for the second EXE (the tool) we may want to avoid some properties from the first EXE. Ideally it should get only the properties from the command line + project properties. Just like if we started bjam to build just the second .exe. The generator in the middle should be able to do this.

Though I would agree that this is rather a special case.

> Ehm, it occurred to me that we need to propagate relevant features back.

True, I didn't think about this.

--
Best regards,
 Alexey Pakhunov.