Boost logo

Boost :

From: Gennaro Prota (gennaro_prota_at_[hidden])
Date: 2006-06-15 09:56:30


I changed the subject line as this is of more interest than the
original title could suggest. For those who are just tuned in, there's
ongoing work for having a more consistent and rational identification
system for supported compilers, platforms and standard libraries.

A wiki page is at

http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostConfig

and contributions are welcome, especially for macro definitions marked
with '?'.

Previous discussion has raised at least two important points:

* the amount of work needed for conversion to the new system (either
of the Boost.Config code itself and of client code) is non negligible
and will take time

* a choice is needed for compilers which offer emulation modes, e.g.
Comeau C++, which defines _MSC_VER when emulating VC++.

I want to add another couple of remarks

* the BOOST_TESTED_AT macro; it seems we forgot about this, but we
should be able to write:

#if BOOST_WORKAROUND (BOOST_CXX_MSVC, BOOST_TESTED_AT(...))

or its moral equivalent. This means that either BOOST_TESTED_AT or
BOOST_WORKAROUND can't have the current and the proposed syntax,
respectively

2) rather than doing all the #ifdef/define/endif machine in
suffix.hpp, wouldn't it be more elegant to have a prefix.hpp?

// at the top of config.hpp
#include <boost/config/prefix.hpp>

// in prefix.hpp
#define BOOST_ABSENT() 0

  // Comeau C++
#define BOOST_CXX_COMO BOOST_ABSENT()
  // Digital Mars C++
#define BOOST_CXX_DMC BOOST_ABSENT()
  // Intel C++
#define BOOST_CXX_INTELC BOOST_ABSENT()
  // GNU C++
#define BOOST_CXX_GNUC BOOST_ABSENT()
  ....

Cheers,
--Gennaro.


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