]> git.saurik.com Git - wxWidgets.git/blobdiff - build/bakefiles/regenMakefile.py
dcmemory.cpp is now dcmemory.mm
[wxWidgets.git] / build / bakefiles / regenMakefile.py
index 04742046f28436d7c0223ff5b7b256b18701620c..2f63fe387e499728fec3b5c34d52520b1baab5b0 100755 (executable)
@@ -7,31 +7,36 @@
 # $Id$
 #
 
-import string, os.path
+import string, os.path, copy
 
 file = open('Makefile', 'wt')
 file.write("""
 # Generated by regenMakefile.py
 
-BAKEFILE = bakefile
-BAKEARGS = -v
+BAKEFILE = bakefile -v
 
 
+CDEPS = config.bkl common.bkl common_contrib.bkl
+SDEPS = config.bkl common.bkl common_samples.bkl
+MDEPS = common.bkl config.bkl files.bkl monolithic.bkl multilib.bkl opengl.bkl wxwin.py
 """)
 
-lines = []
+lines = {}
 all = {}
 all['autoconf'] = ['../../configure']
 
+linesCur = None
+
 def addMakefile(bake, makedirs, deps=[], args={}):
     """Adds rules to regenerate native makefile in directory 'makedir' from
        bakefiles 'bake'. 'deps' contains additional dependencies (bakefiles
        other than 'bake'."""
     print 'adding %s...' % bake
-    lines.append('')
-    lines.append('# from %s' % bake)
+    global linesCur
+    linesCur = ['\n']
 
     def add(bake, makedirs, make, dep, format, args={}):
+        global linesCur
         a = ''
         if 'all' in args: a += ' %s' % args['all']
         if format in args: a += ' %s' % args[format]
@@ -42,10 +47,9 @@ def addMakefile(bake, makedirs, deps=[], args={}):
         else:
             makedir = makedirs['all']
         tfile = '%s/%s' % (makedir, make)
-        lines.append('%s: %s' % (tfile, dep))
-        lines.append('\t$(BAKEFILE) $(BAKEARGS) -f%s -o%s%s %s' % \
-                     (format, tfile, a, bake))
-        lines.append('\ttouch %s' % tfile)
+        linesCur.append('%s: %s' % (tfile, dep))
+        linesCur.append('\t$(BAKEFILE) -f%s -o$@ %s %s' % (format, a, bake))
+        linesCur.append('\ttouch $@')
         if format not in all: all[format] = []
         all[format].append(tfile)
 
@@ -55,6 +59,9 @@ def addMakefile(bake, makedirs, deps=[], args={}):
     add(bake, makedirs, 'makefile.bcc', dep, 'borland', args)
     add(bake, makedirs, 'makefile.vc', dep, 'msvc', args)
     add(bake, makedirs, 'makefile.gcc', dep, 'mingw', args)
+    add(bake, makedirs, 'makefile.wat', dep, 'watcom', args)
+    
+    lines[bake] = linesCur
 
 
 
@@ -63,13 +70,23 @@ def addMakefile(bake, makedirs, deps=[], args={}):
 # -----------------------------------------------
 
 # main makefile:
-addMakefile('wx.bkl', {'all':'..','autoconf':'../..'},
-            ['common.bkl', 'config.bkl', 'files.bkl', 'monolithic.bkl',
-             'multilib.bkl', 'wxwin.py'])
+addMakefile('wx.bkl', {'all':'..','autoconf':'../..'}, [ '$(MDEPS)' ],
+            args={
+                'borland':'-DOPTIONS_FILE=config.bcc',
+                'msvc':'-DOPTIONS_FILE=config.vc',
+                'mingw':'-DOPTIONS_FILE=config.gcc',
+                'watcom':'-DOPTIONS_FILE=config.wat',
+            })
 
 # samples main makefile:
 addMakefile('../../samples/samples.bkl', {'all':'../../samples'},
-            args={'autoconf':'-DAUTOCONF_MACROS_FILE=../../autoconf_inc.m4'})
+            args={
+            'autoconf':'-DAUTOCONF_MACROS_FILE=../../autoconf_inc.m4',
+            'borland':'-DOPTIONS_FILE=../build/config.bcc -DWRITE_OPTIONS_FILE=0',
+            'msvc':'-DOPTIONS_FILE=../build/config.vc -DWRITE_OPTIONS_FILE=0',
+            'mingw':'-DOPTIONS_FILE=../build/config.gcc -DWRITE_OPTIONS_FILE=0',
+            'watcom':'-DOPTIONS_FILE=../build/config.wat -DWRITE_OPTIONS_FILE=0',
+            })
 
 
 CONTRIB_DIR = 1
@@ -78,6 +95,7 @@ SAMPLES_DIR = 2
 def onSubmakefile(type, dirname, names):
     bakes = [x for x in names if x.endswith('.bkl')]
     if len(bakes) == 0: return
+    bakes.sort()
     dirname = dirname.replace(os.sep, '/')
     depth = dirname.count('/') - 2
     if depth <= 0: return
@@ -85,47 +103,64 @@ def onSubmakefile(type, dirname, names):
     if type==SAMPLES_DIR:
         prefix = ''.join(['../' for i in range(0,depth)])
         dirflags = '-DWXTOPDIR=%s../' % prefix
+        cfgbase = '%s../build/config.' % prefix
     elif type==CONTRIB_DIR:
         dirflags = '-DSRCDIR=../../src/%s' % dirname.split('/')[-1]
         dirflags += ' -DWXTOPDIR=../../../'
+        cfgbase = '../../../build/config.'
 
     args = {
         'not_autoconf':dirflags,
         'autoconf':'-DAUTOCONF_MACROS_FILE=../../autoconf_inc.m4',
+        'msvc':'-DOPTIONS_FILE='+cfgbase+'vc -DWRITE_OPTIONS_FILE=0',
+        'mingw':'-DOPTIONS_FILE='+cfgbase+'gcc -DWRITE_OPTIONS_FILE=0',
+        'borland':'-DOPTIONS_FILE='+cfgbase+'bcc -DWRITE_OPTIONS_FILE=0',
+        'watcom':'-DOPTIONS_FILE='+cfgbase+'wat -DWRITE_OPTIONS_FILE=0',
     }
     
     for bake in bakes:
         if type==CONTRIB_DIR:
             acdir = '../../contrib/src/%s' % dirname.split('/')[-1]
-            ruledep = 'common_contrib.bkl'
+            ruledep = '$(CDEPS)'
         else:
             acdir = dirname
-            ruledep = 'common_samples.bkl'
+            ruledep = '$(SDEPS)'
         addMakefile('%s/%s' % (dirname, bake),
-                    {'all':dirname,'autoconf':acdir},
-                    deps=['common.bkl',ruledep,'config.bkl'],
+                    {'all':dirname,'autoconf':acdir}, deps=[ruledep],
                     args=args)
 
 os.path.walk(os.path.join('..','..','samples'),
              onSubmakefile, SAMPLES_DIR)
 os.path.walk(os.path.join('..','..','contrib','build'),
              onSubmakefile, CONTRIB_DIR)
+os.path.walk(os.path.join('..','..','contrib','samples'),
+             onSubmakefile, SAMPLES_DIR)
+os.path.walk(os.path.join('..','..','contrib','utils'),
+             onSubmakefile, SAMPLES_DIR)
 
 
 cleanCmds = ''
-for f in all:
+allK = all.keys()
+allK.sort()
+cleanList = []
+
+for f in allK:
+    all[f].sort()
+
+for f in allK:
     for i in all[f]:
-        cleanCmds += '\trm -f %s\n' % i
+        cleanList.append('\trm -f %s\n' % i)
+    cleanCmds = ''.join(cleanList)
 
-for f in all:
+for f in allK:
     var = '%s_ALL' % f.upper()
-    file.write('%s = %s\n' % (var,' '.join(all[f])))
+    file.write('%s = \\\n\t%s\n' % (var,' \\\n\t'.join(all[f])))
 
 file.write('all:')
-for f in all:
+for f in allK:
     file.write(' %s' % f)
 file.write('\n\n')
-for f in all:
+for f in allK:
     file.write('%s: $(%s_ALL)\n' % (f, f.upper()))
 
 file.write("""
@@ -133,6 +168,8 @@ clean:
 \trm -f ../../autoconf_inc.m4
 %s
 
+library: ../../Makefile.in ../makefile.bcc ../makefile.vc ../makefile.wat ../makefile.gcc
+
 ../../autoconf_inc.m4: ../../Makefile.in
 ../../configure: ../../autoconf_inc.m4
 \t(cd ../.. ; aclocal && autoconf)
@@ -146,6 +183,9 @@ Makefile: regenMakefile.py
 \t@echo
 \t@exit 1
 """ % cleanCmds)
-for l in lines:
-    file.write('%s\n' % l)
+linesK = lines.keys()
+linesK.sort()
+for lk in linesK:
+    for l in lines[lk]:
+        file.write('%s\n' % l)
 file.close()