Scons Compiling Hack:
authorJoshua Leung <aligorith@gmail.com>
Thu, 29 Nov 2007 06:31:36 +0000 (06:31 +0000)
committerJoshua Leung <aligorith@gmail.com>
Thu, 29 Nov 2007 06:31:36 +0000 (06:31 +0000)
Restoring the "evil src splitting hack" for scons+mingw systems. By default, it is not used, but if your system is choking when trying to link src, then add BF_SPLIT_SRC=1 to your user-config.py to use this hack.

source/blender/src/SConscript
tools/btools.py

index ba3e03ea1eb8a4cab7a2aa200185228b02202035..f466798c40c02dbbab91198f093e1a92a609bed1 100644 (file)
@@ -5,6 +5,20 @@ Import ('env')
 
 sources = env.Glob('*.c')
 
+if env['BF_SPLIT_SRC'] == 1:
+       numobj = len(sources)    
+       maxobj = 30      
+
+       numlibs = numobj / maxobj        
+       if (numobj % maxobj):    
+               numlibs = numlibs + 1    
+       subsources = []          
+        
+       if (env['OURPLATFORM'] == 'win32-mingw'):        
+               for i in range(numlibs - 1):     
+                       subsources.append(sources[i*maxobj:(i+1)*maxobj])        
+               subsources.append(sources[(numlibs-1)*maxobj:])
+
 incs = ' #/intern/guardedalloc #/intern/memutil'
 incs += ' ../blenlib ../makesdna ../blenkernel'
 incs += ' ../include #/intern/bmfont ../imbuf ../render/extern/include'
@@ -60,5 +74,9 @@ if env['WITH_BF_VERSE']:
 # TODO buildinfo
 if env['BF_BUILDINFO'] == 1:
     defs.append('NAN_BUILDINFO')
-
-env.BlenderLib ( libname = 'src', sources = sources, includes = Split(incs), defines = defs, libtype=['core', 'intern'], priority = [5, 25] )
+       
+if (env['BF_SPLIT_SRC'] == 1) and (env['OURPLATFORM'] == 'win32-mingw'):        
+       for i in range(numlibs):         
+               env.BlenderLib ( libname = 'src%d' % (i), sources = subsources[i], includes = Split(incs), defines = defs, libtype=['core', 'intern'], priority = [5, 25] )      
+else:
+       env.BlenderLib ( libname = 'src', sources = sources, includes = Split(incs), defines = defs, libtype=['core', 'intern'], priority = [5, 25] )
index eb8f844df4d15929f683c90390ba3d68efdd849b..455335ab89509b043c844cd9b5d1bb97a36ea858 100755 (executable)
@@ -54,7 +54,7 @@ def validate_arguments(args, bc):
             'BF_PROFILE_FLAGS', 'LCGDIR', 'WITH_BF_VERSE', 
             'BF_VERSE_INCLUDE',
             'VERSE_BUILD_BINARY', 'VERSE_BUILD_DIR', 'VERSE_REGEN_PROTO',
-            'BF_TWEAK_MODE',
+            'BF_TWEAK_MODE', 'BF_SPLIT_SRC',
             'WITHOUT_BF_INSTALL'
             ]
 
@@ -297,6 +297,7 @@ def read_opts(cfg, args):
         (BoolOption('BF_BUILDINFO', 'Buildtime in splash if true', 'true')),
 
         (BoolOption('BF_TWEAK_MODE', 'Enable tweak mode if true', 'false')),
+               (BoolOption('BF_SPLIT_SRC', 'Split src lib into several chunks if true', 'false')),
         (BoolOption('WITHOUT_BF_INSTALL', 'dont install if true', 'false')),
 
     ) # end of opts.AddOptions()