]> git.saurik.com Git - wxWidgets.git/blobdiff - build/bakefiles/regenMakefile.py
Override CocoaSetEnabled() to call -[NSControl setEnabled:]
[wxWidgets.git] / build / bakefiles / regenMakefile.py
index 87e04884eb9e969376c1a59d1c1cb9d1455a87e1..5ecc47351ad8ab44b04e9dcf083c2992db82de07 100755 (executable)
@@ -7,49 +7,85 @@
 # $Id$
 #
 
-import string, os.path
+import string, os.path, copy
+
+# list of files that should _not_ be generated even thought we could do it:
+DONT_GENERATE = [
+    '../../samples/Makefile.in',
+    '../../samples/samples.dsw',
+    '../../demos/demos.dsw',
+    '../../samples/html/html_samples.dsw',
+    '../../samples/opengl/opengl_samples.dsw',
+    '../../samples/mobile/mobile_samples.dsw',
+    '../../utils/utils.dsw',
+]
 
 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
+
+DSWFLAGS = -DRUNTIME_LIBS=dynamic -DOFFICIAL_BUILD=0 -DUSE_HTML=1 \\
+           -DUSE_OPENGL=1 -DUSE_ODBC=1 -DMONOLITHIC=0 -DUSE_GUI=1 \\
+           -DDEBUG_INFO=default -DDEBUG_FLAG=default -DMSLU=0
+
+COMPAT_TARGETS = ../../src/wxWindows.dsp
+
 """)
 
-lines = []
+lines = {}
 all = {}
-all['autoconf'] = ['../../configure']
+all['autoconf'] = []
+
+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]
+        if format != 'autoconf' and 'not_autoconf' in args:
+            a += ' %s' % args['not_autoconf']
         if format in makedirs:
             makedir = makedirs[format]
         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)
+
+        if tfile in DONT_GENERATE: return
+        
+        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)
 
     dep = string.join(deps + [bake], ' ')
 
     add(bake, makedirs, 'Makefile.in', dep, 'autoconf', 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)
+    add(bake, makedirs,
+        (bake[1+bake.rfind('/'):]).replace('.bkl','.dsw'),
+        dep, 'msvc6prj', args)
+    
+    lines[bake] = linesCur
 
 
 
@@ -58,60 +94,142 @@ def addMakefile(bake, makedirs, deps=[], args={}):
 # -----------------------------------------------
 
 # main makefile:
-addMakefile('wx.bkl', {'all':'..','autoconf':'../..'},
-            ['common.bkl', 'config.bkl', 'files.bkl', 'monolithic.bkl',
-             'wxwin.py'])
+addMakefile('wx.bkl', {'all':'../msw','autoconf':'../..'}, [ '$(MDEPS)' ],
+            args={
+                'borland':'-DOPTIONS_FILE=config.bcc',
+                'msvc':'-DOPTIONS_FILE=config.vc',
+                'mingw':'-DOPTIONS_FILE=config.gcc',
+                'watcom':'-DOPTIONS_FILE=config.wat',
+                'msvc6prj':'$(DSWFLAGS)',
+            })
 
 # samples main makefile:
-addMakefile('../../samples/samples.bkl', {'all':'../../samples'})
-
-
-def onSubmakefile(acdir, dirname, names):
+addMakefile('../../samples/samples.bkl', {'all':'../../samples'},
+            args={
+            'autoconf':'-DAUTOCONF_MACROS_FILE=../../autoconf_inc.m4',
+            'borland':'-DOPTIONS_FILE=../build/msw/config.bcc -DWRITE_OPTIONS_FILE=0',
+            'msvc':'-DOPTIONS_FILE=../build/msw/config.vc -DWRITE_OPTIONS_FILE=0',
+            'mingw':'-DOPTIONS_FILE=../build/msw/config.gcc -DWRITE_OPTIONS_FILE=0',
+            'watcom':'-DOPTIONS_FILE=../build/msw/config.wat -DWRITE_OPTIONS_FILE=0',
+            })
+addMakefile('../../demos/demos.bkl', {'all':'../../demos'},
+            args={
+            'autoconf':'-DAUTOCONF_MACROS_FILE=../../autoconf_inc.m4',
+            'borland':'-DOPTIONS_FILE=../build/msw/config.bcc -DWRITE_OPTIONS_FILE=0',
+            'msvc':'-DOPTIONS_FILE=../build/msw/config.vc -DWRITE_OPTIONS_FILE=0',
+            'mingw':'-DOPTIONS_FILE=../build/msw/config.gcc -DWRITE_OPTIONS_FILE=0',
+            'watcom':'-DOPTIONS_FILE=../build/msw/config.wat -DWRITE_OPTIONS_FILE=0',
+            })
+addMakefile('../../utils/utils.bkl', {'all':'../../utils'},
+            args={
+            'autoconf':'-DAUTOCONF_MACROS_FILE=../../autoconf_inc.m4',
+            'borland':'-DOPTIONS_FILE=../build/msw/config.bcc -DWRITE_OPTIONS_FILE=0',
+            'msvc':'-DOPTIONS_FILE=../build/msw/config.vc -DWRITE_OPTIONS_FILE=0',
+            'mingw':'-DOPTIONS_FILE=../build/msw/config.gcc -DWRITE_OPTIONS_FILE=0',
+            'watcom':'-DOPTIONS_FILE=../build/msw/config.wat -DWRITE_OPTIONS_FILE=0',
+            })
+
+
+CONTRIB_DIR = 1
+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
-    prefix = ''.join(['../' for i in range(0,depth)])
+    
+    if type==SAMPLES_DIR:
+        prefix = ''.join(['../' for i in range(0,depth)])
+        topdirflags = '-DWXTOPDIR=%s../' % prefix
+        srcdirflags = ''
+        cfgbase = '%s../build/msw/config.' % prefix
+    elif type==CONTRIB_DIR:
+        srcdirflags = '-DSRCDIR=../../src/%s' % dirname.split('/')[-1]
+        topdirflags = ' -DWXTOPDIR=../../../'
+        cfgbase = '../../../build/msw/config.'
 
     args = {
-        'all':'-DWXTOPDIR=/%s..' % prefix,
+        'all':topdirflags,
+        'not_autoconf':srcdirflags,
         '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',
+        'msvc6prj':'$(DSWFLAGS)',
     }
-    
+
     for bake in bakes:
+        if type==CONTRIB_DIR:
+            acdir = '../../contrib/src/%s' % dirname.split('/')[-1]
+            ruledep = '$(CDEPS)'
+        else:
+            acdir = dirname
+            ruledep = '$(SDEPS)'
         addMakefile('%s/%s' % (dirname, bake),
-                    {'all':dirname,'autoconf':dirname+acdir},
-                    deps=['common.bkl','common_samples.bkl','config.bkl'],
+                    {'all':dirname,'autoconf':acdir}, deps=[ruledep],
                     args=args)
 
-os.path.walk('../../samples', onSubmakefile, '')
-os.path.walk('../../contrib/src', onSubmakefile, '/..')
+os.path.walk(os.path.join('..','..','samples'),
+             onSubmakefile, SAMPLES_DIR)
+os.path.walk(os.path.join('..','..','demos'),
+             onSubmakefile, SAMPLES_DIR)
+os.path.walk(os.path.join('..','..','utils'),
+             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:
+file.write('\nall: $(COMPAT_TARGETS)')
+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("""
 clean:
 \trm -f ../../autoconf_inc.m4
+\trm -f $(COMPAT_TARGETS)
 %s
 
+library: ../../Makefile.in\\
+         ../msw/makefile.bcc\\
+         ../msw/makefile.vc\\
+         ../msw/makefile.wat\\
+         ../msw/makefile.gcc\\
+         ../msw/wx.dsw\\
+         ../../src/wxWindows.dsp
+
 ../../autoconf_inc.m4: ../../Makefile.in
-../../configure: ../../autoconf_inc.m4
-\t(cd ../.. ; aclocal && autoconf)
+
+../../src/wxWindows.dsp: monolithic.bkl files.bkl
+\t$(BAKEFILE) -Icompat -fwx24dsp -DUSE_GUI=1 -DWXUNIV=0 -o$@ wx.bkl
+\ttouch $@
 
 Makefile: regenMakefile.py
 \t./regenMakefile.py
@@ -122,6 +240,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()