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) |
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) | |
87 #define WTF_COMPILER_SUPPORTS_CXX_EXPLICIT_CONVERSIONS 1 | 75 #define WTF_COMPILER_SUPPORTS_CXX_EXPLICIT_CONVERSIONS 1 |
88 #endif | |
89 #endif /* defined(__GXX_EXPERIMENTAL_CXX0X__) || (defined(__cplusplus) && __cplu
splus >= 201103L) */ | |
90 #endif /* COMPILER(GCC) */ | 76 #endif /* COMPILER(GCC) */ |
91 | 77 |
92 /* ==== Compiler features ==== */ | 78 /* ==== Compiler features ==== */ |
93 | 79 |
94 | 80 |
95 /* ALWAYS_INLINE */ | 81 /* ALWAYS_INLINE */ |
96 | 82 |
97 #ifndef ALWAYS_INLINE | 83 #ifndef ALWAYS_INLINE |
98 #if COMPILER(GCC) && defined(NDEBUG) && !COMPILER(MINGW) | 84 #if COMPILER(GCC) && defined(NDEBUG) && !COMPILER(MINGW) |
99 #define ALWAYS_INLINE inline __attribute__((__always_inline__)) | 85 #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 | 180 #define WTF_COMPILER_SUPPORTS_PRETTY_FUNCTION 1 |
195 #define WTF_PRETTY_FUNCTION __PRETTY_FUNCTION__ | 181 #define WTF_PRETTY_FUNCTION __PRETTY_FUNCTION__ |
196 #elif COMPILER(MSVC) | 182 #elif COMPILER(MSVC) |
197 #define WTF_COMPILER_SUPPORTS_PRETTY_FUNCTION 1 | 183 #define WTF_COMPILER_SUPPORTS_PRETTY_FUNCTION 1 |
198 #define WTF_PRETTY_FUNCTION __FUNCSIG__ | 184 #define WTF_PRETTY_FUNCTION __FUNCSIG__ |
199 #else | 185 #else |
200 #define WTF_PRETTY_FUNCTION __FUNCTION__ | 186 #define WTF_PRETTY_FUNCTION __FUNCTION__ |
201 #endif | 187 #endif |
202 | 188 |
203 #endif /* WTF_Compiler_h */ | 189 #endif /* WTF_Compiler_h */ |
OLD | NEW |