Boost logo

Boost :

Subject: Re: [boost] [predef] Using predef-check on 'develop' problem
From: Edward Diener (eldiener_at_[hidden])
Date: 2015-05-26 14:18:53


On 5/26/2015 1:02 PM, Rene Rivera wrote:
> On Tue, May 26, 2015 at 9:48 AM, Edward Diener <eldiener_at_[hidden]>
> wrote:
>
>> On 5/25/2015 9:34 PM, Rene Rivera wrote:
>>
>>> On Mon, May 25, 2015 at 8:25 PM, Edward Diener <eldiener_at_[hidden]>
>>> wrote:
>>>
>>>
>>>>
>>>> If you look at the predef info_as_cpp tests, such as at
>>>
>>>>
>>>>
>>>> http://www.boost.org/development/tests/develop/developer/output/NA-QNX650-SP1-ARM-boost-bin-v2-libs-predef-test-info_as_cpp-test-qcc-4-4-2_arm-debug-debug-symbols-off.html
>>>> ,
>>>> you will see that no compiler is being detected.
>>>>
>>>>
>>> Ah.. I see: BOOST_COMP_GNUC = 40400002 (4,4,2) | Gnu GCC C/C++
>>>
>>> Maybe you meant this link: <
>>>
>>> http://www.boost.org/development/tests/develop/developer/output/oracle-intel-S2-stlport4-boost-bin-v2-libs-predef-test-info_as_cpp-test-sun-stlport4-release-threading-multi.html
>>>
>>>>
>>>> ??
>>>
>>>
>>> Yet if you look at my VMD test, called test_variadic_macro, at
>>>>
>>>> http://www.boost.org/development/tests/develop/developer/output/oracle-intel-S2-stlport4-boost-bin-v2-libs-vmd-test-test_variadic_macro-test-sun-stlport4-release-threading-multi.html
>>>> ,
>>>> you can see that I am picking up that '__SUNPRO_CC' is defined.
>>>>
>>>> Yet if '__SUNPRO_CC' is defined then predef should be picking that up and
>>>> setting BOOST_COMP_SUNPRO to the compiler being detected.
>>>>
>>>>
>>> Right.
>>>
>>> Along with that problem is that in my VMD tests, aside from the
>>>
>>>> test_variadic_macro test, I have the predef-check as specified in my OP
>>>> above. Yet this is being triggered for the SunOS operating system tests
>>>> when clearly the compiler is not BOOST_COMP_GNUC, and '-std=c++0x' is
>>>> erroneously being added for the VMD tests which causes them all to fail
>>>> because the tests are being run with '-compat=5 -library=stlport4'. So
>>>> here
>>>> again, with SunOS and Oracle ( aka Sun ) C++, predef does not appear to
>>>> be
>>>> working correctly.
>>>>
>>>
>>>
>>> Well, let me fix the first problem. Perhaps it's a side effect of the Sun
>>> compiler not being detected.
>>>
>>
>> I appreciate your efforts to fix this problem.
>>
>> As a side note on the Android tests using gcc, both predef and my own
>> test_variadic_macro test are finding that gcc is being detected but the
>> predef-check statement mentioned in my OP is also not adding '-std=c++0x'
>> to the command line there.
>
>
> FYI..
>
> a) I just don't see how the sunpro detection is not working. Logic looks
> correct. But I'll keep scratching head and looking at the code :-\
>
> b) I can't replicate your original problem either. I have a test that has
> the exact same condition and it works to add two compile options as needed.
> It's the predef/check_value test, for which you can compare the clang vs.
> gcc output here <https://travis-ci.org/boostorg/predef>. And I'm waiting on
> the full Boost test to cycle to check other platforms.

Is there any way you can add this test to the Boost regression tests ?

I don't run any tests personally under Android or QNX OSs, but I can't
help thinking that this may be a Boost Build problem or an OS problem
if it is not a predef problem.

In my VMD jamfile I have at the top:

import ../../predef/check/predef
     : check require
     : predef-check predef-require ;

Does that look right ?

The line in my VMD tests for, let's say, the test_doc_empty.cpp test is:

[ run test_doc_empty.cpp : : : [ predef-check "BOOST_COMP_GNUC >= 4.3"
"BOOST_OS_QNX == 0" : : <cxxflags>-std=c++0x ] ]

Does that look right ?

Yet on the Android regression test for this at
http://www.boost.org/development/tests/develop/developer/CrystaX-NET-apilevel-21-armeabi-vmd-gcc-4-9-test_doc_empty-variants_.html
I see this command line:

"/home/cislave/.crystax/ci-boost/regression/android-21-armeabi-develop/test/develop/regression/armeabi/gcc-4.9/g++-4.9"
  -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall
-pedantic -fPIC -pedantic-errors -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I".."
-c -o
"/home/cislave/.crystax/ci-boost/regression/android-21-armeabi-develop/test/develop/regression/armeabi/test/results/boost/bin.v2/libs/vmd/test/test_doc_empty.test/gcc-4.9/release/target-os-android/threading-multi/test_doc_empty.o"
"../libs/vmd/test/test_doc_empty.cpp"

and there is obviously no '-std=c++0x' being added there.

So I am as baffled as you are.

I can ask the Android testers to manually add the '-std=c++0x' to the
test if there is a way for them to do it just for the VMD tests as part
of there regression tests.


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