diff lib/swig/swigwin-2.0.11/Tools/setup.py.tmpl @ 1899:b3009adc0e2f

Adding swig, gitignore, hgignore
author Nomad
date Mon, 21 Oct 2013 10:42:27 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/swig/swigwin-2.0.11/Tools/setup.py.tmpl	Mon Oct 21 10:42:27 2013 +0200
@@ -0,0 +1,139 @@
+#!@PYTHON@
+'''A setup.py script with better SWIG support.  To use it, either
+rename it to setup.py.in and have it pe processed by your configure
+script (you will need to define @PYTHON@), or replace the @*@ strings
+by hand.
+
+Copyright 2001,  Anthony Joseph Seward'''
+
+
+from distutils.core import setup, Extension
+
+###############################################################################
+##      Start of better Swig support
+###############################################################################
+from distutils.command.build_ext import build_ext
+import os
+import string
+class build_swig_ext(build_ext):
+    '''Better swig support for Distutils'''
+
+    ## __ Tell Distutils about the options
+    user_options = build_ext.user_options
+    boolean_options = build_ext.boolean_options
+
+    user_options.append(
+        ('swig-doc=', None,
+         'what type of documentation should SWIG produce (default: none)')
+        )
+    user_options.append(
+        ('swig-inc=', None,
+         'a list of directories to add to the SWIG include path'
+         +  "(separated by ':')(default: SWIG)")
+        )
+    user_options.append(
+        ('swig-shadow', None,
+         'have SWIG create shadow classes'
+         + ' (also adds docstrings to the shadow classes')
+        )
+
+    boolean_options.append('swig-shadow')
+
+    def initialize_options(self):
+        '''Initialize the new options after the inherited ones'''
+        build_ext.initialize_options(self)
+        self.swig_doc = 'none'
+        self.swig_inc = 'SWIG'
+        self.swig_shadow = None        
+    
+    def swig_sources(self, sources):
+        """Override the definition of 'swig_sources' in build_ext.  This
+        is essentially the same function but with better swig support.
+        I will now quote the original docstring:
+
+          Walk the list of source files in 'sources', looking for SWIG
+          interface (.i) files.  Run SWIG on all that are found, and
+          return a modified 'sources' list with SWIG source files replaced
+          by the generated C (or C++) files.
+        """
+
+        new_sources = []
+        swig_sources = []
+        swig_targets = {}
+
+        # XXX this drops generated C/C++ files into the source tree, which
+        # is fine for developers who want to distribute the generated
+        # source -- but there should be an option to put SWIG output in
+        # the temp dir.
+
+        if self.swig_cpp:
+            target_ext = '.cpp'
+        else:
+            target_ext = '.c'
+
+        for source in sources:
+            (base, ext) = os.path.splitext(source)
+            if ext == ".i":             # SWIG interface file
+                new_sources.append(base + target_ext)
+                swig_sources.append(source)
+                swig_targets[source] = new_sources[-1]
+            else:
+                new_sources.append(source)
+
+        if not swig_sources:
+            return new_sources
+
+        includes = self.swig_inc
+        if type(includes) is type(''):
+            includes = string.split(includes, ':')
+            includes = map(lambda x: '-I'+x, includes)
+            includes = string.join(includes)
+        
+        swig = self.find_swig()
+##        swig_cmd = [swig, "-python", "-d%s" % self.swig_doc,  includes]
+        swig_cmd = [swig, '-v', '-python', '-d%s' % self.swig_doc,  includes]
+        if self.swig_cpp:
+            swig_cmd.append('-c++')
+
+        if self.swig_shadow:
+            swig_cmd.append('-shadow')
+## swig1.1            swig_cmd.append('-docstring')
+
+        for source in swig_sources:
+            target = swig_targets[source]
+            self.announce('swigging %s to %s' % (source, target))
+            self.spawn(swig_cmd + ['-o', target, source])
+
+        return new_sources
+
+    # swig_sources ()
+###############################################################################
+##      End of improved swig support
+###############################################################################
+
+package = '@PACKAGE@'
+version = '@VERSION@'
+include_dirs = ['@top_srcdir@']
+lib_dirs = ['@top_srcdir@/@PACKAGE@']
+libraries = ['@PACKAGE@', 'stdc++']
+
+setup(name = package,
+      version = version,
+      description = '',
+      author = '',
+      author_email = '',
+      url = 'http://',
+
+      cmdclass = {'build_ext': build_swig_ext},
+      ext_modules = [Extension(package+'cmodule',
+                               [package+'.i'],
+                               include_dirs=include_dirs,
+                               library_dirs=lib_dirs,
+                               libraries=libraries,
+                               )],
+      options = {'build_ext':
+                 {'swig_doc': 'html',
+                  'swig_cpp': not None,
+                  'swig_shadow': not None}
+                 }
+      )