[Bf-committers] Questions about SCons

Tron Thomas tron.thomas at verizon.net
Sat Jul 8 19:03:36 CEST 2006


I have been trying to using SCons to create a debug build of Blender  
on Mac OS X, and I have some questions I'm hoping I can get some  
answers to.

In general SCons works great for building.  All someone needs to do  
is type a cammand and then wait for the build to complete.  Compared  
to what I've had to go through to get Blender to build using GNU  
make, this clearly a much simpler and easier approach.

For as nice as this is there are some problems, and I'm wondering how  
well these problems are understood and what action is being taken to  
corect them.

For example, modifying a single file requires a build from the root  
of the source.  This means that SCons has to check every build target  
to make sure its up to date.  This make rebuilding for a simple code  
change slow.

Even worse is the fact SCons does not realize that targets need to be  
rebuilt when source files are modified.  I found that the object  
files resulting from the compliation of the changed source files must  
be manually deleted for SCons to realize the files to be re-compiled.

What can someone do to avoid these types issues when building with  
SCons?

Even more important, are the difficulties of trying to create a  
debuggable program in the first place.  The build output doesn't say  
much about what options are being applied to compiled and linked  
files.  Its hard to know things like whether the final result will  
contain debug information or not.  Also knowing what it takes to  
change the build options is not obvious.

The documentation on the Internet for changing build options says  
that the first time scons is started, the file config.opts is  
generated.  To my knowledge, this is not correct.  The config.opts  
file is never created.  Creating a config.opts file and adding  
options to it also has no affect on the build results.

Paying attention to the build output and some investigation of the  
main SConstruct script revealed that the actual way to modify build  
settings is to create a file named user-config.py in the same  
directory as that main SConstruct script.  Adding entries like the  
following to this user-config.py file can produce a debug build:

CCFLAGS.extend(['-g', '-O0'])
CXXFLAGS.extend(['-g', '-O0'])

Even after doing this, all was not right.  Debugging the code  
indicated that despite the fact that the user-config.py file  
specified no optimization should be applied, the code does in fact  
contain optimizations.  Debugging optimized code can be tricky and  
confusing.

So far I have been unable to find where these optimization options  
are applied and how to eliminate them.

How can someone use SCons to create a debug build of Blender that  
does not contain any optimizations?



More information about the Bf-committers mailing list