/*============================================================================= Copyright (c) 2001-2003 Joel de Guzman http://spirit.sourceforge.net/ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) =============================================================================*/ #if !defined(BOOST_SPIRIT_CONFIG_HPP) #define BOOST_SPIRIT_CONFIG_HPP #include /////////////////////////////////////////////////////////////////////////////// // // Compiler check: // // Historically, Spirit supported a lot of compilers, including (to some // extent) poorly conforming compilers such as VC6. Spirit v1.6.x will be // the last release that will support older poorly conforming compilers. // Starting from Spirit v1.8.0, ill conforming compilers will not be // supported. If you are still using one of these older compilers, you can // still use Spirit v1.6.x. // // The reason why Spirit v1.6.x worked on old non-conforming compilers is // that the authors laboriously took the trouble of searching for // workarounds to make these compilers happy. The process takes a lot of // time and energy, especially when one encounters the dreaded ICE or // "Internal Compiler Error". Sometimes searching for a single workaround // takes days or even weeks. Sometimes, there are no known workarounds. This // stifles progress a lot. And, as the library gets more progressive and // takes on more advanced C++ techniques, the difficulty is escalated to // even new heights. // // Spirit v1.6.x will still be supported. Maintenance and bug fixes will // still be applied. There will still be active development for the back- // porting of new features introduced in Spirit v1.8.0 (and Spirit 1.9.0) // to lesser able compilers; hopefully, fueled by contributions from the // community. For instance, there is already a working AST tree back-port // for VC6 and VC7 by Peder Holt. // // If you got here somehow, your compiler is known to be poorly conforming // WRT ANSI/ISO C++ standard. Library implementers get a bad reputation when // someone attempts to compile the code on a non-conforming compiler. She'll // be confronted with tons of compiler errors when she tries to compile the // library. Such errors will somehow make less informed users conclude that // the code is poorly written. It's better for the user to see a message // "sorry, this code has not been ported to your compiler yet", than to see // pages and pages of compiler error messages. // ///////////////////////////////////////////////////////////////////////////////// #if (defined(BOOST_MSVC) && (BOOST_MSVC < 1310)) \ || (defined(__BORLANDC__) && (__BORLANDC__ <= 0x570)) \ || (defined(__GNUC__) && (__GNUC__ < 3)) \ || (defined(__GNUC__) && (__GNUC__ == 3) && (__GNUC_MINOR__ < 1)) # error "Compiler not supported. See note in " #else // Pass... Compiler supported. #endif #endif