Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/build_systems/scons-dev.txt193
-rw-r--r--doc/build_systems/scons.txt227
2 files changed, 0 insertions, 420 deletions
diff --git a/doc/build_systems/scons-dev.txt b/doc/build_systems/scons-dev.txt
deleted file mode 100644
index 9ca072c38c5..00000000000
--- a/doc/build_systems/scons-dev.txt
+++ /dev/null
@@ -1,193 +0,0 @@
-
- Internals of Blenders SCons scripts
- ===================================
-
- Scope
- ------
- This document describes the architecture of the SCons scripts for
- Blender. An overview of available functionality and how to modify,
- extend and maintain the system.
-
- Audience
- --------
- This document is for developers who need to modify the system,
- ie. add or remove new libraries, add new arguments for SCons, etc.
-
- Files and their meaning
- -----------------------
-
- The main entry point for the build system is the SConstruct-file in
- $BLENDERHOME. This file creates the first BlenderEnvironment to work
- with, reads in options, and sets up some directory structures. Further
- it defines some targets.
-
- Platform-specific configurations are in $BLENDERHOME/config. The
- filenames have the form (platform)-config.py, where platform one of:
-
- * darwin
- * linux
- * win32-mingw
- * win32-vc
-
- The user can override options by creating a file
- $BLENDERHOME/user-config.py. It can have any option from
- (platform)-config.py. Options in this file will override the platform
- defaults.
-
- Much of the actual functionality can be found in the python scripts
- in the directory $BLENDERHOME/build_files/scons/tools, with
- Blender.py defining the bulk of the functionality. btools.py has some
- helper functions, and bcolors.py is for the terminal
- colors. mstoolkit.py and crossmingw.py are modules which set up SCons
- for the MS VC++ 2003 toolkit and the cross-compile toolset for
- compiling Windows binaries on Linux respectively. Note: the
- cross-compile doesn't work yet for Blender, but is added in
- preparation for having it work in the distant future.
-
- BlenderEnvironment
- ------------------
-
- The module Blender.py implements a BlenderEnvironment class, derived
- from the SConsEnvironment of SCons. This is done to wrap some often
- used functionality. The BlenderEnvironment offers two important
- wrappers: BlenderProg() and BlenderLib(). The first one is used to
- specify a binary to be built, the second one is used to specify what
- static library is built from given sources.
-
- Build a static library called "somelib". The system handles library
- pre- and suffixes automatically, you don't need to bother yourself
- with these details:
-
- env = BlenderEnvironment(ENV = os.environ) # create an environment
- env.BlenderLib(libname="somelib", sources=['list.c','with.c','sources.c'],
- includes=['/list/with/include/paths', '.', '..'],
- defines=['LIST_WITH', 'CPP_DEFINES', 'TO_USE'],
- libtype=['blender', 'common'] # this is a list with libtypes. Normally you don't
- # need to specify this, but if you encounter linking
- # problems you may need this
- priority=[10, 20] # Priorities, list as long as libtype, priority per type
- compileflags=['/O2'] # List of compile flags needed for this particular library.
- # used only in rare cases, like SOLID, qhull and Bullet
- )
-
- There should be no need to ever add an extra BlenderProg to the
- existing ones in SConstruct, see that file for its use, and Blender.py
- for its implementation.
-
- The new system works so that using these wrappers, has all libraries
- (and programs) register with a central repository. This means that
- adding a new library is as easy as just creating the new SConscript
- and making sure that it gets called properly. Linking and such will
- then be handled automatically.
-
- If you want that adding new source files for a certain library
- is handled automatically, you can use the Glob() function from
- the BlenderEnvironment to create lists of needed files. See
- $BLENDERHOME/source/blender/src/SConscript for an example. Keep in
- mind that this will add any new file that complies to the rule given
- to the Glob() function. There are a few (external) libraries with
- which this can't be used, because it'd take files that shouldn't be
- compiled, and create subsequentially problems during the linking stage
- (like SOLID, qhull, Bullet).
-
- Linking order and priorities
- ----------------------------
-
- As shown above, you can give a library a priority in a certain
- group. If you need to make sure that a Blender library is linked
- before or after another one, you can give it a priority. To debug
- the priorities us BF_PRIORITYLIST=1 on the command-line while running
- a build.
-
- % scons BF_PRIORITYLIST=1
-
- This will give a list with values suggested by the system. Make
- changes to all SConscripts in question to reflect or change the
- values given by this command. ALWAYS check this after adding a new
- internal, external library or core library, and make sure there are
- sane values. You can use large and negative numbers to test with,
- but after you've got a working linking order, do change the system
- to reflect BF_PRIORITYLIST values.
-
- Also, if you find that a library needs to be given multiple times to
- the linker, you can do that by giving a python list with the names
- of the available library types. They are currently:
-
- B.possible_types = ['core', 'common', 'blender', 'intern',
- 'international', 'game', 'game2',
- 'player', 'player2', 'system']
-
- More groups can be added, but that should be carefully considered,
- as it may lead to large-scale changes. The current amount of libraries
- should suffice.
-
- The central repository is utilised in the SConstruct in two
- ways. Firstly, it is used to determine the order of all static
- libraries to link into the main Blender executable. Secondly, it
- is used to keep track of all built binaries and their location,
- so that they can be properly copied to BF_INSTALLDIR.
-
- The libraries can be fetched in their priority order with
- create_blender_liblist from Blender.py, see the SConstruct on how
- it is used.
-
- The program repository is the global list program_list from
- Blender.py. See SConstruct for its usage.
-
-
- Adding a new option and libraries
- ---------------------------------
-
- Lets say we want to add WITH_BF_NEWLIB, which will
- enable or disable a new feature library with sources in
- $BLENDERHOME/source/blender/newlib. This 'newlib' needs external
- headers from a 3rd party library '3rdparty'. For this we want to
- add a set of options BF_3RDPARTY, BF_3RDPARTY_INC, BF_3RDPARTY_LIB,
- BF_3RDPARTY_LIBPATH:
-
- 1) Add all mentiond options to all (platform)-config.py
- files. WITH_BF_NEWLIB is a boolean option ('true', 'false'),
- the rest are strings with paths and library names. See the
- OpenEXR options for example.
-
- 2) Add all options to the argument checking function
- validate_arguments() in btools.py. See again OpenEXR options
- for example.
-
- 3) Add all options to the option reading function read_opts()
- in btools.py. See again OpenEXR options for example. All default
- values can be empty, as the actual default values are in the
- (platform)-config.py files.
-
- 4) Add BF_3RDPARTY_LIB to the function setup_syslibs()
- and BF_3RDPARTY_LIBPATH to the function setup_staticlibs()
- in Blender.py
-
- At this stage we have prepared all option setting and linking needs,
- but we still need to add in the compiling of the 'newlib'.
-
- 5) Create a SConscript in $BLENDERHOME/source/blender/newlib. Look
- at ie. $BLENDERHOME/source/blender/src/SConscript for
- template. The new SConscript will register the new library
- like so:
-
- env.BlenderLib(libname='newlib', sources=sourcefiles, includes=incs) # the rest of the arguments get defaults = empty lists and values
-
- 6) Edit $BLENDERHOME/source/blender/SConscript with the following
- addition:
-
- if env['WITH_BF_NEWLIB'] == 1:
- SConscript(['newlib/SConscript'])
-
- After this you can see if this works by trying to build:
-
- % scons WITH_BF_NEWLIB=1 # build with newlib
- % scons WITH_BF_NEWLIB=0 # disable newlib
-
- This is all what should be needed. Changing the library name doesn't
- need changes elsewhere in the system, as it is handled automatically
- with the central library repository.
-
- Enjoy the new system!!
-
- /Nathan Letwory (jesterKing)
diff --git a/doc/build_systems/scons.txt b/doc/build_systems/scons.txt
deleted file mode 100644
index e3438f1fe04..00000000000
--- a/doc/build_systems/scons.txt
+++ /dev/null
@@ -1,227 +0,0 @@
-
- Blenders SCons build scripts
- ============================
-
- Introduction
- ------------
-
- Since the beginning of 2004 Blender has had the SCons system as a
- build option. SCons is a Python-based, accurate build system. The
- scripts that were implemented in the first iteration worked, but
- the system grew quickly into such a state that maintaining it became
- a nightmare, and adding new features was just horrible, leading to
- many hacks without much sense in the overall structure.
-
- The rewrite has been waiting for a long time. Jonathan Jacobs provided
- a first overhaul of the scripts, which I used in the first phase of
- the rewrite. To make the system as maintainable as possible I made
- some radical changes, but thanks go to Jonathan for providing me
- with the patch to get started.
-
- This document describes the usage of the new SCons scripts. The
- inner workings are described in scons-dev.txt.
-
- Building Blender
- ----------------
-
- To build Blender with the SCons scripts you need a full Python
- install, version 2.4 or later (http://www.python.org). We already provide
- a scons-local installation, which can be found in the scons/ subdirectory.
- This document uses the scons-local installation for its examples.
-
- For build instructions, including dependencies, consult the appropriate
- section for your platform at
- http://wiki.blender.org/index.php/Dev:Doc/Building_Blender. Note that for
- windows many of these dependencies already come in the lib/windows module
- from CVS.
-
- In the base directory of the sources (from now on called $BLENDERHOME)
- you'll see a file named SConstruct. This is the entry point for the
- SCons build system. In a terminal, change to this directory. To just
- build, start the SCons entry script on Windows (will be used for the remainder
- of this document):
-
- % python scons\scons.py
-
- On a Unix-compatible system it would be
-
- % python ./scons/scons.py
-
- This will start the build process with default values. Depending
- on your platform you may see color in your output (non-Windows
- machines). In the the beginning an overview of targets and arguments
- from the command-line is given, then all libraries and binaries to
- build are configured.
-
- The build uses BF_BUILDDIR to build into and BF_INSTALLDIR to finally copy
- all needed files to get a proper setup. The BF_DOCDIR is used to generate
- Blender Python documentation files to. These variables have default values
- for every platform in
- $BLENDERHOME/build_files/scons/config/(platform)-config.py. See the next
- section of this document for how to customize these paths. After the build
- successfully completes, you can find everything you need in BF_INSTALLDIR.
-
- If you want to create the installer package of Blender on Windows you'll
- need to install nullsoft scriptable install system from http://nsis.sf.net.
- As an extra dependency, you need the MoreInfo plugin too. The creation of
- the installer is tied into the build process and can be triggered with:
-
- % python scons\scons.py nsis
-
-
- Configuring the build
- ---------------------
-
- The default values for your platform can be found in the directory
- $BLENDERHOME/build_files/scons/config. Your platform specific defaults are
- in (platform)-config.py, where platform is one of:
-
- - linux, for machines running Linux
- - win32-vc, for Windows machines, compiling with a Microsoft compiler
- - win32-mingw, for Windows machines, compiling with the MingW compiler
- - darwin, for OS X machines
- (TBD: add cygwin, solaris and freebsd support)
-
- These files you will normally not change. If you need to override a
- default value, make a file called $BLENDERHOME/user-config.py, and copy
- settings from the build_files/scons/config/(platform)-config.py that you
- want to change. Don't copy the entire file (unless explicitly stated in
- the configuration file), because you may not get updated options you don't
- change yourself, which may result in build errors. You should NEVER have
- to modify $BLENDERHOME/build_files/scons/config/(platform)-config.py.
-
- You can use BF_CONFIG argument to override the default user-config.py
- check. This is just like the user-config.py, but just with another name:
-
- % python scons\scons.py BF_CONFIG=myownsettings
-
- If you want to quickly test a new setting, you can give the option
- also on the command-line:
-
- % python scons\scons.py BF_BUILDDIR=../mybuilddir WITH_BF_OPENEXR=0
-
- This command sets the build directory to BF_BUILDDIR and disables
- OpenEXR support.
-
- If you need to know what can be set through the command-line, run
- scons with -h:
-
- % python scons\scons.py -h
-
- This command will print a long list with settable options and what
- every option means. Many of the default values will be empty, and
- from a fresh checkout without a user-config.py the actual values
- are the defaults as per $BLENDERHOME/config/(platform)-config.py
- (unless you have overridden any of them in your
- $BLENDERHOME/user-config.py).
-
- Configuring the output
- ----------------------
-
- This rewrite features a cleaner output during the build process. If
- you need to see the full command-line for compiles, then you can
- change that behaviour. Also the use of colors can be changed:
-
- % python scons\scons.py BF_FANCY=0
-
- This will disable the use of colors.
-
- % python scons\scons.py BF_QUIET=0
-
- This will give the old, noisy output. Every command-line per
- compile is printed out in its full glory. This is very useful when
- debugging problems with compiling, because you can see what the
- included paths are, what defines are given on the command-line,
- what compiler switches are used, etc.
-
- Compiling Only Some Libraries
- -----------------------------
-
- Our implementation now has support for specifying a list of libraries that are
- exclusively compiled, ignoring all other libraries. This is invoked
- with the BF_QUICK arguments; for example:
-
- % python scons\scons.py BF_QUICK=src,bf_blenkernel
-
- Note that this not the same as passing a list of folders as in the
- makefile's "quicky" command. In Scons, all of Blender's code modules
- are in their own static library; this corresponds to one-lib-per-folder
- in some cases (especially in blender/source/blender).
-
- To obtain a list of the libraries, simple fire up scons and CTRL-C out once
- it finishes configuring (and printing to the console) the library list.
-
- Compiling Libraries With Debug Profiling
- ----------------------------------------
-
- Scons has support for specifying a list of libraries that are compiled
- with debug profiling enabled. This is implemented in two commands:
- BF_QUICKDEBUG which is a command-line argument and BF_DEBUG_LIBS, which goes
- in your user-config.py
-
- BF_QUICKDEBUG is similar to BF_QUICK:
-
- % python scons\scons.py BF_QUICKDEBUG=src,bf_blenkernel,some-other-lib
-
- To use BF_DEBUG_LIBS, put something like the following in you user-config.py:
-
- BF_DEBUG_LIBS = ['bf_blenlib', 'src', 'some_lib']
-
- For instructions on how to find the names of the libraries (folders) you
- wish to use, see the above section. Note that the command BF_DEBUG
- (see below) will override these settings and compile ALL of Blender with
- debug symbols. Also note that BF_QUICKDEBUG and BF_DEBUG_LIBS are combined;
- for example, setting BF_QUICKDEBUG won't overwrite the contents of BF_DEBUG_LIBS.
-
- Supported toolset
- -----------------
-
- WINDOWS
-
- * msvc, this is a full install of Microsoft Visual C++. You'll
- likely have the .NET Framework SDK, Platform SDK and DX9 SDK
- installed * mstoolkit, this is the free MS VC++ 2003 Toolkit. You
- need to verify you have also the SDKs installed as mentioned
- for msvc. * mingw, this is a minimal MingW install. TBD: write
- proper instructions on getting needed packages.
-
- On Windows with all of the three toolset installed you need to
- specify what toolset to use
-
- % python scons\scons.py BF_TOOLSET=msvc
- % python scons\scons.py BF_TOOLSET=mingw
-
- LINUX and OS X
-
- Currently only the default toolsets are supported for these platforms,
- so nothing special needs to be told to SCons when building. The
- defaults should work fine in most cases.
-
- Examples
- --------
-
- Build Blender with the defaults:
-
- % python scons\scons.py
-
- Build Blender, but disable OpenEXR support:
-
- % python scons\scons.py WITH_BF_OPENEXR=0
-
- Build Blender, enable debug symbols:
-
- % python scons\scons.py BF_DEBUG=1
-
- Build Blender, install to different directory:
-
- % python scons\scons.py BF_INSTALLDIR=../myown/installdir
-
- Build Blender in ../myown/builddir and install to ../myown/installdir:
-
- % python scons\scons.py BF_BUILDDIR=../myown/builddir BF_INSTALLDIR=../myown/installdir
-
- Clean BF_BUILDDIR:
-
- % python scons\scons.py clean
-
- /Nathan Letwory (jesterKing)