From: Michal M. <mm...@su...> - 2007-11-16 22:03:30
Attachments:
swig-1.3.32-perl-invalid-cpp.patch
|
Hi, Trying to compile any perl wrapper with newer gcc results in errors like example_wrap.cxx:1503: error: invalid use of 'static' in linkage specification because the generated code tries to define extern "C" static functions, which is invalid. Attached patch fixes that. Sorry for not having noticed this before release... Michal |
From: William S F. <ws...@fu...> - 2007-11-16 22:31:20
|
Michal Marek wrote: > Hi, > > Trying to compile any perl wrapper with newer gcc results in errors like > > example_wrap.cxx:1503: error: invalid use of 'static' in linkage > specification > > because the generated code tries to define extern "C" static functions, > which is invalid. Attached patch fixes that. Sorry for not having > noticed this before release... > > Michal > > > ------------------------------------------------------------------------ > > extern "C" static makes to sense > --- > Lib/perl5/perlrun.swg | 4 ---- > 1 file changed, 4 deletions(-) > > --- Lib/perl5/perlrun.swg.orig > +++ Lib/perl5/perlrun.swg > @@ -117,11 +117,7 @@ typedef int (CPerlObj::*SwigMagicFunc)(S > #else > #define MAGIC_PPERL > > -#ifdef __cplusplus > -#define SWIGCLASS_STATIC extern "C" static SWIGUNUSED > -#else > #define SWIGCLASS_STATIC static SWIGUNUSED > -#endif > > #ifndef MULTIPLICITY > #define SWIG_MAGIC(a,b) (SV *a, MAGIC *b) > Oh dear. extern "C" is needed for the Sun Studio compilers, so we'll have to think of another solution. In the other modules, we put an extern "C" block around all the exported functions. We might have to do that for Perl too. I guess we had better also make a new release for this bug. I thought someone had tested gcc-4.2, is this the version which is failing? William |
From: William S F. <ws...@fu...> - 2007-11-19 21:32:59
|
William S Fulton wrote: > Michal Marek wrote: >> Hi, >> >> Trying to compile any perl wrapper with newer gcc results in errors like >> >> example_wrap.cxx:1503: error: invalid use of 'static' in linkage >> specification >> >> because the generated code tries to define extern "C" static functions, >> which is invalid. Attached patch fixes that. Sorry for not having >> noticed this before release... >> >> Michal >> >> >> ------------------------------------------------------------------------ >> >> extern "C" static makes to sense >> --- >> Lib/perl5/perlrun.swg | 4 ---- >> 1 file changed, 4 deletions(-) >> >> --- Lib/perl5/perlrun.swg.orig >> +++ Lib/perl5/perlrun.swg >> @@ -117,11 +117,7 @@ typedef int (CPerlObj::*SwigMagicFunc)(S >> #else >> #define MAGIC_PPERL >> >> -#ifdef __cplusplus >> -#define SWIGCLASS_STATIC extern "C" static SWIGUNUSED >> -#else >> #define SWIGCLASS_STATIC static SWIGUNUSED >> -#endif >> >> #ifndef MULTIPLICITY >> #define SWIG_MAGIC(a,b) (SV *a, MAGIC *b) >> > Oh dear. extern "C" is needed for the Sun Studio compilers, so we'll > have to think of another solution. In the other modules, we put an > extern "C" block around all the exported functions. We might have to > do that for Perl too. I guess we had better also make a new release > for this bug. I thought someone had tested gcc-4.2, is this the > version which is failing? > I've commited a fix now. We'll do another release for this. William |