blender/SConstruct

785 lines
32 KiB
Python
Raw Normal View History

2004-01-04 21:11:59 +00:00
import string
import os
import sys
from distutils import sysconfig
# Build directory.
root_build_dir = '..' + os.sep + 'build' + os.sep
# Blender version.
config_file = 'config.opts'
version='2.32'
2004-01-04 21:11:59 +00:00
sdl_cenv = Environment ()
sdl_lenv = Environment ()
link_env = Environment ()
env = Environment ()
2004-01-04 21:11:59 +00:00
if sys.platform == 'linux2':
use_international = 'false'
2004-01-04 21:11:59 +00:00
use_gameengine = 'false'
use_openal = 'false'
use_fmod = 'false'
use_quicktime = 'false'
use_sumo = 'false'
use_ode = 'false'
2004-01-04 21:11:59 +00:00
release_flags = ['-O2']
debug_flags = ['-O2', '-g']
extra_flags = ['-pipe', '-fPIC', '-funsigned-char']
cxxflags = []
defines = []
warn_flags = ['-Wall', '-W']
window_system = 'X11'
platform_libs = ['m', 'util']
2004-01-04 21:11:59 +00:00
platform_libpath = []
platform_linkflags = []
extra_includes = []
# z library information
z_lib = ['z']
z_libpath = ['/usr/lib']
z_include = ['/usr/include']
# png library information
png_lib = ['png']
png_libpath = ['/usr/lib']
png_include = ['/usr/include']
# jpeg library information
jpeg_lib = ['jpeg']
jpeg_libpath = ['/usr/lib']
jpeg_include = ['/usr/include']
# OpenGL library information
opengl_lib = ['GL', 'GLU']
opengl_libpath = ['/usr/lib', '/usr/X11R6/lib']
opengl_include = ['/usr/include']
# SDL library information
2004-01-04 21:11:59 +00:00
sdl_cenv.ParseConfig ('sdl-config --cflags')
sdl_lenv.ParseConfig ('sdl-config --libs')
sdl_cflags = sdl_cenv.Dictionary()['CCFLAGS']
sdl_include = sdl_cenv.Dictionary()['CPPPATH']
sdl_libpath = sdl_lenv.Dictionary()['LIBPATH']
sdl_lib = sdl_lenv.Dictionary()['LIBS']
# SOLID library information
solid_lib = [] # TODO
solid_libpath = [] # TODO
solid_include = ['#extern/solid/include']
qhull_lib = [] # TODO
qhull_libpath = [] # TODO
qhull_include = ['#extern/qhull/include']
# ODE library information
ode_lib = [] # TODO
ode_libpath = [] # TODO
ode_include = ['#extern/ode/dist/include/ode']
# Python library information
python_lib = ['python%d.%d' % sys.version_info[0:2]]
python_libpath = [sysconfig.get_python_lib (0, 1) + '/config']
python_include = [sysconfig.get_python_inc ()]
# International support information
ftgl_lib = ['ftgl']
ftgl_libpath = ['#../lib/linux-glibc2.2.5-i386/ftgl/lib']
ftgl_include = ['#../lib/linux-glibc2.2.5-i386/ftgl/include']
freetype_lib = ['freetype']
freetype_libpath = ['#../lib/linux-glibc2.2.5-i386/freetype/lib']
freetype_include = ['#../lib/linux-glibc2.2.5-i386/freetype/include']
gettext_lib = []
gettext_libpath = []
gettext_include = []
i18n_defines = ['INTERNATIONAL', 'FTGL_STATIC_LIBRARY', 'WITH_FREETYPE2']
2004-01-04 21:11:59 +00:00
elif sys.platform == 'darwin':
use_international = 'false'
use_gameengine = 'false'
use_openal = 'false'
use_fmod = 'false'
use_quicktime = 'true'
use_precomp = 'true'
use_sumo = 'false'
use_ode = 'false'
2004-01-04 21:11:59 +00:00
# TODO: replace darwin-6.8-powerpc with the actual directiory on the
# build machine
darwin_precomp = '#../lib/darwin-6.8-powerpc'
extra_flags = ['-pipe', '-fPIC', '-funsigned-char']
cxxflags = []
defines = ['_THREAD_SAFE']
if use_quicktime == 'true':
defines += ['WITH_QUICKTIME']
2004-01-04 21:11:59 +00:00
warn_flags = ['-Wall', '-W']
release_flags = []
debug_flags = ['-g']
window_system = 'CARBON'
# z library information
z_lib = ['z']
z_libpath = []
z_include = []
# png library information
png_lib = ['png']
png_libpath = []
png_include = []
# jpeg library information
jpeg_lib = ['jpeg']
jpeg_libpath = []
jpeg_include = []
# OpenGL library information
opengl_lib = ['GL', 'GLU']
opengl_libpath = []
opengl_include = []
2004-01-04 21:11:59 +00:00
# SDL specific stuff.
sdl_cenv.ParseConfig ('sdl-config --cflags')
sdl_lenv.ParseConfig ('sdl-config --libs')
2004-01-04 21:11:59 +00:00
sdl_cdict = sdl_cenv.Dictionary()
sdl_ldict = sdl_lenv.Dictionary()
sdl_cflags = string.join(sdl_cdict['CCFLAGS'])
# Want to use precompiled libraries?
if use_precomp == 'true':
sdl_ldict['LIBS'] = ['libSDL.a']
sdl_ldict['LIBPATH'] = [darwin_precomp + '/sdl/lib']
sdl_cdict['CPPPATH'] = [darwin_precomp + '/sdl/include']
platform_libs = ['stdc++']
2004-01-04 21:11:59 +00:00
extra_includes = ['/sw/include']
platform_libpath = ['/System/Library/Frameworks/OpenGL.framework/Libraries']
platform_linkflags = []
# SOLID library information
solid_lib = [] # TODO
solid_libpath = [] # TODO
solid_include = ['#extern/solid/include']
qhull_lib = [] # TODO
qhull_libpath = [] # TODO
qhull_include = ['#extern/qhull/include']
# ODE library information
ode_lib = [] # TODO
ode_libpath = [] # TODO
ode_include = ['#extern/ode/dist/include/ode']
2004-01-04 21:11:59 +00:00
# Python variables.
python_lib = ['python%d.%d' % sys.version_info[0:2]]
python_libpath = [sysconfig.get_python_lib (0, 1) + '/config']
python_include = [sysconfig.get_python_inc ()]
# International stuff
ftgl_lib = ['ftgl']
ftgl_libpath = [darwin_precomp + '/ftgl/lib']
ftgl_include = [darwin_precomp + '/ftgl/include']
freetype_lib = ['freetype']
freetype_libpath = [darwin_precomp + '/freetype/lib']
freetype_include = [darwin_precomp + '/freetype/include']
gettext_lib = []
gettext_libpath = []
gettext_include = []
i18n_defines = []
2004-01-04 21:11:59 +00:00
elif sys.platform == 'cygwin':
use_international = 'false'
use_gameengine = 'false'
use_openal = 'false'
use_fmod = 'false'
use_quicktime = 'false'
use_sumo = 'false'
use_ode = 'false'
2004-01-04 21:11:59 +00:00
release_flags = ['-O2']
debug_flags = ['-O2', '-g']
extra_flags = ['-pipe', '-mno-cygwin', '-mwindows', '-funsigned-char']
defines = ['FREE_WINDOWS', 'NDEBUG']
cxxflags = []
warn_flags = ['-Wall', '-Wno-char-subscripts']
platform_libs = ['png', 'jpeg', 'netapi32',
'opengl32', 'glu32', 'winmm',
'mingw32']
2004-01-04 21:11:59 +00:00
platform_libpath = ['/usr/lib/w32api', '/lib/w32api']
platform_linkflags = ['-mwindows', '-mno-cygwin', '-mconsole']
window_system = 'WIN32'
extra_includes = ['/usr/include']
# z library information
z_lib = ['z']
z_libpath = ['/usr/lib']
z_include = ['/usr/include']
2004-01-04 21:11:59 +00:00
# SDL specific stuff.
sdl_cenv.ParseConfig ('sdl-config --cflags')
sdl_lenv.ParseConfig ('sdl-config --libs')
sdl_cdict = sdl_cenv.Dictionary()
sdl_ldict = sdl_lenv.Dictionary()
sdl_cflags = '-DWIN32'
# We need to force the Cygwin environment to use the g++ linker.
link_env.Replace (CC='g++')
# Python variables.
python_include = sysconfig.get_python_inc ()
python_libpath = sysconfig.get_python_lib (0, 1) + '/config'
python_lib = 'python%d.%d' % sys.version_info[0:2]
# International stuff
ftgl_lib = ['ftgl']
ftgl_libpath = ['#../lib/windows/ftgl/lib']
ftgl_include = ['#../lib/windows/ftgl/include']
freetype_lib = ['freetype']
freetype_libpath = ['#../lib/windows/freetype/lib']
freetype_include = ['#../lib/windows/freetype/include']
gettext_lib = []
gettext_libpath = []
gettext_include = []
2004-01-04 21:11:59 +00:00
elif sys.platform == 'win32':
use_international = 'true'
use_gameengine = 'true'
2004-01-04 21:11:59 +00:00
use_openal = 'true'
use_fmod = 'false'
use_quicktime = 'true'
use_sumo = 'false'
use_ode = 'true'
2004-01-04 21:11:59 +00:00
release_flags = ['/G6', '/GF']
debug_flags = ['/Zi']
2004-01-04 21:11:59 +00:00
extra_flags = ['/EHsc', '/J', '/W3', '/Gd', '/MT']
cxxflags = []
defines = ['WIN32', '_CONSOLE']
defines += ['WITH_QUICKTIME']
defines += ['_LIB', 'USE_OPENAL']
2004-01-04 21:11:59 +00:00
warn_flags = []
platform_libs = [ 'qtmlClient', 'odelib', 'openal_static', 'soundsystem',
'ws2_32', 'dxguid', 'vfw32', 'winmm',
'iconv', 'kernel32', 'user32', 'gdi32',
2004-01-04 21:11:59 +00:00
'winspool', 'comdlg32', 'advapi32', 'shell32',
'ole32', 'oleaut32', 'uuid', 'odbc32', 'odbccp32',
'libcmt', 'libc']
platform_libpath = ['#../lib/windows/iconv/lib',
2004-01-04 21:11:59 +00:00
'#../lib/windows/QTDevWin/Libraries',
'#../lib/windows/openal/lib']
2004-01-04 21:11:59 +00:00
platform_linkflags = [
'/SUBSYSTEM:CONSOLE',
'/MACHINE:IX86',
'/ENTRY:mainCRTStartup',
'/INCREMENTAL:NO',
'/NODEFAULTLIB:"msvcprt.lib"',
'/NODEFAULTLIB:"glut32.lib"',
'/NODEFAULTLIB:"libcd.lib"',
#'/NODEFAULTLIB:"libc.lib"',
'/NODEFAULTLIB:"libcpd.lib"',
'/NODEFAULTLIB:"libcp.lib"',
'/NODEFAULTLIB:"libcmtd.lib"',
]
window_system = 'WIN32'
extra_includes = []
2004-01-04 21:11:59 +00:00
if use_quicktime == 'true':
extra_includes += ['#../lib/windows/QTDevWin/CIncludes']
if use_openal == 'true':
extra_includes += ['#../lib/windows/openal/include']
# z library information
z_lib = ['libz_st']
z_libpath = ['#../lib/windows/zlib/lib']
z_include = ['#../lib/windows/zlib/include']
# png library information
png_lib = ['libpng_st']
png_libpath = ['#../lib/windows/png/lib']
png_include = ['#../lib/windows/png/include']
# jpeg library information
jpeg_lib = ['libjpeg']
jpeg_libpath = ['#../lib/windows/jpeg/lib']
jpeg_include = ['#../lib/windows/jpeg/include']
# OpenGL library information
opengl_lib = ['opengl32', 'glu32']
opengl_libpath = []
opengl_include = ['/usr/include']
# SDL library information
sdl_include = ['#../lib/windows/sdl/include']
sdl_libpath = ['#../lib/windows/sdl/lib']
sdl_lib = ['SDL']
sdl_cflags = []
link_env.RES(['source/icons/winblender.rc'])
2004-01-04 21:11:59 +00:00
window_system = 'WIN32'
# SOLID library information
solid_lib = ['solid']
solid_libpath = ['#../lib/windows/solid/lib']
solid_include = ['#../lib/windows/solid/include']
qhull_lib = ['qhull']
qhull_libpath = ['#../lib/windows/qhull/lib']
qhull_include = ['#extern/qhull/include']
# ODE library information
ode_lib = [] # TODO
ode_libpath = ['#../lib/windows/ode/lib']
ode_include = ['#../lib/windows/ode/include']
2004-01-04 21:11:59 +00:00
# Python lib name
python_include = '#../lib/windows/python/include/python2.2'
2004-01-04 21:11:59 +00:00
python_libpath = '#../lib/windows/python/lib'
python_lib = 'python22'
# International stuff
ftgl_lib = ['ftgl_static_ST']
ftgl_libpath = ['#../lib/windows/ftgl/lib']
ftgl_include = ['#../lib/windows/ftgl/include']
freetype_lib = ['freetype2ST']
freetype_libpath = ['#../lib/windows/freetype/lib']
freetype_include = ['#../lib/windows/freetype/include']
gettext_lib = ['gnu_gettext']
gettext_libpath = ['#../lib/windows/gettext/lib']
gettext_include = ['#../lib/windows/gettext/include']
i18n_defines = ['INTERNATIONAL', 'FTGL_STATIC_LIBRARY', 'WITH_FREETYPE2']
2004-01-04 21:11:59 +00:00
elif string.find (sys.platform, 'sunos') != -1:
use_international = 'true'
use_gameengine = 'false'
use_openal = 'false'
use_fmod = 'false'
use_quicktime = 'false'
use_sumo = 'false'
use_ode = 'false'
release_flags = ['-O2']
debug_flags = ['-O2', '-g']
extra_flags = ['-pipe', '-fPIC', '-funsigned-char']
cxxflags = []
defines = []
env['ENV']['CC']='gcc'
env['ENV']['CXX']='g++'
warn_flags = ['-Wall', '-W']
window_system = 'X11'
platform_libs = ['m', 'util']
platform_libpath = []
platform_linkflags = []
extra_includes = []
# z library information
z_lib = ['z']
z_libpath = []
z_include = []
# png library information
png_lib = ['png']
png_libpath = []
png_include = []
# jpeg library information
jpeg_lib = ['jpeg']
jpeg_libpath = []
jpeg_include = []
# OpenGL library information
opengl_lib = ['GL', 'GLU']
opengl_libpath = []
opengl_include = []
# SDL library information
sdl_cenv.ParseConfig ('sdl-config --cflags')
sdl_lenv.ParseConfig ('sdl-config --libs')
sdl_cflags = sdl_cenv.Dictionary()['CCFLAGS']
sdl_include = sdl_cenv.Dictionary()['CPPPATH']
sdl_libpath = sdl_lenv.Dictionary()['LIBPATH']
sdl_lib = sdl_lenv.Dictionary()['LIBS']
# SOLID library information
solid_lib = [] # TODO
solid_libpath = [] # TODO
solid_include = ['#extern/solid/include']
qhull_lib = [] # TODO
qhull_libpath = [] # TODO
qhull_include = ['#extern/qhull/include']
# ODE library information
ode_lib = [] # TODO
ode_libpath = [] # TODO
ode_include = ['#extern/ode/dist/include/ode']
# Python variables.
python_lib = ['python%d.%d' % sys.version_info[0:2]]
python_libpath = [sysconfig.get_python_lib (0, 1) + '/config']
python_include = [sysconfig.get_python_inc ()]
# International support information
ftgl_lib = ['ftgl']
ftgl_libpath = ['#../lib/solaris-2.8-sparc/ftgl/lib']
ftgl_include = ['#../lib/solaris-2.8-sparc/ftgl/include']
freetype_lib = ['freetype']
freetype_libpath = ['#../lib/solaris-2.8-sparc/freetype/lib']
freetype_include = ['#../lib/solaris-2.8-sparc/freetype/include']
gettext_lib = []
gettext_libpath = []
gettext_include = []
i18n_defines = ['INTERNATIONAL', 'FTGL_STATIC_LIBRARY', 'WITH_FREETYPE2']
2004-01-04 21:11:59 +00:00
elif string.find (sys.platform, 'irix') != -1:
use_international = 'false'
use_gameengine = 'false'
use_openal = 'false'
use_fmod = 'false'
use_quicktime = 'false'
use_sumo = 'false'
use_ode = 'false'
2004-01-04 21:11:59 +00:00
irix_precomp = '#../lib/irix-6.5-mips'
extra_flags = ['-n32', '-mips3', '-Xcpluscomm']
cxxflags = ['-n32', '-mips3', '-Xcpluscomm', '-LANG:std']
cxxflags += ['-LANG:libc_in_namespace_std=off']
window_system = 'X11'
release_flags = ['-O2', '-OPT:Olimit=0']
debug_flags = ['-O2', '-g']
defines = []
warn_flags = ['-fullwarn', '-woff', '1001,1110,1201,1209,1355,1424,1681,3201']
platform_libs = ['movieGL', 'Xmu', 'Xext', 'X11',
2004-01-04 21:11:59 +00:00
'c', 'm', 'dmedia', 'cl', 'audio',
'Cio', 'pthread']
platform_libpath = ['/usr/lib32/mips3',
'/lib/freeware/lib32',
'/usr/lib32']
platform_linkflags = ['-mips3', '-n32']
extra_includes = ['/usr/freeware/include',
2004-01-04 21:11:59 +00:00
'/usr/include']
# z library information
z_lib = ['z']
z_libpath = []
z_include = []
# png library information
png_lib = ['png']
png_libpath = [irix_precomp + '/png/lib']
png_include = [irix_precomp + '/png/include']
# jpeg library information
jpeg_lib = ['jpeg']
jpeg_libpath = [irix_precomp + '/jpeg/lib']
jpeg_include = [irix_precomp + '/jpeg/include']
# OpenGL library information
opengl_lib = ['GL', 'GLU']
opengl_libpath = []
opengl_include = []
# SDL library information
sdl_cflags = []
sdl_include = [irix_precomp + '/sdl/include/SDL']
sdl_libpath = [irix_precomp + '/sdl/lib']
sdl_lib = ['SDL', 'libSDL.a']
# SOLID library information
solid_lib = [] # TODO
solid_libpath = [] # TODO
solid_include = [irix_precomp + '/solid/include']
qhull_lib = [] # TODO
qhull_libpath = [] # TODO
qhull_include = ['#extern/qhull/include']
# ODE library information
ode_lib = [] # TODO
ode_libpath = [] # TODO
ode_include = [irix_precomp + '/ode/include']
# Python library information
python_libpath = [irix_precomp + '/python/lib/python2.2/config']
python_include = [irix_precomp + '/python/include/python2.2']
python_lib = ['python2.2']
# International support information
ftgl_lib = ['ftgl']
ftgl_libpath = [irix_precomp + '/ftgl/lib']
ftgl_include = [irix_precomp + '/ftgl/include']
freetype_lib = ['freetype']
freetype_libpath = [irix_precomp + '/freetype/lib']
freetype_include = [irix_precomp + '/freetype/include']
gettext_lib = []
gettext_libpath = []
gettext_include = []
i18n_defines = ['INTERNATIONAL', 'FTGL_STATIC_LIBRARY', 'WITH_FREETYPE2']
2004-01-04 21:11:59 +00:00
elif string.find (sys.platform, 'hp-ux') != -1:
window_system = 'X11'
defines = []
2004-01-04 21:11:59 +00:00
else:
print "Unknown platform"
#-----------------------------------------------------------------------------
# End of platform specific section
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# User configurable options to be saved in a config file.
#-----------------------------------------------------------------------------
# Checking for an existing config file - use that one if it exists,
# otherwise create one.
if os.path.exists (config_file):
print "Using config file: " + config_file
else:
print "Creating new config file: " + config_file
config=open (config_file, 'w')
config.write ("# Configuration file containing user definable options.\n")
config.write ("VERSION = '2.32-cvs'\n")
config.write ("BUILD_BINARY = 'release'\n")
config.write ("BUILD_DIR = '%s'\n"%(root_build_dir))
config.write ("USE_INTERNATIONAL = '%s'\n"%(use_international))
config.write ("BUILD_GAMEENGINE = '%s'\n"%(use_gameengine))
if use_sumo == 'true':
config.write ("USE_PHYSICS = 'solid'\n")
else:
config.write ("USE_PHYSICS = 'ode'\n")
config.write ("USE_OPENAL = '%s'\n"%(use_openal))
config.write ("USE_FMOD = '%s'\n"%(use_fmod))
config.write ("USE_QUICKTIME = '%s'\n"%(use_quicktime))
config.write ("\n# External library information.\n")
config.write ("PYTHON_INCLUDE = %s\n"%(python_include))
config.write ("PYTHON_LIBPATH = %s\n"%(python_libpath))
config.write ("PYTHON_LIBRARY = %s\n"%(python_lib))
config.write ("SDL_CFLAGS = %s\n"%(sdl_cflags))
config.write ("SDL_INCLUDE = %s\n"%(sdl_include))
config.write ("SDL_LIBPATH = %s\n"%(sdl_libpath))
config.write ("SDL_LIBRARY = %s\n"%(sdl_lib))
config.write ("Z_INCLUDE = %s\n"%(z_include))
config.write ("Z_LIBPATH = %s\n"%(z_libpath))
config.write ("Z_LIBRARY = %s\n"%(z_lib))
config.write ("PNG_INCLUDE = %s\n"%(png_include))
config.write ("PNG_LIBPATH = %s\n"%(png_libpath))
config.write ("PNG_LIBRARY = %s\n"%(png_lib))
config.write ("JPEG_INCLUDE = %s\n"%(jpeg_include))
config.write ("JPEG_LIBPATH = %s\n"%(jpeg_libpath))
config.write ("JPEG_LIBRARY = %s\n"%(jpeg_lib))
config.write ("OPENGL_INCLUDE = %s\n"%(opengl_include))
config.write ("OPENGL_LIBPATH = %s\n"%(opengl_libpath))
config.write ("OPENGL_LIBRARY = %s\n"%(opengl_lib))
config.write ("\n# The following information is only necessary when you've enabled support for\n")
config.write ("# the game engine.\n")
config.write ("SOLID_INCLUDE = %s\n"%(solid_include))
config.write ("SOLID_LIBPATH = %s\n"%(solid_libpath))
config.write ("SOLID_LIBRARY = %s\n"%(solid_lib))
config.write ("QHULL_INCLUDE = %s\n"%(qhull_include))
config.write ("QHULL_LIBPATH = %s\n"%(qhull_libpath))
config.write ("QHULL_LIBRARY = %s\n"%(qhull_lib))
config.write ("ODE_INCLUDE = %s\n"%(ode_include))
config.write ("ODE_LIBPATH = %s\n"%(ode_libpath))
config.write ("ODE_LIBRARY = %s\n"%(ode_lib))
config.write ("\n# The following information is only necessary when building with\n")
config.write ("# internationalization support.\n");
config.write ("I18N_DEFINES = %s\n"%(i18n_defines))
config.write ("FTGL_INCLUDE = %s\n"%(ftgl_include))
config.write ("FTGL_LIBPATH = %s\n"%(ftgl_libpath))
config.write ("FTGL_LIBRARY = %s\n"%(ftgl_lib))
config.write ("FREETYPE_INCLUDE = %s\n"%(freetype_include))
config.write ("FREETYPE_LIBPATH = %s\n"%(freetype_libpath))
config.write ("FREETYPE_LIBRARY = %s\n"%(freetype_lib))
config.write ("GETTEXT_INCLUDE = %s\n"%(gettext_include))
config.write ("GETTEXT_LIBPATH = %s\n"%(gettext_libpath))
config.write ("GETTEXT_LIBRARY = %s\n"%(gettext_lib))
config.close ()
#-----------------------------------------------------------------------------
# Read the options from the config file and update the various necessary flags
#-----------------------------------------------------------------------------
list_opts = []
user_options_env = Environment ()
user_options = Options (config_file)
user_options.AddOptions (
('VERSION', 'Blender version', version),
('BUILD_DIR', 'Target directory for intermediate files.',
root_build_dir),
(BoolOption ('USE_INTERNATIONAL',
'Set to 1 to have international support.',
'false')),
(EnumOption ('USE_PHYSICS', 'solid',
'Select which physics engine to use.',
allowed_values = ('ode', 'solid'))),
(BoolOption ('BUILD_GAMEENGINE',
'Set to 1 to build blender with game engine support.',
'false')),
(BoolOption ('USE_OPENAL',
'Set to 1 to build the game engine with OpenAL support.',
'false')),
(BoolOption ('USE_FMOD',
'Set to 1 to build the game engine with FMod support.',
'false')),
(BoolOption ('USE_QUICKTIME',
'Set to 1 to add support for QuickTime.',
'false')),
(EnumOption ('BUILD_BINARY', 'release',
'Select a release or debug binary.',
allowed_values = ('release', 'debug'))),
('PYTHON_INCLUDE', 'Include directory for Python header files.'),
('PYTHON_LIBPATH', 'Library path where the Python lib is located.'),
('PYTHON_LIBRARY', 'Python library name.'),
('SDL_CFLAGS', 'Necessary CFLAGS when using sdl functionality.'),
('SDL_INCLUDE', 'Include directory for SDL header files.'),
('SDL_LIBPATH', 'Library path where the SDL library is located.'),
('SDL_LIBRARY', 'SDL library name.'),
('Z_INCLUDE', 'Include directory for zlib header files.'),
('Z_LIBPATH', 'Library path where the zlib library is located.'),
('Z_LIBRARY', 'Z library name.'),
('PNG_INCLUDE', 'Include directory for png header files.'),
('PNG_LIBPATH', 'Library path where the png library is located.'),
('PNG_LIBRARY', 'png library name.'),
('JPEG_INCLUDE', 'Include directory for jpeg header files.'),
('JPEG_LIBPATH', 'Library path where the jpeg library is located.'),
('JPEG_LIBRARY', 'jpeg library name.'),
('OPENGL_INCLUDE', 'Include directory for OpenGL header files.'),
('OPENGL_LIBPATH', 'Library path where the OpenGL libraries are located.'),
('OPENGL_LIBRARY', 'OpenGL library names.'),
('SOLID_INCLUDE', 'Include directory for SOLID header files.'),
('SOLID_LIBPATH', 'Library path where the SOLID library is located.'),
('SOLID_LIBRARY', 'SOLID library name.'),
('QHULL_INCLUDE', 'Include directory for QHULL header files.'),
('QHULL_LIBPATH', 'Library path where the QHULL library is located.'),
('QHULL_LIBRARY', 'QHULL library name.'),
('ODE_INCLUDE', 'Include directory for ODE header files.'),
('ODE_LIBPATH', 'Library path where the ODE library is located.'),
('ODE_LIBRARY', 'ODE library name.'),
('I18N_DEFINES', 'Preprocessor defines needed for internationalization support.'),
('FTGL_INCLUDE', 'Include directory for ftgl header files.'),
('FTGL_LIBPATH', 'Library path where the ftgl library is located.'),
('FTGL_LIBRARY', 'ftgl library name.'),
('FREETYPE_INCLUDE', 'Include directory for freetype2 header files.'),
('FREETYPE_LIBPATH', 'Library path where the freetype2 library is located.'),
('FREETYPE_LIBRARY', 'Freetype2 library name.'),
('GETTEXT_INCLUDE', 'Include directory for gettext header files.'),
('GETTEXT_LIBPATH', 'Library path where the gettext library is located.'),
('GETTEXT_LIBRARY', 'gettext library name.')
)
user_options.Update (user_options_env)
user_options_dict = user_options_env.Dictionary()
root_build_dir = user_options_dict['BUILD_DIR']
if user_options_dict['BUILD_GAMEENGINE'] == 1:
defines += ['GAMEBLENDER=1']
if user_options_dict['USE_PHYSICS'] == 'ode':
defines += ['USE_ODE']
else:
defines += ['USE_SUMO_SOLID']
else:
defines += ['GAMEBLENDER=0']
if user_options_dict['BUILD_BINARY'] == 'release':
cflags = extra_flags + release_flags + warn_flags
if sys.platform == 'win32':
defines += ['NDEBUG']
else:
cflags = extra_flags + debug_flags + warn_flags
if sys.platform == 'win32':
#defines += ['_DEBUG'] specifying this makes msvc want to link to python22_d.lib??
platform_linkflags += ['/DEBUG','/PDB:blender.pdb']
if user_options_dict['USE_INTERNATIONAL']:
defines += user_options_dict['I18N_DEFINES']
#-----------------------------------------------------------------------------
# Settings to be exported to other SConscript files
#-----------------------------------------------------------------------------
2004-01-04 21:11:59 +00:00
Export ('cflags')
Export ('defines')
Export ('cxxflags')
Export ('window_system')
Export ('extra_includes')
Export ('platform_libs')
Export ('platform_libpath')
Export ('platform_linkflags')
Export ('user_options_dict')
2004-01-04 21:11:59 +00:00
BuildDir (root_build_dir+'/intern', 'intern', duplicate=0)
SConscript (root_build_dir+'intern/SConscript')
BuildDir (root_build_dir+'/source', 'source', duplicate=0)
SConscript (root_build_dir+'source/SConscript')
2004-01-04 21:11:59 +00:00
libpath = (['#'+root_build_dir+'/lib'])
2004-01-04 21:11:59 +00:00
libraries = (['blender_render',
'blender_yafray',
2004-01-04 21:11:59 +00:00
'blender_blendersrc',
'blender_renderconverter',
'blender_blenloader',
'blender_writestreamglue',
'blender_deflate',
'blender_writeblenfile',
'blender_readblenfile',
'blender_readstreamglue',
'blender_inflate',
'blender_img',
'blender_radiosity',
'blender_blenkernel',
'blender_blenpluginapi',
'blender_imbuf',
'blender_avi',
'blender_blenlib',
'blender_python',
'blender_makesdna',
'blender_kernel',
'blender_BSP',
'blender_LOD',
'blender_GHOST',
'blender_STR',
'blender_guardedalloc',
'blender_BMF',
'blender_CTR',
'blender_MEM',
'blender_IK',
'blender_MT',
'soundsystem'])
link_env.Append (LIBS=libraries)
link_env.Append (LIBPATH=libpath)
link_env.Append (CPPDEFINES=defines)
2004-01-04 21:11:59 +00:00
if user_options_dict['USE_INTERNATIONAL'] == 1:
2004-01-04 21:11:59 +00:00
link_env.Append (LIBS=['blender_FTF'])
link_env.Append (LIBS=user_options_dict['FTGL_LIBRARY'])
link_env.Append (LIBPATH=user_options_dict['FTGL_LIBPATH'])
link_env.Append (LIBS=user_options_dict['FREETYPE_LIBRARY'])
link_env.Append (LIBPATH=user_options_dict['FREETYPE_LIBPATH'])
if user_options_dict['USE_QUICKTIME'] == 1:
2004-01-04 21:11:59 +00:00
link_env.Append (LIBS=['blender_quicktime'])
if user_options_dict['BUILD_GAMEENGINE'] == 1:
link_env.Append (LIBS=['blender_expressions',
'KX_blenderhook',
'KX_converter',
'KX_ketsji',
'KX_network',
'NG_loopbacknetwork',
'NG_network',
'PHY_Physics',
'PHY_Dummy',
'SCA_GameLogic',
'RAS_rasterizer',
'RAS_OpenGLRasterizer',
'SG_SceneGraph'])
if user_options_dict['USE_PHYSICS'] == 'solid':
link_env.Append (LIBS=['PHY_Sumo'])
link_env.Append (LIBS=user_options_dict['SOLID_LIBRARY'])
link_env.Append (LIBPATH=user_options_dict['SOLID_LIBPATH'])
link_env.Append (LIBS=user_options_dict['QHULL_LIBRARY'])
link_env.Append (LIBPATH=user_options_dict['QHULL_LIBPATH'])
else:
link_env.Append (LIBS=['PHY_Ode'])
link_env.Append (LIBS=user_options_dict['ODE_LIBRARY'])
link_env.Append (LIBPATH=user_options_dict['ODE_LIBPATH'])
link_env.Append (LIBS=user_options_dict['PYTHON_LIBRARY'])
link_env.Append (LIBPATH=user_options_dict['PYTHON_LIBPATH'])
link_env.Append (LIBS=user_options_dict['SDL_LIBRARY'])
link_env.Append (LIBPATH=user_options_dict['SDL_LIBPATH'])
link_env.Append (LIBS=user_options_dict['PNG_LIBRARY'])
link_env.Append (LIBPATH=user_options_dict['PNG_LIBPATH'])
link_env.Append (LIBS=user_options_dict['JPEG_LIBRARY'])
link_env.Append (LIBPATH=user_options_dict['JPEG_LIBPATH'])
link_env.Append (LIBS=user_options_dict['OPENGL_LIBRARY'])
link_env.Append (LIBPATH=user_options_dict['OPENGL_LIBPATH'])
link_env.Append (LIBS=user_options_dict['GETTEXT_LIBRARY'])
link_env.Append (LIBPATH=user_options_dict['GETTEXT_LIBPATH'])
link_env.Append (LIBS=user_options_dict['Z_LIBRARY'])
link_env.Append (LIBPATH=user_options_dict['Z_LIBPATH'])
2004-01-04 21:11:59 +00:00
link_env.Append (LIBS=platform_libs)
link_env.Append (LIBPATH=platform_libpath)
if sys.platform == 'darwin':
link_env.Append (LINKFLAGS=' -framework Carbon')
link_env.Append (LINKFLAGS=' -framework AGL')
if user_options_dict['USE_QUICKTIME'] == 1:
2004-01-04 21:11:59 +00:00
link_env.Append (LINKFLAGS=' -framework QuickTime')
else:
link_env.Append (LINKFLAGS=platform_linkflags)
source_files = [root_build_dir+'source/creator/buildinfo.c',
root_build_dir+'source/creator/creator.c']
2004-01-04 21:11:59 +00:00
if sys.platform == 'win32':
source_files += ['source/icons/winblender.res']
2004-01-04 21:11:59 +00:00
include_paths = ['#/intern/guardedalloc',
'#/source/blender/makesdna',
'#/source/blender/blenkernel',
'#/source/blender/blenloader',
'#/source/blender/python',
'#/source/blender/blenlib',
'#/source/blender/renderconverter',
'#/source/blender/render/extern/include',
'#/source/kernel/gen_messaging',
'#/source/kernel/gen_system',
'#/source/blender/include',
'#/source/blender/imbuf']
link_env.BuildDir (root_build_dir, '.', duplicate=0)
2004-01-04 21:11:59 +00:00
link_env.Append (CPPPATH=include_paths)
link_env.Program (target='blender', source=source_files, CCFLAGS=cflags)
if sys.platform == 'darwin':
bundle = Environment ()
blender_app = 'blender'
bundle.Depends ('#/blender.app/Contents/MacOS/' + blender_app, blender_app)
bundle.Command ('#/blender.app/Contents/Info.plist',
'#/source/darwin/blender.app/Contents/Info.plist',
"rm -rf blender.app && " + \
"cp -R source/darwin/blender.app . && " +
2004-01-04 21:11:59 +00:00
"cat $SOURCE | sed s/VERSION/`cat release/VERSION`/ | \
sed s/DATE/`date +'%Y-%b-%d'`/ \
> $TARGET")
bundle.Command ('blender.app/Contents/MacOS/' + blender_app, blender_app,
'cp $SOURCE $TARGET && ' + \
'chmod +x $TARGET && ' + \
'find $SOURCE -name CVS -prune -exec rm -rf {} \; && ' +
2004-01-04 21:11:59 +00:00
'find $SOURCE -name .DS_Store -exec rm -rf {} \;')