Boost logo

Boost :

From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2020-05-01 15:59:53


On 2020-05-01 18:50, Edward Diener via Boost wrote:
> On 5/1/2020 10:37 AM, Andrey Semashev via Boost wrote:
>> On 2020-03-30 19:45, Edward Diener via Boost wrote:
>>>
>>> 2) Updating Boost Config to support the clang-based compilers. I have
>>> done this and the PR has been merged to 'develop' on Boost Config.
>>>
>>> 3) In the update to Boost Config, I have created these macros:
>>>
>>> a) BOOST_BORLANDC = __BORLANDC__ with __clang__ not defined
>>> b) BOOST_CODEGEARC = __CODEGEARC__ with __clang__ not defined
>>> c) BOOST_EMBTC = Embarcadero C++ compilers with __clang__ defined
>>
>> Are these macros not documented in Boost.Config?
>
> They are not documented in the Boost.Config documentation. But neither
> are any other BOOST_ compiler specific macros.

They are documented here:

https://github.com/boostorg/config/blob/205b5451822f8e0ad24d62a0c47575178dce20c8/doc/macro_reference.qbk#L1349

See BOOST_MSVC, BOOST_GCC, BOOST_CLANG, etc.

> BOOST_BORLANDC = __BORLANDC__ && !__clang__
> BOOST_CODEGEARC = __CODEGARC__ && !__clang__
> BOOST_EMBTC = __CODEGEARC__ && __clang__
>
> I did not want to have to type the equivalent of the long form whenever
> Boost config.hpp was included in some library's code, so I created the
> macros in borland.hpp and embarcadero.hpp in Boost.Config. In cases in a
> library's code where Boost config.hpp is not being included in some TU
> (rare) I create the equivalent of the long form as my fix.
>
> The idea of my PRs to incorporate Embracadero's clang-based compilers
> into Boost was to change all the old references to __BORLANDC__ and
> __CODEGEARC__ to BOOST_BORLANDC and BOOST_CODEGEARC respectively so that
> the Embarcadero clang based compilers are not affected by them. There
> are still bugs in the Embarcadero clang based compilers, but much, much
> less than in the old bcc32.

Having the dedicated macros to detect particular compilers is fine. But
we need to document what those macros mean (i.e. which compilers they
represent).


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