<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jun 12, 2017 at 9:29 AM, Rene Rivera via Boost-build <span dir="ltr">&lt;<a href="mailto:boost-build@lists.boost.org" target="_blank">boost-build@lists.boost.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">There&#39;s been a long standing &quot;issue&quot; with how the b2 configure checks work. Or rather how some times they don&#39;t work. In particular the issue is that the set of properties considered relevant for the configuration checks was fixed. As of last night that is now resolved &lt;<a href="https://github.com/boostorg/build/commit/450c25c3b52f5ddcb323140f8423adf3b85b6b1a" target="_blank">https://github.com/boostorg/b<wbr>uild/commit/450c25c3b52f5ddcb3<wbr>23140f8423adf3b85b6b1a</a>&gt;.<div><br></div><div>As the commit mentions the set is no longer fixed and is configurable by users. The changes now mean that:</div><div><br></div><div>1. Any subfeatures of the top level relevant feature set are also considered as part of the set. This means that one can a configuration like below to support multiple invocations of the same toolset with different options. In particular the STD options:</div><div><br></div><div>=== user-config.jam ===</div><div>import feature ;</div><div><div>using clang ;</div><div>feature.subfeature toolset clang : std : cxx03 cxx11 cxx14 cxx17 : optional composite propagated ;<br></div><div>feature.compose &lt;toolset-clang:std&gt;cxx03 : &lt;cxxflags&gt;-std=c++03 ;<br></div><div>feature.compose &lt;toolset-clang:std&gt;cxx11 : &lt;cxxflags&gt;-std=c++11 ;</div><div>feature.compose &lt;toolset-clang:std&gt;cxx14 : &lt;cxxflags&gt;-std=c++14 ;</div><div>===</div><div><br></div><div>And one can then invoke &quot;b2 toolset=clang-cxx14,clang-cxx1<wbr>1&quot; and get non-colliding configuration checks.</div></div></div></blockquote><div><br></div><div>This sounds very cool. I&#39;d like to start using it, but hoping for some more details. Specifically how does it work with version numbers? With the above user-config.jam could I invoke &quot;b2 toolset=clang-3.8-cxx11,clang-<wbr>3.9-cxx14&quot;? Does this work on the msvc side as well...the version number detection seems a bit more rough there?<br></div><div><br></div><div>Or do I need to do something version specific for each version in my user-config.jam? </div><div><div>=== user-config.jam ===</div><div>import feature ;</div><div><div>using clang : 3.8 ;</div><div>feature.subfeature toolset clang-3.8 : std : cxx03 cxx11 : optional composite propagated ;<br></div><div>feature.compose &lt;toolset-clang-3.8:std&gt;cxx03 : &lt;cxxflags&gt;-std=c++03 ;<br></div><div>feature.compose &lt;toolset-clang-3.8:std&gt;cxx11 : &lt;cxxflags&gt;-std=c++11 ;</div><div><br class="m_448068560637222500gmail-Apple-interchange-newline">using clang : 3.9 ;</div><div>feature.subfeature toolset clang-3.9 : std : cxx14 cxx1z : optional composite propagated ;<br></div><div>feature.compose &lt;toolset-clang-3.9:std&gt;cxx14 : &lt;cxxflags&gt;-std=c++14 ;<br></div><div>feature.compose &lt;toolset-clang-3.9:std&gt;cxx1z : &lt;cxxflags&gt;-std=c++1z ;</div><div>===</div></div></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><br></div><div>2. The set of relevant features is now soft wired as the set of subfeatures of the &quot;&lt;composite&gt;&quot; feature. Which means ones can add to the default set &lt;<a href="https://github.com/boostorg/build/blob/develop/src/build/configure.jam#L26" target="_blank">https://github.com/boostorg/b<wbr>uild/blob/develop/src/build/co<wbr>nfigure.jam#L26</a>&gt;. For example to add threading choice to the relevant features:</div><div><br></div><div>=== user-config.jam ===</div><div>import feature ;</div><div>import configure ;</div><div>feature.compose &lt;configure&gt; : &lt;threading&gt; ;</div><div>===</div></div></div></blockquote><div><br></div><div>I&#39;m not entirely clear on what this means, could you give an example of what this implies?</div><div><br></div><div>Thanks,</div><div>Tom </div></div></div></div>