On July 9, 2016 6:55:10 PM Ion GaztaƱaga
On 09/07/2016 17:13, Andrey Semashev wrote:
It looks like it might be related to the <conditional> requirements in the project. Can you try commenting these lines in log/build/Jamfile.v2 individually?
Good catch. I've commented code and found the error is in the function
rule check-message-compiler ( properties * )
I've changed the line 117:
if <target-os>windows in $(properties)
to
if <target-os>windows in $(properties) && !<toolset>gcc in $(properties)
and the error goes away. It seems that the line 121:
local has_mc = \ [ configure.builds (...) : $(properties) : message-compiler ] ;
is where the problem lies.
The Boost.log documentation states that "at some point the library will require a Message Compiler tool (mc.exe), which is not available in MinGW, Cygwin and some versions of MSVC Express Edition". The check seems to hurt Boost.Build when using a MINGW environment.
I don't know if my change makes any sense as windows supports many compilers (clang, intel, borland, ) so maybe the "if" condition should be more complex. I've applied the change locally and regression tests are up again.
There are multiple message compilers on Windows. MinGW ships windmc, IIRC. It can also work with mc from MSVC if one is found. So disabling it based on the C++ compiler is not quite correct. The whole point of this <conditional> stuff is to detect if there's any way to build .mc files, and I would really prefer if Boost.Build handled that. I think, unless I'm doing something terribly wrong, Boost.Build should be fixed. For now you can also try building with define=BOOST_LOG_WITHOUT_EVENT_LOG in b2 command line. This should save you from having to modify the vanilla Jamfile.