SWIG: Make gem5 compile and link with swig 2.0.4

To make gem5 compile and run with swig 2.0.4 a few minor fixes are
necessary, the fail label issues by swig must not be treated as an
error by gcc (tested with gcc 4.2.1), and the vector wrappers must
have SWIGPY_SLICE_ARG defined which happens in pycontainer.swg,
included through std_container.i. By adding the aforementioned include
to the vector wrappers everything seems to work.
This commit is contained in:
Andreas Hansson 2012-01-09 18:08:20 -06:00
parent c2dbfc1d6c
commit 59b7cad3ec
2 changed files with 4 additions and 1 deletions

View file

@ -851,8 +851,8 @@ def makeEnv(label, objsfx, strip = False, **kwargs):
swig_env.Append(CCFLAGS='-Wno-uninitialized') swig_env.Append(CCFLAGS='-Wno-uninitialized')
swig_env.Append(CCFLAGS='-Wno-sign-compare') swig_env.Append(CCFLAGS='-Wno-sign-compare')
swig_env.Append(CCFLAGS='-Wno-parentheses') swig_env.Append(CCFLAGS='-Wno-parentheses')
if compareVersions(env['GCC_VERSION'], '4.6.0') != -1:
swig_env.Append(CCFLAGS='-Wno-unused-label') swig_env.Append(CCFLAGS='-Wno-unused-label')
if compareVersions(env['GCC_VERSION'], '4.6.0') != -1:
swig_env.Append(CCFLAGS='-Wno-unused-but-set-variable') swig_env.Append(CCFLAGS='-Wno-unused-but-set-variable')
werror_env = new_env.Clone() werror_env = new_env.Clone()

View file

@ -256,6 +256,9 @@ class VectorParamDesc(ParamDesc):
self.ptype.cxx_predecls(code) self.ptype.cxx_predecls(code)
code('%}') code('%}')
code() code()
# Make sure the SWIGPY_SLICE_ARG is defined through this inclusion
code('%include "std_container.i"')
code()
self.ptype.swig_predecls(code) self.ptype.swig_predecls(code)
code() code()
code('%include "std_vector.i"') code('%include "std_vector.i"')