]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/distrib/build.py
removed some unneeded bit of test code
[wxWidgets.git] / utils / wxPython / distrib / build.py
index e8f0b3d5b8518bcfdb26114215747d49970b00b2..c375b1cf3a86ab8454970d0de478bd861aa14e6d 100755 (executable)
@@ -65,7 +65,7 @@ Configuration Files
     separate namespace which is then used later as a configuration object.
     This keeps the build script simple in that it doesn't have to parse
     anything, and the config files can be much more than just names and
-    values as any pretty much any python code can be executed.  The global
+    values as pretty much any python code can be executed.  The global
     variables set in the config namespace are what are used later as
     configuation values.
 
@@ -164,6 +164,7 @@ def main(args):
                          runUninstall = runUninstall)
 
     if config.readConfigFiles(args):
+        config.doFixups()
         config.makeMakefile()
         err = 0
 
@@ -209,18 +210,6 @@ def splitlines(st):
 
 #----------------------------------------------------------------------------
 
-def strippath(st):
-    # remove any leading paths, retrieve only file name. Used while
-    # parsing the SOURCES file list, so that object files are local, 
-    # while source may be anywere)
-    if sys.platform == 'win32':
-       sep = '\\'
-    else:
-       sep = '/'
-    return string.split(st,sep)[-1]
-
-#----------------------------------------------------------------------------
-
 class BuildConfig:
     def __init__(self, **kw):
         self.__dict__.update(kw)
@@ -231,7 +220,7 @@ class BuildConfig:
         self.VERSION = __version__
         self.MODULE = ''
         self.SWIGFILES = []
-        self.SWIGFLAGS = '-c++ -shadow -python -dnone -I$(WXPSRCDIR)'
+        self.SWIGFLAGS = '-c++ -shadow -python -keyword -dnone -I$(WXPSRCDIR)'
         self.SOURCES = []
         self.PYFILES = []
         self.LFLAGS = ''
@@ -241,6 +230,7 @@ class BuildConfig:
         self.OTHERLIBS = ''
         self.OTHERTARGETS = ''
         self.OTHERINSTALLTARGETS = ''
+        self.OTHERUNINSTALLTARGETS = ''
         self.OTHERRULES = ''
         self.DEFAULTRULE = 'default: $(GENCODEDIR) $(TARGET)'
         self.PYVERSION = sys.version[:3]
@@ -252,6 +242,8 @@ class BuildConfig:
         self.WXUSINGDLL = '1'
         self.OTHERDEP = ''
         self.WXPSRCDIR = '$(WXDIR)/utils/wxPython/src'
+        self.SWIGDEPS = ''
+        self.OTHERDEPS = ''
 
 
         if sys.platform == 'win32':
@@ -268,6 +260,9 @@ class BuildConfig:
             self.RESFILE = ''
             self.RESRULE = ''
             self.OVERRIDEFLAGS = '/GX-'
+            self.RMCMD  = '-erase '
+            self.WXPSRCDIR = os.path.normpath(self.WXPSRCDIR)
+
 
         else:
             self.MAKE      = 'make'
@@ -284,8 +279,9 @@ class BuildConfig:
                           '-I$(WXPSRCDIR)'
             self.LFLAGS = '-L$(WXPSRCDIR) `wx-config --libs`'
             self.LIBS   = '-l$(HELPERLIB)'
+            self.RMCMD  = '-rm -f '
 
-            # **** what to do when I start supporting Motif, etc.???
+            # **** What to do when I start supporting Motif, etc.???
             self.GENCODEDIR = 'gtk'
             self.SWIGTOOLKITFLAG = '-D__WXGTK__'
 
@@ -299,13 +295,7 @@ class BuildConfig:
                 raise SystemExit, "Python development files not found"
 
             self.CCC = self.findMFValue(mfText, 'CCC')
-           if not self.CCC:
-               print "Warning: C++ compiler not specified (CCC). Assuming c++"
-               self.CCC = 'c++'
             self.CC = self.findMFValue(mfText, 'CC')
-           if not self.CC:
-               print "Warning: C compiler not specified (CCC). Assuming cc"
-               self.CC = 'cc'
             self.OPT = self.findMFValue(mfText, 'OPT')
             self.SO = self.findMFValue(mfText, 'SO')
             self.LDSHARED = self.findMFValue(mfText, 'LDSHARED')
@@ -324,6 +314,18 @@ class BuildConfig:
                                         ' ')
 
 
+    #------------------------------------------------------------
+    def doFixups(self):
+        # This is called after the config files have been evaluated
+        # so we can do some sanity checking...
+        if sys.platform != 'win32':
+           if not self.CCC:
+               print "Warning: C++ compiler not specified (CCC). Assuming c++"
+               self.CCC = 'c++'
+           if not self.CC:
+               print "Warning: C compiler not specified (CC). Assuming cc"
+               self.CC = 'cc'
+
     #------------------------------------------------------------
     def findMFValue(self, mfText, st):
         # Find line begining with st= and return the value
@@ -343,7 +345,7 @@ class BuildConfig:
         for name in self.SWIGFILES:
             objects = objects + os.path.splitext(name)[0] + self.OBJEXT + ' '
         for name in self.SOURCES:
-           obj = strippath(name)
+           obj = os.path.basename(name)
             objects = objects + os.path.splitext(obj)[0] + self.OBJEXT + ' '
         self.OBJECTS = splitlines(objects)
 
@@ -351,14 +353,26 @@ class BuildConfig:
         # now build the text for the dependencies
         depends = ""
         for name in self.SWIGFILES:
-            text = '$(GENCODEDIR)/%s.cpp $(GENCODEDIR)/%s.py : %s.i\n' \
+            rootname = os.path.splitext(name)[0]
+            text = '$(GENCODEDIR)/%s.cpp $(GENCODEDIR)/%s.py : %s.i %s\n' \
                    '$(TARGETDIR)\\%s.py : $(GENCODEDIR)\\%s.py\n' % \
-                   tuple([os.path.splitext(name)[0]] * 5)
+                   (rootname, rootname, rootname, self.SWIGDEPS, rootname, rootname)
             depends = depends + text
+            if self.OTHERDEPS:
+                text = '%s%s : %s\n' % \
+                       (os.path.splitext(name)[0], self.OBJEXT, self.OTHERDEPS)
+                depends = depends + text
         for name in self.PYFILES:
             text = '$(TARGETDIR)\\%s.py : %s.py\n' % \
                    tuple([os.path.splitext(name)[0]] * 2)
             depends = depends + text
+        if self.OTHERDEPS:
+            for name in self.SOURCES:
+                name = os.path.basename(name)
+                text = '%s%s : %s\n' % \
+                       (os.path.splitext(name)[0], self.OBJEXT, self.OTHERDEPS)
+                depends = depends + text
+
         self.DEPENDS = swapslash(depends)
 
 
@@ -371,6 +385,14 @@ class BuildConfig:
         self.PYMODULES = splitlines(swapslash(pymodules))
 
 
+        # now make a list of the python files that would need uninstalled
+        pycleanup = ""
+        for name in self.SWIGFILES:
+            pycleanup = pycleanup + self.makeCleanupList(name)
+        for name in self.PYFILES:
+            pycleanup = pycleanup + self.makeCleanupList(name)
+        self.PYCLEANUP = swapslash(pycleanup)
+
 
         # finally, build the makefile
         if sys.platform == 'win32':
@@ -388,6 +410,16 @@ class BuildConfig:
         print "Makefile created: ", self.MAKEFILE
 
 
+
+    #------------------------------------------------------------
+    def makeCleanupList(self, name):
+        st = ""
+        st = st + '\t%s$(TARGETDIR)\\%s.py\n' % (self.RMCMD, os.path.splitext(name)[0])
+        st = st + '\t%s$(TARGETDIR)\\%s.pyc\n' % (self.RMCMD, os.path.splitext(name)[0])
+        st = st + '\t%s$(TARGETDIR)\\%s.pyo\n' % (self.RMCMD, os.path.splitext(name)[0])
+        return st
+
+
     #------------------------------------------------------------
     def readConfigFiles(self, args):
         return self.processFile(self.bldCfg, 1) and \
@@ -438,6 +470,7 @@ class BuildConfig:
 
 
 
+#----------------------------------------------------------------------------
 #----------------------------------------------------------------------------
 #----------------------------------------------------------------------------
 
@@ -451,8 +484,8 @@ WXDIR = %(WXDIR)s
 VERSION = %(VERSION)s
 MODULE = %(MODULE)s
 SWIGFLAGS = %(SWIGFLAGS)s %(SWIGTOOLKITFLAG)s %(OTHERSWIGFLAGS)s
-CFLAGS = %(CFLAGS)s %(OTHERCFLAGS)s
-LFLAGS = %(LFLAGS)s %(OTHERLFLAGS)s
+CFLAGS = %(CFLAGS)s
+LFLAGS = %(LFLAGS)s
 PYVERSION = %(PYVERSION)s
 PYPREFIX = %(PYPREFIX)s
 EXECPREFIX = %(EXECPREFIX)s
@@ -487,8 +520,8 @@ THREAD=-DWXP_USE_THREAD=1
 
 
 NOPCH=1
-OVERRIDEFLAGS=%(OVERRIDEFLAGS)s %(OTHERCFLAGS)s
-EXTRAFLAGS = %(CFLAGS)s
+OVERRIDEFLAGS=%(OVERRIDEFLAGS)s
+EXTRAFLAGS = $(CFLAGS) %(OTHERCFLAGS)s
 
 LFLAGS = %(LFLAGS)s %(OTHERLFLAGS)s
 EXTRALIBS = %(LIBS)s %(OTHERLIBS)s
@@ -519,9 +552,10 @@ clean:
        -erase $(TARGET)
 
 
-uninstall:
+uninstall: %(OTHERUNINSTALLTARGETS)s
        -erase $(TARGETDIR)\\$(TARGET)
-       -erase $(PYMODULES)
+%(PYCLEANUP)s
+
 
 #----------------------------------------------------------------------
 # implicit rule for compiling .cpp and .c files
@@ -592,6 +626,13 @@ $(GENCODEDIR):
 
 #----------------------------------------------------------------------
 
+showflags:
+       @echo CPPFLAGS:
+       @echo $(CPPFLAGS)
+       @echo LFLAGS:
+       @echo $(LFLAGS)
+
+
 
 %(OTHERRULES)s
 '''
@@ -612,7 +653,7 @@ WXDIR = %(WXDIR)s
 VERSION = %(VERSION)s
 MODULE = %(MODULE)s
 SWIGFLAGS = %(SWIGFLAGS)s %(SWIGTOOLKITFLAG)s %(OTHERSWIGFLAGS)s
-CFLAGS = %(CFLAGS)s %(OTHERCFLAGS)s
+CFLAGS = %(CFLAGS)s $(OPT) %(OTHERCFLAGS)s
 LFLAGS = %(LFLAGS)s %(OTHERLFLAGS)s
 LIBS = %(LIBS)s %(OTHERLIBS)s
 PYVERSION = %(PYVERSION)s
@@ -657,12 +698,12 @@ endif
 install: $(TARGETDIR) $(TARGETDIR)/$(TARGET) pycfiles %(OTHERINSTALLTARGETS)s
 
 clean:
-       -rm -f *.o *.so *~
+       -rm -f *.o *$(SO) *~
        -rm -f $(TARGET)
 
-uninstall:
+uninstall: %(OTHERUNINSTALLTARGETS)s
        -rm -f $(TARGETDIR)/$(TARGET)
-       -rm -f $(PYMODULES)
+%(PYCLEANUP)s
 
 
 #----------------------------------------------------------------------