OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2011, 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 29 matching lines...) Expand all Loading... | |
40 /* COMPILER(CLANG) - Clang */ | 40 /* COMPILER(CLANG) - Clang */ |
41 #if defined(__clang__) | 41 #if defined(__clang__) |
42 #define WTF_COMPILER_CLANG 1 | 42 #define WTF_COMPILER_CLANG 1 |
43 | 43 |
44 #define CLANG_PRAGMA(PRAGMA) _Pragma(PRAGMA) | 44 #define CLANG_PRAGMA(PRAGMA) _Pragma(PRAGMA) |
45 | 45 |
46 /* Specific compiler features */ | 46 /* Specific compiler features */ |
47 | 47 |
48 #define WTF_COMPILER_SUPPORTS_CXX_EXPLICIT_CONVERSIONS __has_feature(cxx_explici t_conversions) | 48 #define WTF_COMPILER_SUPPORTS_CXX_EXPLICIT_CONVERSIONS __has_feature(cxx_explici t_conversions) |
49 #define WTF_COMPILER_SUPPORTS_BLOCKS __has_feature(blocks) | 49 #define WTF_COMPILER_SUPPORTS_BLOCKS __has_feature(blocks) |
50 #define WTF_COMPILER_SUPPORTS_C_STATIC_ASSERT __has_extension(c_static_assert) | |
51 #define WTF_COMPILER_SUPPORTS_CXX_STATIC_ASSERT __has_extension(cxx_static_asser t) | |
52 #define WTF_COMPILER_SUPPORTS_HAS_TRIVIAL_DESTRUCTOR __has_extension(has_trivial _destructor) | 50 #define WTF_COMPILER_SUPPORTS_HAS_TRIVIAL_DESTRUCTOR __has_extension(has_trivial _destructor) |
53 | 51 |
54 #endif | 52 #endif |
55 | 53 |
56 #ifndef CLANG_PRAGMA | 54 #ifndef CLANG_PRAGMA |
57 #define CLANG_PRAGMA(PRAGMA) | 55 #define CLANG_PRAGMA(PRAGMA) |
58 #endif | 56 #endif |
59 | 57 |
60 /* COMPILER(MSVC) - Microsoft Visual C++ */ | 58 /* COMPILER(MSVC) - Microsoft Visual C++ */ |
61 #if defined(_MSC_VER) | 59 #if defined(_MSC_VER) |
62 #define WTF_COMPILER_MSVC 1 | 60 #define WTF_COMPILER_MSVC 1 |
63 #endif | 61 #endif |
64 | 62 |
65 /* COMPILER(GCC) - GNU Compiler Collection */ | 63 /* COMPILER(GCC) - GNU Compiler Collection */ |
66 #if defined(__GNUC__) | 64 #if defined(__GNUC__) |
67 #define WTF_COMPILER_GCC 1 | 65 #define WTF_COMPILER_GCC 1 |
68 #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL __) | 66 #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL __) |
69 #define GCC_VERSION_AT_LEAST(major, minor, patch) (GCC_VERSION >= (major * 10000 + minor * 100 + patch)) | 67 #define GCC_VERSION_AT_LEAST(major, minor, patch) (GCC_VERSION >= (major * 10000 + minor * 100 + patch)) |
70 #else | 68 #else |
71 /* Define this for !GCC compilers, just so we can write things like GCC_VERSION_ AT_LEAST(4, 1, 0). */ | 69 /* Define this for !GCC compilers, just so we can write things like GCC_VERSION_ AT_LEAST(4, 1, 0). */ |
72 #define GCC_VERSION_AT_LEAST(major, minor, patch) 0 | 70 #define GCC_VERSION_AT_LEAST(major, minor, patch) 0 |
73 #endif | 71 #endif |
74 | 72 |
75 /* Specific compiler features */ | 73 /* Specific compiler features */ |
76 #if COMPILER(GCC) && !COMPILER(CLANG) | 74 #if COMPILER(GCC) && !COMPILER(CLANG) |
Nico
2014/12/15 22:41:21
Maybe the !CLANG isn't needed anymore? (not for th
Mostyn Bramley-Moore
2014/12/15 23:06:17
Acknowledged. I will test it and submit another C
| |
77 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L | |
78 /* C11 support */ | |
79 #define WTF_COMPILER_SUPPORTS_C_STATIC_ASSERT 1 | |
80 #endif | |
81 #if defined(__GXX_EXPERIMENTAL_CXX0X__) || (defined(__cplusplus) && __cplusplus >= 201103L) | |
82 /* C++11 support */ | |
83 #if GCC_VERSION_AT_LEAST(4, 3, 0) | |
84 #define WTF_COMPILER_SUPPORTS_CXX_STATIC_ASSERT 1 | |
85 #endif | |
86 #if GCC_VERSION_AT_LEAST(4, 5, 0) | 75 #if GCC_VERSION_AT_LEAST(4, 5, 0) |
Nico
2014/12/15 22:41:21
We require gcc 4.8, you can remove this check too
Mostyn Bramley-Moore
2014/12/15 23:06:17
Done.
| |
87 #define WTF_COMPILER_SUPPORTS_CXX_EXPLICIT_CONVERSIONS 1 | 76 #define WTF_COMPILER_SUPPORTS_CXX_EXPLICIT_CONVERSIONS 1 |
88 #endif | 77 #endif |
89 #endif /* defined(__GXX_EXPERIMENTAL_CXX0X__) || (defined(__cplusplus) && __cplu splus >= 201103L) */ | |
90 #endif /* COMPILER(GCC) */ | 78 #endif /* COMPILER(GCC) */ |
91 | 79 |
92 /* ==== Compiler features ==== */ | 80 /* ==== Compiler features ==== */ |
93 | 81 |
94 | 82 |
95 /* ALWAYS_INLINE */ | 83 /* ALWAYS_INLINE */ |
96 | 84 |
97 #ifndef ALWAYS_INLINE | 85 #ifndef ALWAYS_INLINE |
98 #if COMPILER(GCC) && defined(NDEBUG) && !COMPILER(MINGW) | 86 #if COMPILER(GCC) && defined(NDEBUG) && !COMPILER(MINGW) |
99 #define ALWAYS_INLINE inline __attribute__((__always_inline__)) | 87 #define ALWAYS_INLINE inline __attribute__((__always_inline__)) |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
194 #define WTF_COMPILER_SUPPORTS_PRETTY_FUNCTION 1 | 182 #define WTF_COMPILER_SUPPORTS_PRETTY_FUNCTION 1 |
195 #define WTF_PRETTY_FUNCTION __PRETTY_FUNCTION__ | 183 #define WTF_PRETTY_FUNCTION __PRETTY_FUNCTION__ |
196 #elif COMPILER(MSVC) | 184 #elif COMPILER(MSVC) |
197 #define WTF_COMPILER_SUPPORTS_PRETTY_FUNCTION 1 | 185 #define WTF_COMPILER_SUPPORTS_PRETTY_FUNCTION 1 |
198 #define WTF_PRETTY_FUNCTION __FUNCSIG__ | 186 #define WTF_PRETTY_FUNCTION __FUNCSIG__ |
199 #else | 187 #else |
200 #define WTF_PRETTY_FUNCTION __FUNCTION__ | 188 #define WTF_PRETTY_FUNCTION __FUNCTION__ |
201 #endif | 189 #endif |
202 | 190 |
203 #endif /* WTF_Compiler_h */ | 191 #endif /* WTF_Compiler_h */ |
OLD | NEW |