aboutsummaryrefslogtreecommitdiffstats
path: root/spec/rubyspec/optional/capi/ext
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rubyspec/optional/capi/ext')
-rw-r--r--spec/rubyspec/optional/capi/ext/jruby.h10
-rw-r--r--spec/rubyspec/optional/capi/ext/rubinius.h8
-rw-r--r--spec/rubyspec/optional/capi/ext/rubyspec.h15
-rw-r--r--spec/rubyspec/optional/capi/ext/truffleruby.h6
4 files changed, 39 insertions, 0 deletions
diff --git a/spec/rubyspec/optional/capi/ext/jruby.h b/spec/rubyspec/optional/capi/ext/jruby.h
new file mode 100644
index 0000000000..00a9789f14
--- /dev/null
+++ b/spec/rubyspec/optional/capi/ext/jruby.h
@@ -0,0 +1,10 @@
+#ifndef RUBYSPEC_CAPI_JRUBY_H
+#define RUBYSPEC_CAPI_JRUBY_H
+
+/* #undef any HAVE_ defines that JRuby does not have. */
+#undef HAVE_RB_DEFINE_HOOKED_VARIABLE
+#undef HAVE_RB_DEFINE_VARIABLE
+
+#undef HAVE_RB_EXEC_RECURSIVE
+
+#endif
diff --git a/spec/rubyspec/optional/capi/ext/rubinius.h b/spec/rubyspec/optional/capi/ext/rubinius.h
new file mode 100644
index 0000000000..7ddf73790d
--- /dev/null
+++ b/spec/rubyspec/optional/capi/ext/rubinius.h
@@ -0,0 +1,8 @@
+#ifndef RUBYSPEC_CAPI_RUBINIUS_H
+#define RUBYSPEC_CAPI_RUBINIUS_H
+
+/* #undef any HAVE_ defines that Rubinius does not have. */
+#undef HAVE_RB_DEFINE_HOOKED_VARIABLE
+#undef HAVE_RB_DEFINE_VARIABLE
+
+#endif
diff --git a/spec/rubyspec/optional/capi/ext/rubyspec.h b/spec/rubyspec/optional/capi/ext/rubyspec.h
index 9cba34b888..aa0f4def19 100644
--- a/spec/rubyspec/optional/capi/ext/rubyspec.h
+++ b/spec/rubyspec/optional/capi/ext/rubyspec.h
@@ -595,4 +595,19 @@
/* Util */
#define HAVE_RB_SCAN_ARGS 1
+/* Now, create the differential set. The format of the preprocessor directives
+ * is significant. The alternative implementations should define RUBY because
+ * some extensions depend on that. But only one alternative implementation
+ * macro should be defined at a time. The conditional is structured so that if
+ * no alternative implementation is defined then MRI is assumed.
+ */
+
+#if defined(RUBINIUS)
+#include "rubinius.h"
+#elif defined(JRUBY)
+#include "jruby.h"
+#elif defined(TRUFFLERUBY)
+#include "truffleruby.h"
+#endif
+
#endif
diff --git a/spec/rubyspec/optional/capi/ext/truffleruby.h b/spec/rubyspec/optional/capi/ext/truffleruby.h
new file mode 100644
index 0000000000..99976a18a4
--- /dev/null
+++ b/spec/rubyspec/optional/capi/ext/truffleruby.h
@@ -0,0 +1,6 @@
+#ifndef RUBYSPEC_CAPI_TRUFFLERUBY_H
+#undef RUBYSPEC_CAPI_TRUFFLERUBY_H
+
+// All features are available
+
+#endif