I think that I must be missing something. In ponie, src/pmc/perl5pmcs.h looks like this:
------------------------------------------------------------------------------ /* * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! * * This file is generated automatically from 'various files' * by /home/nick/Ponie/ponie00/parrot/tools/build/pmc2c.pl. * * Any changes made here will be lost! * */ #define PARROT_IN_EXTENSION PARROT_DYNEXT_EXPORT Parrot_PMC Parrot_lib_perl5pmcs_load(Parrot_INTERP interpreter); ------------------------------------------------------------------------------ To me, that PARROT_IN_EXTENSION is not helping. The relevance seems to be for <parrot/config.h>: /* Symbol export and import decoration. At the time of writing, note that * PARROT_IN_CORE won't always imply !PARROT_IN_EXTENSION. */ #if defined(PARROT_IN_EXTENSION) #define PARROT_API #define PARROT_DYNEXT_EXPORT #else #define PARROT_API #endif yet the way it's currently defined it's too late to be of any use - <parrot/config.h> has already been and gone. And even if I re-order the include files so that src/pmc/perl5pmcs.h is included before <parrot/config.h> in my source, then it still doesn't help. (Probably because <parrot/config.h> has been included even earlier). The compile only works if I define PARROT_IN_EXTENSION myself (on the compiler command line) So what should be going on? Or am I missing something completely obvious? Nicholas Clark