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:
authorSergey Sharybin <sergey.vfx@gmail.com>2016-01-04 12:20:48 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2016-01-04 12:20:48 +0300
commit5d99cde8229a481363f1439ea4a4c2af851b1cb1 (patch)
tree76ebd7548ddb8eee0c7039e7f154ac982b57e80f /doc
parent1eb5e0b6608b2c2bbc9813d9155ea379a5bc8ef4 (diff)
Remove SCons building system
While SCons building system was serving us really good for ages it's no longer having much attention by the developers and started to become quite a difficult task to maintain. What's even worse -- there started to be quite serious divergence between SCons and CMake which was only accumulating over the releases now. The fact that none of the active developers are really using SCons and that our main studio is also using CMake spotting bugs in the SCons builds became quite a difficult task and we aren't always spotting them in time. Meanwhile CMake became really mature building system which is available on every platform we support and arguably it's also easier and more robust to use. This commit includes: - Removal of actual SCons building system - Removal of SCons git submodule - Removal of documentation which is stored in the sources and covers SCons - Tweaks to the buildbot master to stop using SCons submodule (this change requires deploying to the server) - Tweaks to the install dependencies script to skip installing or mentioning SCons building system - Tweaks to various helper scripts to avoid mention of SCons folders/files as well Reviewers: mont29, dingto, dfelinto, lukastoenne, lukasstockner97, brecht, Severin, merwin, aligorith, psy-fi, campbellbarton, juicyfruit Reviewed By: campbellbarton, juicyfruit Differential Revision: https://developer.blender.org/D1680
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)