summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author卜部昌平 <shyouhei@ruby-lang.org>2020-08-19 16:18:59 +0900
committer卜部昌平 <shyouhei@ruby-lang.org>2020-08-21 11:04:54 +0900
commit01826b3fda53a98d8fe57e698be52143e1fef2d6 (patch)
treef98371cf24ec535e358ac962b3ec1215a45a04ae
parentb6c7b94b1c9af2e6b8e482fe50fb0224d98cf5ad (diff)
RBIMPL_HAS_CPP_ATTRIBUTE: handle SunPro
Oracle Developer Studio's C++ preprocessor started to understand __has_cpp_attribute since version 12.5, and is broken. After looking around for a while I found Boost and ICU also had this issue before. Let me add workaround for it.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3433
-rw-r--r--include/ruby/internal/has/cpp_attribute.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/include/ruby/internal/has/cpp_attribute.h b/include/ruby/internal/has/cpp_attribute.h
index 9c12765e586..255f611d701 100644
--- a/include/ruby/internal/has/cpp_attribute.h
+++ b/include/ruby/internal/has/cpp_attribute.h
@@ -25,7 +25,16 @@
#include "ruby/internal/token_paste.h"
/** @cond INTERNAL_MACRO */
-#if defined(__has_cpp_attribute)
+#if RBIMPL_COMPILER_IS(SunPro)
+# /* Oracle Developer Studio 12.5's C++ preprocessor is reportedly broken. We
+# * could simulate __has_cpp_attribute like below, but don't know the exact
+# * list of which version supported which attribute. Just kill everything for
+# * now. If you can please :FIXME: */
+# /* https://unicode-org.atlassian.net/browse/ICU-12893 */
+# /* https://github.com/boostorg/config/pull/95 */
+# define RBIMPL_HAS_CPP_ATTRIBUTE0(_) 0
+
+#elif defined(__has_cpp_attribute)
# define RBIMPL_HAS_CPP_ATTRIBUTE0(_) __has_cpp_attribute(_)
#elif RBIMPL_COMPILER_IS(MSVC)
@@ -60,7 +69,6 @@
# /* :FIXME:
# * Candidate compilers to list here:
# * - icpc: They have __INTEL_CXX11_MODE__.
-# * - SunPro: Seems they support C++11.
# */
# define RBIMPL_HAS_CPP_ATTRIBUTE0(_) 0
#endif