3 Note: The current official release of SCons is 0.98, but
4 our system still works for 0.97. However, this will be fixed
7 Blenders SCons build scripts
8 ============================
13 Since the beginning of 2004 Blender has had the SCons system as a
14 build option. SCons is a Python-based, accurate build system. The
15 scripts that were implemented in the first iteration worked, but
16 the system grew quickly into such a state that maintaining it became
17 a nightmare, and adding new features was just horrible, leading to
18 many hacks without much sense in the overall structure.
20 The rewrite has been waiting for a long time. Jonathan Jacobs provided
21 a first overhaul of the scripts, which I used in the first phase of
22 the rewrite. To make the system as maintainable as possible I made
23 some radical changes, but thanks go to Jonathan for providing me
24 with the patch to get started.
26 This document describes the usage of the new SCons scripts. The
27 inner workings are described in blender-scons-dev.txt.
32 To build Blender with the SCons scripts you need a full Python
33 install, version 2.4 or later (http://www.python.org) and a SCons
34 installation, version v0.97 (http://www.scons.org).
37 http://www.blender.org/development/building-blender/getting-dependencies/
38 that you have all dependencies needed for building Blender. Note that for
39 windows many of these dependencies already come in the lib/windows module
42 In the base directory of the sources (from now on called $BLENDERHOME)
43 you'll see a file named SConstruct. This is the entry point for the
44 SCons build system. In a terminal, change to this directory. To just
45 build, issue the command 'scons':
49 This will start the build process with default values. Depending
50 on your platform you may see colour in your output (non-Windows
51 machines). In the the beginning an overview of targets and arguments
52 from the command-line is given, then all libraries and binaries to
55 The build uses BF_BUILDDIR to build into and BF_INSTALLDIR to
56 finally copy all needed files to get a proper setup. These
57 variabbles have default values for every platform in
58 $BLENDERHOME/config/(platform)-config.py. After the build successfully
59 completes, you can find everything you need in BF_INSTALLDIR.
61 If you want to create the installer package of Blender on Windows you'll
62 need to install nullsoft scriptable install system from http://nsis.sf.net.
63 As an extra dependency, you need the MoreInfo plugin too. The creation of
64 the installer is tied into the build process and can be triggered with:
72 The default values for your platform can be found in the directory
73 $BLENDERHOME/config. Your platform specific defaults are in
74 (platform)-config.py, where platform is one of:
76 - linux2, for machines running Linux
77 - win32-vc, for Windows machines, compiling with a Microsoft compiler
78 - win32-mingw, for Windows machines, compiling with the MingW compiler
79 - darwin, for OS X machines
80 (TBD: add cygwin, solaris and freebsd support)
82 These files you will normally not change. If you need to override
83 a default value, make a copy of the proper configuration to
84 $BLENDERHOME/user-config.py. This file you can modify to your
85 likings. Any value set here will override the ones from the
88 You can use BF_CONFIG argument to override the default user-config.py
89 check. This is just like the user-config.py, but just with another name:
91 % scons BF_CONFIG=myownsettings
93 If you want to quickly test a new setting, you can give the option
94 also on the command-line:
96 % scons BF_BUILDDIR=../mybuilddir WITH_BF_OPENEXR=0
98 This command sets the build directory to BF_BUILDDIR and disables
101 If you need to know what can be set through the command-line, run
106 This command will print a long list with settable options and what
107 every option means. Many of the default values will be empty, and
108 from a fresh checkout without a user-config.py the actual values
109 are the defaults as per $BLENDERHOME/config/(platform)-config.py
110 (unless you have overridden any of them in your
111 $BLENDERHOME/user-config.py).
113 NOTE: The best way to avoid confusion is the
114 copy $BLENDERHOME/config/(platform)-config.py to
115 $BLENDERHOME/user-config.py. You should NEVER have to modify
116 $BLENDERHOME/config/(platform)-config.py
118 Configuring the output
119 ----------------------
121 This rewrite features a cleaner output during the build process. If
122 you need to see the full command-line for compiles, then you can
123 change that behaviour. Also the use of colours can be changed:
127 This will disable the use of colours.
131 This will give the old, noisy output. Every command-line per
132 compile is printed out in its full glory. This is very useful when
133 debugging problems with compiling, because you can see what the
134 included paths are, what defines are given on the command-line,
135 what compiler switches are used, etc.
137 Compiling Only Some Libraries
138 -----------------------------
140 Scons now has support for specifying a list of libraries that are
141 exclusively compiled, ignoring all other libraries. This is invoked
142 with the BF_QUICK arguments; for example:
144 % scons BF_QUICK=src,bf_blenkernel
146 Note that this not the same as passing a list of folders as in the
147 makefile's "quicky" command. In Scons, all of Blender's code modules
148 are in their own static library; this corresponds to one-lib-per-folder
149 in some cases (especially in blender/source/blender).
151 To obtain a list of the libraries, simple fire up scons and CTRL-C out once
152 it finishes configuring (and printing to the console) the library list.
154 Compiling Libraries With Debug Profiling
155 ----------------------------------------
157 Scons has support for specifying a list of libraries that are compiled
158 with debug profiling enabled. This is implemented in two commands:
159 BF_QUICKDEBUG which is a command-line argument and BF_DEBUG_LIBS, which goes
160 in your user-config.py
162 BF_QUICKDEBUG is similar to BF_QUICK:
164 % scons BF_QUICKDEBUG=src,bf_blenkernel,some-other-lib
166 To use BF_DEBUG_LIBS, put something like the following in you user-config.py:
168 BF_DEBUG_LIBS = ['bf_blenlib', 'src', 'some_lib']
170 For instructions on how to find the names of the libraries (folders) you
171 wish to use, see the above section. Note that the command BF_DEBUG
172 (see below) will override these settings and compile ALL of Blender with
173 debug symbols. Also note that BF_QUICKDEBUG and BF_DEBUG_LIBS are combined;
174 for example, setting BF_QUICKDEBUG won't overwrite the contents of BF_DEBUG_LIBS.
181 * msvc, this is a full install of Microsoft Visual C++. You'll
182 likely have the .NET Framework SDK, Platform SDK and DX9 SDK
183 installed * mstoolkit, this is the free MS VC++ 2003 Toolkit. You
184 need to verify you have also the SDKs installed as mentioned
185 for msvc. * mingw, this is a minimal MingW install. TBD: write
186 proper instructions on getting needed packages.
188 On Windows with all of the three toolset installed you need to
189 specify what toolset to use
191 % scons BF_TOOLSET=msvc
192 % scons BF_TOOLSET=mingw
194 If you have only the toolkit installed, you will also need to give
195 BF_TOOLSET=mstoolkit on the command-line, to make sure everything is
196 setup properly. Currently there is no good mechanism to automatically
197 determine wether the found 'cl.exe' is from the toolkit or from a
202 Currently only the default toolsets are supported for these platforms,
203 so nothing special needs to be told to SCons when building. The
204 defaults should work fine in most cases.
209 Build Blender with the defaults:
213 Build Blender, but disable OpenEXR support:
215 % scons WITH_BF_OPENEXR=0
217 Build Blender, enable debug symbols:
221 Build Blender, install to different directory:
223 % scons BF_INSTALLDIR=/tmp/testbuild
225 Build Blender in /tmp/obj and install to /usr/local:
227 % scons BF_BUILDDIR=/tmp/obj BF_INSTALLDIR=/usr/local
233 Clean out the installed files:
237 /Nathan Letwory (jesterKing)