Compiler.h: add macro GCC_OLDER_THAN()
This commit is contained in:
parent
92eeca3ba7
commit
0964b06240
@ -31,13 +31,21 @@
|
||||
#define GCC_CHECK_VERSION(major, minor) \
|
||||
(defined(__GNUC__) && GCC_VERSION >= GCC_MAKE_VERSION(major, minor, 0))
|
||||
|
||||
/**
|
||||
* Are we building with gcc (not clang or any other compiler) and a
|
||||
* version older than the specified one?
|
||||
*/
|
||||
#define GCC_OLDER_THAN(major, minor) \
|
||||
(defined(__GNUC__) && !defined(__clang__) && \
|
||||
GCC_VERSION < GCC_MAKE_VERSION(major, minor, 0))
|
||||
|
||||
#ifdef __clang__
|
||||
# define CLANG_VERSION GCC_MAKE_VERSION(__clang_major__, __clang_minor__, __clang_patchlevel__)
|
||||
# if __clang_major__ < 3
|
||||
# error Sorry, your clang version is too old. You need at least version 3.1.
|
||||
# endif
|
||||
#elif defined(__GNUC__)
|
||||
# if !GCC_CHECK_VERSION(4,6)
|
||||
# if GCC_OLDER_THAN(4,6)
|
||||
# error Sorry, your gcc version is too old. You need at least version 4.6.
|
||||
# endif
|
||||
#else
|
||||
@ -138,7 +146,7 @@
|
||||
#if defined(__cplusplus)
|
||||
|
||||
/* support for C++11 "override" was added in gcc 4.7 */
|
||||
#if !defined(__clang__) && !GCC_CHECK_VERSION(4,7)
|
||||
#if GCC_OLDER_THAN(4,7)
|
||||
#define override
|
||||
#define final
|
||||
#endif
|
||||
|
@ -35,7 +35,7 @@
|
||||
#include <new>
|
||||
#include <utility>
|
||||
|
||||
#if !defined(__clang__) && __GNUC__ && !GCC_CHECK_VERSION(4,8)
|
||||
#if GCC_OLDER_THAN(4,8)
|
||||
#include <type_traits>
|
||||
#endif
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
*/
|
||||
template<class T>
|
||||
class Manual {
|
||||
#if !defined(__clang__) && __GNUC__ && !GCC_CHECK_VERSION(4,8)
|
||||
#if GCC_OLDER_THAN(4,8)
|
||||
/* no alignas() on gcc < 4.8: apply worst-case fallback */
|
||||
__attribute__((aligned(8)))
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user