diff options
author | pje <pje@571e12c6-e1fa-0310-aee7-ff1267fa46bd> | 2004-03-07 23:19:56 +0000 |
---|---|---|
committer | pje <pje@571e12c6-e1fa-0310-aee7-ff1267fa46bd> | 2004-03-07 23:19:56 +0000 |
commit | 4d93c40cda8eb3d7ed06dc3d2fa75725325a2539 (patch) | |
tree | cd9bffdf4bb5204e0befe507d62b67c7e5fe6581 | |
parent | f4838c7996e6281401cb6325ab3628f518ac712a (diff) | |
download | wsgiref-4d93c40cda8eb3d7ed06dc3d2fa75725325a2539.tar.gz |
Added transparent support for Pyrex extensions, automatically replacing
'.pyx' with '.c' in source file lists if Pyrex isn't available.
git-svn-id: svn://svn.eby-sarna.com/svnroot/wsgiref@236 571e12c6-e1fa-0310-aee7-ff1267fa46bd
-rw-r--r-- | setuptools/__init__.py | 3 | ||||
-rw-r--r-- | setuptools/command/build_ext.py | 7 | ||||
-rw-r--r-- | setuptools/dist.py | 4 | ||||
-rw-r--r-- | setuptools/extension.py | 27 |
4 files changed, 38 insertions, 3 deletions
diff --git a/setuptools/__init__.py b/setuptools/__init__.py index 6baf6e5..172c77d 100644 --- a/setuptools/__init__.py +++ b/setuptools/__init__.py @@ -2,7 +2,8 @@ import distutils.core, setuptools.command from setuptools.dist import Distribution, Feature -from distutils.core import Command, Extension +from setuptools.extension import Extension +from distutils.core import Command __all__ = [ 'setup', 'Distribution', 'Feature', 'Command', 'Extension' diff --git a/setuptools/command/build_ext.py b/setuptools/command/build_ext.py new file mode 100644 index 0000000..86ac13a --- /dev/null +++ b/setuptools/command/build_ext.py @@ -0,0 +1,7 @@ +# Attempt to use Pyrex for building extensions, if available + +try: + from Pyrex.Distutils.build_ext import build_ext +except ImportError: + from distutils.command.build_ext import build_ext + diff --git a/setuptools/dist.py b/setuptools/dist.py index d2e48f1..ebd1476 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -3,6 +3,7 @@ __all__ = ['Distribution', 'Feature'] from distutils.core import Distribution as _Distribution from distutils.core import Extension from setuptools.command.build_py import build_py +from setuptools.command.build_ext import build_ext from distutils.errors import DistutilsOptionError, DistutilsPlatformError from distutils.errors import DistutilsSetupError sequence = tuple, list @@ -60,8 +61,8 @@ class Distribution(_Distribution): self.test_suite = None _Distribution.__init__(self,attrs) - self.cmdclass.setdefault('build_py',build_py) + self.cmdclass.setdefault('build_ext',build_ext) if self.features: self._set_global_opts_from_features() @@ -79,7 +80,6 @@ class Distribution(_Distribution): """Convert feature name to corresponding option attribute name""" return 'with_'+name.replace('-','_') - def _set_global_opts_from_features(self): """Add --with-X/--without-X options based on optional features""" diff --git a/setuptools/extension.py b/setuptools/extension.py new file mode 100644 index 0000000..55a4d94 --- /dev/null +++ b/setuptools/extension.py @@ -0,0 +1,27 @@ +from distutils.core import Extension as _Extension + +try: + from Pyrex.Distutils.build_ext import build_ext + +except ImportError: + + # Pyrex isn't around, so fix up the sources + + class Extension(_Extension): + + """Extension that uses '.c' files in place of '.pyx' files""" + + def __init__(self,*args,**kw): + _Extension.__init__(self,*args,**kw) + sources = [] + for s in self.sources: + if s.endswith('.pyx'): + sources.append(s[:-3]+'c') + else: + sources.append(s) + self.sources = sources + +else: + + # Pyrex is here, just use regular extension type + Extension = _Extension |