]> granicus.if.org Git - python/commitdiff
Configure Modules/_ctypes/libffi just before building the _ctypes extension.
authorThomas Heller <theller@ctypes.org>
Fri, 7 Apr 2006 19:04:09 +0000 (19:04 +0000)
committerThomas Heller <theller@ctypes.org>
Fri, 7 Apr 2006 19:04:09 +0000 (19:04 +0000)
This avoids configuring it when it is not build by setup.py.

setup.py

index fb33bba8a77f7c04ca2d58cf03906c7d1155cfaa..5a19383bd0af5b890a9971495abbbc258a793a84 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -180,6 +180,9 @@ class PyBuildExt(build_ext):
 
     def build_extension(self, ext):
 
+        if ext.name == '_ctypes':
+            self.configure_ctypes(ext)
+
         try:
             build_ext.build_extension(self, ext)
         except (CCompilerError, DistutilsError), why:
@@ -1264,7 +1267,7 @@ class PyBuildExt(build_ext):
         # *** Uncomment these for TOGL extension only:
         #       -lGL -lGLU -lXext -lXmu \
 
-    def detect_ctypes(self):
+    def configure_ctypes(self, ext):
         (srcdir,) = sysconfig.get_config_vars('srcdir')
         ffi_builddir = os.path.join(self.build_temp, 'libffi')
         ffi_srcdir = os.path.abspath(os.path.join(srcdir, 'Modules',
@@ -1296,12 +1299,20 @@ class PyBuildExt(build_ext):
         include_dirs = [os.path.join(ffi_builddir, 'include'),
                         ffi_builddir, ffi_srcdir]
         extra_compile_args = fficonfig['ffi_cflags'].split()
+
+        ext.sources.extend(fficonfig['ffi_sources'])
+        ext.include_dirs.extend(include_dirs)
+        ext.extra_compile_args.extend(extra_compile_args)
+
+    def detect_ctypes(self):
+        include_dirs = []
+        extra_compile_args = []
         sources = ['_ctypes/_ctypes.c',
                    '_ctypes/callbacks.c',
                    '_ctypes/callproc.c',
                    '_ctypes/stgdict.c',
                    '_ctypes/cfield.c',
-                   '_ctypes/malloc_closure.c'] + fficonfig['ffi_sources']
+                   '_ctypes/malloc_closure.c']
         depends = ['_ctypes/ctypes.h']
 
         if sys.platform == 'darwin':