Initial implementation of exclusive definition of compiler detection

with emulated definitions.
This commit is contained in:
Rene Rivera
2014-01-16 15:50:19 -06:00
parent 3ccc33fa28
commit a3a555610c
30 changed files with 516 additions and 175 deletions

View File

@@ -1,5 +1,5 @@
/*
Copyright Rene Rivera 2008-2013
Copyright Rene Rivera 2008-2014
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)
@@ -8,6 +8,10 @@ http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_PREDEF_COMPILER_GCC_H
#define BOOST_PREDEF_COMPILER_GCC_H
/* Other compilers that emulate this one need to be detected first. */
#include <boost/predef/compiler/clang.h>
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>
@@ -30,19 +34,25 @@ Version number available as major, minor, and patch (if available).
#define BOOST_COMP_GNUC BOOST_VERSION_NUMBER_NOT_AVAILABLE
#if defined(__GNUC__)
# undef BOOST_COMP_GNUC
# if !defined(BOOST_COMP_GNUC) && defined(__GNUC_PATCHLEVEL__)
# define BOOST_COMP_GNUC \
# if !defined(BOOST_COMP_GNUC_DETECTION) && defined(__GNUC_PATCHLEVEL__)
# define BOOST_COMP_GNUC_DETECTION \
BOOST_VERSION_NUMBER(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__)
# endif
# if !defined(BOOST_COMP_GNUC)
# define BOOST_COMP_GNUC \
# if !defined(BOOST_COMP_GNUC_DETECTION)
# define BOOST_COMP_GNUC_DETECTION \
BOOST_VERSION_NUMBER(__GNUC__,__GNUC_MINOR__,0)
# endif
#endif
#if BOOST_COMP_GNUC
#ifdef BOOST_COMP_GNUC_DETECTION
# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
# define BOOST_COMP_GNUC_EMULATED BOOST_COMP_GNUC_DETECTION
# else
# undef BOOST_COMP_GNUC
# define BOOST_COMP_GNUC BOOST_COMP_GNUC_DETECTION
# endif
# define BOOST_COMP_GNUC_AVAILABLE
# include <boost/predef/detail/comp_detected.h>
#endif
#define BOOST_COMP_GNUC_NAME "Gnu GCC C/C++"
@@ -50,5 +60,10 @@ Version number available as major, minor, and patch (if available).
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GNUC,BOOST_COMP_GNUC_NAME)
#ifdef BOOST_COMP_GNUC_EMULATED
#include <boost/predef/detail/test.h>
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GNUC_EMULATED,BOOST_COMP_GNUC_NAME)
#endif
#endif