summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpje <pje@571e12c6-e1fa-0310-aee7-ff1267fa46bd>2004-03-07 23:19:56 +0000
committerpje <pje@571e12c6-e1fa-0310-aee7-ff1267fa46bd>2004-03-07 23:19:56 +0000
commit4d93c40cda8eb3d7ed06dc3d2fa75725325a2539 (patch)
treecd9bffdf4bb5204e0befe507d62b67c7e5fe6581
parentf4838c7996e6281401cb6325ab3628f518ac712a (diff)
downloadwsgiref-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__.py3
-rw-r--r--setuptools/command/build_ext.py7
-rw-r--r--setuptools/dist.py4
-rw-r--r--setuptools/extension.py27
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