]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/config.py
Editors, Renderers and Attrs need to have a destructor so SWIG won't
[wxWidgets.git] / wxPython / config.py
index 09a8e0e3fef26146686b19950fa18026035cdee6..0188ea6fd086e04e3f1f0f09ff22e2d8a7ab9c3e 100644 (file)
@@ -434,6 +434,18 @@ def run_swig(files, dir, gendir, package, USE_SWIG, force, swig_args,
     return sources
 
 
+def swig_version():
+    # It may come on either stdout or stderr, depending on the
+    # version, so read both.
+    i, o, e = os.popen3(SWIG + ' -version', 't')
+    stext = o.read() + e.read()
+    import re
+    match = re.search(r'[0-9]+\.[0-9]+\.[0-9]+$', stext, re.MULTILINE)
+    if not match:
+        raise 'NotFound'
+    SVER = match.group(0)
+    return SVER
+
 
 # Specializations of some distutils command classes
 class wx_smart_install_data(distutils.command.install_data.install_data):
@@ -713,6 +725,9 @@ if os.name == 'nt':
     if not FINAL or HYBRID:
         defines.append( ('__WXDEBUG__', None) )
 
+    if UNICODE:
+        defines.append( ('wxUSE_UNICODE', 1) )
+
     libdirs = [ opj(WXDIR, 'lib', 'vc_dll') ]
     if MONOLITHIC:
         libs = makeLibName('')
@@ -880,6 +895,16 @@ swig_args = ['-c++',
              '-modern',
              '-D'+WXPLAT,
              ] + i_files_includes
+
+if USE_SWIG:
+    SVER = swig_version()
+    if int(SVER[-2:]) >= 29:
+        swig_args += [ '-fastdispatch',
+                       '-fvirtual',
+                       '-fastinit',
+                       '-fastunpack',
+                       #'-outputtuple',  Currently setting this with a -D define above
+                       ]
              
 if UNICODE:
     swig_args.append('-DwxUSE_UNICODE')