Boost logo

Boost :

Subject: Re: [boost] boost [vmd]: configuration issue in Jamfile.v2 for Oracle Solaris Studio compiler
From: Edward Diener (eldiener_at_[hidden])
Date: 2015-05-25 20:56:20


On 5/25/2015 7:42 PM, Aparna Kumta wrote:
> On 05/21/15 21:46, Edward Diener wrote:
>> On 5/21/2015 5:32 PM, Aparna Kumta wrote:
>>> I am looking at my test run for vmd in develop branch.
>>> http://www.boost.org/development/tests/develop/developer/vmd.html under
>>> SunOS.
>>>
>>> My tests are run with cxxflags="-compat=5 -library=stlport4" as
>>> configured in user-config.jam
>>>
>>> An example of a test,
>>> http://www.boost.org/development/tests/develop/developer/output/oracle-sparc-S2-stlport4-boost-bin-v2-libs-vmd-test-test_after_identifier_elem-test-sun-stlport4-release-threading-multi.html
>>>
>>>
>>> The test fails as follows:
>>>
>>> "CC" -std=c++0x -std=c++11 -compat=5 -library=stlport4 -xO4 -mt
>>> -erroff=%none -m32 -KPIC -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I".." -c -o
>>> "/export/home/sstrunk-tester/boost_regression/boost_sparc-S2_stlport4/results/boost/bin.v2/libs/vmd/test/test_after_identifier_elem.test/sun-stlport4/release/threading-multi/test_after_identifier_elem.o"
>>>
>>> "../libs/vmd/test/test_after_identifier_elem.cpp"
>>>
>>> CC: -compat=5 can not be used with -std
>>> CC: -library=stlport4 cannot be used with -std=c++11
>>>
>>>
>>>
>>> If I compile the test manually without '-std=c++0x -std=c++11', the
>>> test compiles OK.
>>>
>>> %CC -compat=5 -library=stlport4 -xO4 -mt -erroff=%none -m64 -KPIC
>>> -DBOOST_AL0%L_NO_LIB=1 -DNDEBUG -I.. -c -o
>>> ./test_after_identifier_elem.o
>>> ../libs/vmd/test/test_after_identifier_elem.cpp
>>> %
>>>
>>>
>>> It looks like boost_root/libs/vmd/test/Jamfile.v2 needs to be modified
>>> for this compiler.
>>> Any ideas on how this can be done?
>>
>> I have updated the jam file in the 'develop' version. When you try
>> again, after pulling the latest vmd from 'develop', there may still be
>> a problem for SunOS but at least I will be able to tell what is
>> causing it.
> The results on develop now fail with
>
> "CC" -std=c++0x -compat=5 -library=stlport4 -xO4 -mt -erroff=%none -m32
> -KPIC -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I".." -c -o
> "/export/home/sstrunk-tester/boost_regression/boost_sparc-S2_stlport4/results/boost/bin.v2/libs/vmd/test/test_after_array_elem.test/sun-stlport4/release/threading-multi/test_after_array_elem.o"
> "../libs/vmd/test/test_after_array_elem.cpp"
>
> CC: -compat=5 can not be used with -std
> CC: -library=stlport4 cannot be used with -std=c++11
>
> For Oracle Solaris Studio C++ compiler, -std=c++0x is equivalent to
> -std=c++11.
>
> See
> http://www.boost.org/development/tests/develop/developer/output/oracle-sparc-S2-stlport4-boost-bin-v2-libs-vmd-test-test_after_array_elem-test-sun-stlport4-release-threading-multi.html

This is a Boost.predef problem. I am using predef in my jamfile to say
that if a test uses gcc 4.3 or higher and the QNX OS is not being used,
add the =std=c++0x option to the compilation of a VMD test. Even though
I can clearly see in the predef tests for your setup that gcc is not
being used as the compiler it is still acting as if gcc 4.3 or higher is
being used for the VMD tests.

I will create a separate message about the failure of predef to work
properly here, and hopefully the predef author will look into this problem.

As an aside the configuration which Boost VMD uses to determine whether
a compiler supports variadic macros or not has always specified that for
the Oracle C++ ( formerly Sun C++ ) compiler variadic macros are not
supported. I need to update this based on the version of Oracle C++
being used as I believe that for Oracle C++ 12.3 and 12.4 variadic
macros may be supported. You can override what the configuration file
determines by adding -DBOOST_PP_VARIADICS=1 to your command line for the
VMD tests if you know that your setup supports variadic macros. VMD
tests will fail without compiler variadic macro support.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk