#define NEED_sv_2pv_nolen
#include "ppport.h"
+/* In theory, ExtUtils::ParseXS provide backcompat for this. However, the only
+ * available version doing that right now is 3.03_02, which is a dev release. We
+ * don't want to depend on dev releases, so we copy the code here. It should be
+ * removed once there's a stable ExtUtils::ParseXS version newer than 3.03_02. */
+#ifndef XS_EXTERNAL
+# define XS_EXTERNAL XS
+#endif
+
#define MOP_CALL_BOOT(name) mop_call_xs(aTHX_ name, cv, mark);
#ifndef XSPROTO
-#define XSPROTO(name) XS(name)
+#define XSPROTO(name) XS_EXTERNAL(name)
#endif
void mop_call_xs (pTHX_ XSPROTO(subaddr), CV *cv, SV **mark);
CvXSUBANY(cv).any_i32 = KEY_ ##key; \
}
-XS(mop_xs_simple_reader);
+XS_EXTERNAL(mop_xs_simple_reader);
extern SV *mop_method_metaclass;
extern SV *mop_associated_metaclass;
}
#endif
-EXTERN_C XS(boot_Class__MOP);
-EXTERN_C XS(boot_Class__MOP__Mixin__HasAttributes);
-EXTERN_C XS(boot_Class__MOP__Mixin__HasMethods);
-EXTERN_C XS(boot_Class__MOP__Package);
-EXTERN_C XS(boot_Class__MOP__Mixin__AttributeCore);
-EXTERN_C XS(boot_Class__MOP__Method);
-EXTERN_C XS(boot_Class__MOP__Method__Inlined);
-EXTERN_C XS(boot_Class__MOP__Method__Generated);
-EXTERN_C XS(boot_Class__MOP__Class);
-EXTERN_C XS(boot_Class__MOP__Attribute);
-EXTERN_C XS(boot_Class__MOP__Instance);
+XS_EXTERNAL(boot_Class__MOP);
+XS_EXTERNAL(boot_Class__MOP__Mixin__HasAttributes);
+XS_EXTERNAL(boot_Class__MOP__Mixin__HasMethods);
+XS_EXTERNAL(boot_Class__MOP__Package);
+XS_EXTERNAL(boot_Class__MOP__Mixin__AttributeCore);
+XS_EXTERNAL(boot_Class__MOP__Method);
+XS_EXTERNAL(boot_Class__MOP__Method__Inlined);
+XS_EXTERNAL(boot_Class__MOP__Method__Generated);
+XS_EXTERNAL(boot_Class__MOP__Class);
+XS_EXTERNAL(boot_Class__MOP__Attribute);
+XS_EXTERNAL(boot_Class__MOP__Instance);
MODULE = Moose PACKAGE = Moose::Exporter