scons: Require SWIG >= 2.0.4 and remove vector typemaps
authorCurtis Dunham <Curtis.Dunham@arm.com>
Fri, 9 May 2014 22:58:46 +0000 (18:58 -0400)
committerCurtis Dunham <Curtis.Dunham@arm.com>
Fri, 9 May 2014 22:58:46 +0000 (18:58 -0400)
SWIG commit fd666c1 (*) made it unnecessary for gem5 to have these
typemaps to handle Vector types.

* https://github.com/swig/swig/commit/fd666c1440628a847793bbe1333c27dfa2f757f0

SConstruct
src/python/m5/params.py

index a1aad32d4f548c0b293cfca3ad4d8b3a309f2d56..4df529b834a2fafbf93689250edfbacbfb8b4dff 100755 (executable)
@@ -726,23 +726,12 @@ if len(swig_version) < 3 or \
     print 'Error determining SWIG version.'
     Exit(1)
 
-min_swig_version = '1.3.34'
+min_swig_version = '2.0.4'
 if compareVersions(swig_version[2], min_swig_version) < 0:
     print 'Error: SWIG version', min_swig_version, 'or newer required.'
     print '       Installed version:', swig_version[2]
     Exit(1)
 
-# Older versions of swig do not play well with more recent versions of
-# gcc due to assumptions on implicit includes (cstddef) and use of
-# namespaces
-if main['GCC'] and compareVersions(gcc_version, '4.6') > 0 and \
-        compareVersions(swig_version[2], '2') < 0:
-    print '\n' + termcap.Yellow + termcap.Bold + \
-        'Warning: SWIG 1.x cause issues with gcc 4.6 and later.\n' + \
-        termcap.Normal + \
-        'Use SWIG 2.x to avoid assumptions on implicit includes\n' + \
-        'and use of namespaces\n'
-
 # Set up SWIG flags & scanner
 swig_flags=Split('-c++ -python -modern -templatereduce $_CPPINCFLAGS')
 main.Append(SWIGFLAGS=swig_flags)
index 0afc200a8d141746a3f4a936170b341ac385d20a..470b94754afb0c8d31787d09aeb32507cfb4cda6 100644 (file)
@@ -299,26 +299,6 @@ class VectorParamDesc(ParamDesc):
         ptype = self.ptype_str
         cxx_type = self.ptype.cxx_type
 
-        code('''\
-%typemap(in) std::vector< $cxx_type >::value_type {
-    if (SWIG_ConvertPtr($$input, (void **)&$$1, $$1_descriptor, 0) == -1) {
-        if (SWIG_ConvertPtr($$input, (void **)&$$1,
-                            $$descriptor($cxx_type), 0) == -1) {
-            return NULL;
-        }
-    }
-}
-
-%typemap(in) std::vector< $cxx_type >::value_type * {
-    if (SWIG_ConvertPtr($$input, (void **)&$$1, $$1_descriptor, 0) == -1) {
-        if (SWIG_ConvertPtr($$input, (void **)&$$1,
-                            $$descriptor($cxx_type *), 0) == -1) {
-            return NULL;
-        }
-    }
-}
-''')
-
         code('%template(vector_$ptype) std::vector< $cxx_type >;')
 
     def cxx_predecls(self, code):