Make the use of XS_EXTERNAL fall back to XS
authorSteffen Mueller <smueller@cpan.org>
Thu, 18 Aug 2011 11:20:35 +0000 (13:20 +0200)
committerSteffen Mueller <smueller@cpan.org>
Sun, 21 Aug 2011 11:31:40 +0000 (13:31 +0200)
If XSUB.h/perl doesn't define the new XS_EXTERNAL macro that we
use for emitting non-static XSUBs for the boot functions, we have
XS_EXTERNAL just fall back to the standard XS macro.

dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm

index 1616b0dc5278184c501206fde7d546a1dcb10d7b..7ff73d3fa29e2f2d3aca0f9a072185a4b54d7d44 100644 (file)
@@ -453,6 +453,14 @@ sub standard_XS_defs {
 #  define PERL_UNUSED_VAR(var) if (0) var = var
 #endif
 
+/* Starting from 5.15.2, XS(name) defines a static function (==internal)
+ * and the XS_EXTERNAL macro is used for functions that must not be static
+ * like the boot XSUB of a module. If perl didn't have an XS_EXTERNAL
+ * macro defined, the best we can do is assume XS is the same.
+ */
+#ifndef XS_EXTERNAL
+#  define XS_EXTERNAL(name) XS(name)
+#endif
 EOF
 
   print <<"EOF";