]> git.saurik.com Git - wxWidgets.git/commitdiff
wxPython can now be built using the distutils that comes with Python
authorRobin Dunn <robin@alldunn.com>
Tue, 10 Apr 2001 20:52:04 +0000 (20:52 +0000)
committerRobin Dunn <robin@alldunn.com>
Tue, 10 Apr 2001 20:52:04 +0000 (20:52 +0000)
2.1

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9709 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/b.bat
wxPython/my_distutils.py

index a9d1dae158ef23779c813b0e4efdbab4dc9a6b2a..a6404c9af85eb0ea43b235b1b71d78bd7670096a 100755 (executable)
@@ -5,7 +5,7 @@ set FLAGS=USE_SWIG=1 IN_CVS_TREE=1
 
 
 rem  Use non-default python?
-iff "%1" == "15" .or. "%1" == "20" then
+iff "%1" == "15" .or. "%1" == "20" .or. "%1" == "21" then
        set SETUP=c:\tools\python%1%\python.exe -u setup.py
        shift
 else
index 84edd6b547919f955cfa80a4887a7b3ca4fd2d72..aa0c183e6b7052239ce905adb0adee52700134d4 100644 (file)
@@ -349,7 +349,15 @@ class MyBCPPCompiler(BCPPCompiler):
 
 from distutils import ccompiler
 
-ccompiler.default_compiler['nt'] = 'my_msvc'
+if hasattr(ccompiler, "default_compiler"):
+    ccompiler.default_compiler['nt'] = 'my_msvc'
+elif hasattr(ccompiler, "_default_compilers"):
+    lst = list(ccompiler._default_compilers)
+    lst.remove( ('nt', 'msvc') )
+    lst.append( ('nt', 'my_msvc') )
+    ccompiler._default_compilers = tuple(lst)
+
+
 ccompiler.compiler_class['my_msvc'] = ('my_distutils',
                                        'MyMSVCCompiler',
                                        'My MSVC derived class')
@@ -364,6 +372,52 @@ import my_distutils
 sys.modules['distutils.my_distutils'] = my_distutils
 
 
+#----------------------------------------------------------------------
+# More hacking...  Distutils in Python 2.1 changed the strip_dir flag
+# passed to object_filenames to true, which causes problems for us since
+# there are a few duplicate source/object names between some of the
+# extensions in wxPython.  This hack replaces the CCompiler._prep_compile
+# method with this one.
+
+from distutils.dep_util import newer_pairwise
+
+def _prep_compile (self, sources, output_dir):
+    """Determine the list of object files corresponding to 'sources',
+    and figure out which ones really need to be recompiled.  Return a
+    list of all object files and a dictionary telling which source
+    files can be skipped.
+    """
+    # Get the list of expected output (object) files
+    objects = self.object_filenames (sources,
+                                     strip_dir=0,
+                                     output_dir=output_dir)
+
+    if self.force:
+        skip_source = {}            # rebuild everything
+        for source in sources:
+            skip_source[source] = 0
+    else:
+        # Figure out which source files we have to recompile according
+        # to a simplistic check -- we just compare the source and
+        # object file, no deep dependency checking involving header
+        # files.
+        skip_source = {}            # rebuild everything
+        for source in sources:      # no wait, rebuild nothing
+            skip_source[source] = 1
+
+        (n_sources, n_objects) = newer_pairwise (sources, objects)
+        for source in n_sources:    # no really, only rebuild what's
+            skip_source[source] = 0 # out-of-date
+
+    return (objects, skip_source)
+
+# _prep_compile ()
+
+CCompiler._prep_compile = _prep_compile
+
+
+
+
 #----------------------------------------------------------------------
 # Run SWIG the way I want it done