2cc629eaa7
* Internationalization support is now available on Linux. By default this feature is disabled. The reason is that you need to have a precompiled version of the ftgl library for your gcc version. To enable ftgl support you need to do the following: - compile ftgl. - set USE_INTERNATIONAL='true' in the config.opts file - set the FTGL_INCLUDE and FTGL_LIBPATH to valid locations. Freetype2 is detected automatically on your system by using pkg-config. There was a problem with linking libraries. I took a look at how the Makefile environment did it, and copied the mechanism. Now we're linking: freetype, blender_ftf, ftgl and freetype. (Yes, 2x freetype). * Minor variable cleanup. sdl flags are now collected in one Environment() in stead of two. Adapted all relevant platform variables accordingly.
783 lines
32 KiB
Python
783 lines
32 KiB
Python
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'
|
|
|
|
sdl_env = Environment ()
|
|
freetype_env = Environment ()
|
|
link_env = Environment ()
|
|
env = Environment ()
|
|
|
|
if sys.platform == 'linux2':
|
|
use_international = 'false'
|
|
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 = []
|
|
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 = ['/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
|
|
sdl_env.ParseConfig ('sdl-config --cflags --libs')
|
|
sdl_cflags = sdl_env.Dictionary()['CCFLAGS']
|
|
sdl_include = sdl_env.Dictionary()['CPPPATH']
|
|
sdl_libpath = sdl_env.Dictionary()['LIBPATH']
|
|
sdl_lib = sdl_env.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_env.ParseConfig ('pkg-config --cflags --libs freetype2')
|
|
freetype_lib = freetype_env.Dictionary()['LIBS']
|
|
freetype_libpath = freetype_env.Dictionary()['LIBPATH']
|
|
freetype_include = freetype_env.Dictionary()['CPPPATH']
|
|
gettext_lib = []
|
|
gettext_libpath = []
|
|
gettext_include = []
|
|
i18n_defines = ['INTERNATIONAL', 'FTGL_STATIC_LIBRARY', 'WITH_FREETYPE2']
|
|
|
|
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'
|
|
# 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']
|
|
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 = []
|
|
# SDL specific stuff.
|
|
sdl_env.ParseConfig ('sdl-config --cflags --libs')
|
|
sdl_cflags = sdl_env.Dictionary()['CCFLAGS']
|
|
# Want to use precompiled libraries?
|
|
if use_precomp == 'true':
|
|
sdl_include = [darwin_precomp + '/sdl/include']
|
|
sdl_libpath = [darwin_precomp + '/sdl/lib']
|
|
sdl_lib = ['libSDL.a']
|
|
|
|
platform_libs = ['stdc++']
|
|
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']
|
|
# 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 = []
|
|
|
|
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'
|
|
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']
|
|
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']
|
|
# SDL specific stuff.
|
|
sdl_env.ParseConfig ('sdl-config --cflags --libs')
|
|
sdl_cflags = sdl_env.Dictionary()['CCFLAGS']
|
|
sdl_include = sdl_env.Dictionary()['CPPPATH']
|
|
sdl_libpath = sdl_env.Dictionary()['LIBPATH']
|
|
sdl_lib = sdl_env.Dictionary()['LIBS']
|
|
#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 = []
|
|
|
|
elif sys.platform == 'win32':
|
|
use_international = 'true'
|
|
use_gameengine = 'true'
|
|
use_openal = 'true'
|
|
use_fmod = 'false'
|
|
use_quicktime = 'true'
|
|
use_sumo = 'false'
|
|
use_ode = 'true'
|
|
release_flags = ['/G6', '/GF']
|
|
debug_flags = ['/Zi']
|
|
extra_flags = ['/EHsc', '/J', '/W3', '/Gd', '/MT']
|
|
cxxflags = []
|
|
defines = ['WIN32', '_CONSOLE']
|
|
defines += ['WITH_QUICKTIME']
|
|
defines += ['_LIB', 'USE_OPENAL']
|
|
warn_flags = []
|
|
platform_libs = [ 'qtmlClient', 'odelib', 'openal_static', 'soundsystem',
|
|
'ws2_32', 'dxguid', 'vfw32', 'winmm',
|
|
'iconv', 'kernel32', 'user32', 'gdi32',
|
|
'winspool', 'comdlg32', 'advapi32', 'shell32',
|
|
'ole32', 'oleaut32', 'uuid', 'odbc32', 'odbccp32',
|
|
'libcmt', 'libc']
|
|
platform_libpath = ['#../lib/windows/iconv/lib',
|
|
'#../lib/windows/QTDevWin/Libraries',
|
|
'#../lib/windows/openal/lib']
|
|
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 = []
|
|
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'])
|
|
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']
|
|
# Python lib name
|
|
python_include = '#../lib/windows/python/include/python2.2'
|
|
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']
|
|
|
|
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_env.ParseConfig ('sdl-config --cflags --libs')
|
|
sdl_cflags = sdl_env.Dictionary()['CCFLAGS']
|
|
sdl_include = sdl_env.Dictionary()['CPPPATH']
|
|
sdl_libpath = sdl_env.Dictionary()['LIBPATH']
|
|
sdl_lib = sdl_env.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']
|
|
|
|
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'
|
|
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',
|
|
'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',
|
|
'/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']
|
|
|
|
elif string.find (sys.platform, 'hp-ux') != -1:
|
|
window_system = 'X11'
|
|
defines = []
|
|
|
|
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
|
|
#-----------------------------------------------------------------------------
|
|
|
|
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')
|
|
|
|
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')
|
|
|
|
libpath = (['#'+root_build_dir+'/lib'])
|
|
|
|
libraries = (['blender_render',
|
|
'blender_yafray',
|
|
'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)
|
|
|
|
if user_options_dict['USE_INTERNATIONAL'] == 1:
|
|
link_env.Append (LIBS=user_options_dict['FREETYPE_LIBRARY'])
|
|
link_env.Append (LIBPATH=user_options_dict['FREETYPE_LIBPATH'])
|
|
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'])
|
|
if user_options_dict['USE_QUICKTIME'] == 1:
|
|
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'])
|
|
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:
|
|
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']
|
|
|
|
if sys.platform == 'win32':
|
|
source_files += ['source/icons/winblender.res']
|
|
|
|
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)
|
|
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 . && " +
|
|
"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 {} \; && ' +
|
|
'find $SOURCE -name .DS_Store -exec rm -rf {} \;')
|