|
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