From 8023fb42828fe6d1b69413d5a31aec3a9f3e4201 Mon Sep 17 00:00:00 2001 From: Michel Selten Date: Tue, 24 Feb 2004 20:03:27 +0000 Subject: SCons updates * Added the options to build (configurable via config.opts): - blender dynamic (default enabled), - blender static (default disabled). Not working because of a linking order problem. The /usr/lib/libGL.a and /usr/lib/libGLU.a flags need to be appended at the end of the link command, not directly after the linker. Mailed the SCons mail list for a possible solution. - blender player (default disabled). Not implemented yet anyway. - blender plugin (default disabled). Not implemented yet anyway. * Added the following variables to the config.opts: - OPENGL_STATIC. This flag is only needed when building blender static. - USE_BUILDINFO (true/false). Display build information in the splash screen. When enabled, it will always rebuild source/creator/buildinfo.c, so for compilation speed reasons, it is not adviced to enable this all the time. I had to make some adjustments specifically for the windows build (winblender.res) file. This file is only compiled when building the dynamic blender. I hope this is correct. --- SConstruct | 124 +++++++++++++++++++++++++++++++++--------- source/SConscript | 3 +- source/blender/src/SConscript | 3 + source/creator/SConscript | 29 ++++++++++ 4 files changed, 132 insertions(+), 27 deletions(-) create mode 100644 source/creator/SConscript diff --git a/SConstruct b/SConstruct index 69cce45cbeb..15cc4de9f85 100644 --- a/SConstruct +++ b/SConstruct @@ -1,5 +1,6 @@ import string import os +import time import sys from distutils import sysconfig @@ -23,6 +24,11 @@ if sys.platform == 'linux2': use_quicktime = 'false' use_sumo = 'false' use_ode = 'false' + use_buildinfo = 'false' + build_blender_dynamic = 'true' + build_blender_static = 'false' + build_blender_player = 'false' + build_blender_plugin = 'false' release_flags = ['-O2'] debug_flags = ['-O2', '-g'] extra_flags = ['-pipe', '-fPIC', '-funsigned-char'] @@ -48,6 +54,7 @@ if sys.platform == 'linux2': jpeg_include = ['/usr/include'] # OpenGL library information opengl_lib = ['GL', 'GLU'] + opengl_static = ['/usr/lib/libGL.a', '/usr/lib/libGLU.a'] opengl_libpath = ['/usr/lib', '/usr/X11R6/lib'] opengl_include = ['/usr/include'] # SDL library information @@ -96,6 +103,11 @@ elif sys.platform == 'darwin': use_precomp = 'true' use_sumo = 'false' use_ode = 'false' + use_buildinfo = 'false' + build_blender_dynamic = 'true' + build_blender_static = 'false' + build_blender_player = 'false' + build_blender_plugin = 'false' # TODO: replace darwin-6.8-powerpc with the actual directiory on the # build machine darwin_precomp = '#../lib/darwin-6.8-powerpc' @@ -122,6 +134,7 @@ elif sys.platform == 'darwin': jpeg_include = [] # OpenGL library information opengl_lib = ['GL', 'GLU'] + opengl_static = [] opengl_libpath = [] opengl_include = [] # SDL specific stuff. @@ -175,6 +188,11 @@ elif sys.platform == 'cygwin': use_quicktime = 'false' use_sumo = 'false' use_ode = 'false' + use_buildinfo = 'false' + build_blender_dynamic = 'true' + build_blender_static = 'false' + build_blender_player = 'false' + build_blender_plugin = 'false' release_flags = ['-O2'] debug_flags = ['-O2', '-g'] extra_flags = ['-pipe', '-mno-cygwin', '-mwindows', '-funsigned-char'] @@ -228,6 +246,11 @@ elif sys.platform == 'win32': use_quicktime = 'true' use_sumo = 'false' use_ode = 'true' + use_buildinfo = 'false' + build_blender_dynamic = 'true' + build_blender_static = 'false' + build_blender_player = 'false' + build_blender_plugin = 'false' release_flags = ['/G6', '/GF'] debug_flags = ['/Zi'] extra_flags = ['/EHsc', '/J', '/W3', '/Gd', '/MT'] @@ -275,6 +298,7 @@ elif sys.platform == 'win32': jpeg_include = ['#../lib/windows/jpeg/include'] # OpenGL library information opengl_lib = ['opengl32', 'glu32'] + opengl_static = [] opengl_libpath = [] opengl_include = ['/usr/include'] # SDL library information @@ -322,6 +346,11 @@ elif string.find (sys.platform, 'sunos') != -1: use_quicktime = 'false' use_sumo = 'false' use_ode = 'false' + use_buildinfo = 'false' + build_blender_dynamic = 'true' + build_blender_static = 'false' + build_blender_player = 'false' + build_blender_plugin = 'false' release_flags = ['-O2'] debug_flags = ['-O2', '-g'] extra_flags = ['-pipe', '-fPIC', '-funsigned-char'] @@ -349,6 +378,7 @@ elif string.find (sys.platform, 'sunos') != -1: jpeg_include = [] # OpenGL library information opengl_lib = ['GL', 'GLU'] + opengl_static = [] opengl_libpath = [] opengl_include = [] # SDL library information @@ -395,6 +425,11 @@ elif string.find (sys.platform, 'irix') != -1: use_quicktime = 'false' use_sumo = 'false' use_ode = 'false' + use_buildinfo = 'false' + build_blender_dynamic = 'true' + build_blender_static = 'false' + build_blender_player = 'false' + build_blender_plugin = 'false' irix_precomp = '#../lib/irix-6.5-mips' extra_flags = ['-n32', '-mips3', '-Xcpluscomm'] cxxflags = ['-n32', '-mips3', '-Xcpluscomm', '-LANG:std'] @@ -428,6 +463,7 @@ elif string.find (sys.platform, 'irix') != -1: jpeg_include = [irix_precomp + '/jpeg/include'] # OpenGL library information opengl_lib = ['GL', 'GLU'] + opengl_static = [] opengl_libpath = [] opengl_include = [] # SDL library information @@ -489,6 +525,11 @@ else: config.write ("# Configuration file containing user definable options.\n") config.write ("VERSION = '2.32-cvs'\n") config.write ("BUILD_BINARY = 'release'\n") + config.write ("USE_BUILDINFO = '%s'\n"%(use_buildinfo)) + config.write ("BUILD_BLENDER_DYNAMIC = '%s'\n"%(build_blender_dynamic)) + config.write ("BUILD_BLENDER_STATIC = '%s'\n"%(build_blender_static)) + config.write ("BUILD_BLENDER_PLAYER = '%s'\n"%(build_blender_player)) + config.write ("BUILD_BLENDER_PLUGIN = '%s'\n"%(build_blender_plugin)) 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)) @@ -519,6 +560,7 @@ else: 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 ("OPENGL_STATIC = %s\n"%(opengl_static)) 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)) @@ -554,6 +596,24 @@ user_options_env = Environment () user_options = Options (config_file) user_options.AddOptions ( ('VERSION', 'Blender version', version), + (EnumOption ('BUILD_BINARY', 'release', + 'Select a release or debug binary.', + allowed_values = ('release', 'debug'))), + (BoolOption ('USE_BUILDINFO', + 'Set to 1 if you want to add build information.', + 'false')), + (BoolOption ('BUILD_BLENDER_DYNAMIC', + 'Set to 1 if you want to build blender with hardware accellerated OpenGL support.', + 'true')), + (BoolOption ('BUILD_BLENDER_STATIC', + 'Set to 1 if you want to build blender with software OpenGL support.', + 'false')), + (BoolOption ('BUILD_BLENDER_PLAYER', + 'Set to 1 if you want to build the blender player.', + 'false')), + (BoolOption ('BUILD_BLENDER_PLUGIN', + 'Set to 1 if you want to build the blender plugin.', + 'false')), ('BUILD_DIR', 'Target directory for intermediate files.', root_build_dir), (BoolOption ('USE_INTERNATIONAL', @@ -574,9 +634,6 @@ user_options.AddOptions ( (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.'), @@ -596,6 +653,7 @@ user_options.AddOptions ( ('OPENGL_INCLUDE', 'Include directory for OpenGL header files.'), ('OPENGL_LIBPATH', 'Library path where the OpenGL libraries are located.'), ('OPENGL_LIBRARY', 'OpenGL library names.'), + ('OPENGL_STATIC', 'Linker flags for static linking of Open GL.'), ('SOLID_INCLUDE', 'Include directory for SOLID header files.'), ('SOLID_LIBPATH', 'Library path where the SOLID library is located.'), ('SOLID_LIBRARY', 'SOLID library name.'), @@ -663,7 +721,8 @@ SConscript (root_build_dir+'source/SConscript') libpath = (['#'+root_build_dir+'/lib']) -libraries = (['blender_render', +libraries = (['blender_creator', + 'blender_render', 'blender_yafray', 'blender_blendersrc', 'blender_renderconverter', @@ -746,8 +805,6 @@ 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']) @@ -765,28 +822,43 @@ if sys.platform == 'darwin': 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'] +link_env.BuildDir (root_build_dir, '.', duplicate=0) -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'] +build_date = time.strftime ("%Y-%m-%d") +build_time = time.strftime ("%H:%M:%S") -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 user_options_dict['BUILD_BLENDER_DYNAMIC'] == 1: + dy_blender = link_env.Copy () + dy_blender.Append (LIBS=user_options_dict['OPENGL_LIBRARY']) + dy_blender.Append (LIBPATH=user_options_dict['OPENGL_LIBPATH']) + if user_options_dict['USE_BUILDINFO'] == 1: + dy_blender.Append (CPPDEFINES = ['BUILD_TIME=\'"%s"\''%(build_time), + 'BUILD_DATE=\'"%s"\''%(build_date), + 'BUILD_TYPE=\'"dynamic"\'', + 'NAN_BUILDINFO', + 'BUILD_PLATFORM=\'"%s"\''%(sys.platform)]) + dy_blender.Append (CCFLAGS=cflags) + d_obj = [dy_blender.Object (root_build_dir+'source/creator/d_buildinfo', + [root_build_dir+'source/creator/buildinfo.c'])] + if sys.platform == 'win32': + dy_blender.Program (target='blender', + source=d_obj + ['source/icons/winblender.res']) + else: + dy_blender.Program (target='blender', source=d_obj) +if user_options_dict['BUILD_BLENDER_STATIC'] == 1: + st_blender = link_env.Copy () + if user_options_dict['USE_BUILDINFO'] == 1: + st_blender.Append (CPPDEFINES = ['BUILD_TIME=\'"%s"\''%(build_time), + 'BUILD_DATE=\'"%s"\''%(build_date), + 'BUILD_TYPE=\'"static"\'', + 'NAN_BUILDINFO', + 'BUILD_PLATFORM=\'"%s"\''%(sys.platform)]) + st_blender.Append (CCFLAGS=cflags) + st_blender.Append (LINKFLAGS=user_options_dict['OPENGL_STATIC']) + s_obj = [st_blender.Object (root_build_dir+'source/creator/s_buildinfo', + [root_build_dir+'source/creator/buildinfo.c'])] + st_blender.Prepend (LIBPATH=['/usr/lib/opengl/xfree/lib']) + st_blender.Program (target='blenderstatic', source=s_obj) if sys.platform == 'darwin': bundle = Environment () diff --git a/source/SConscript b/source/SConscript index e0005569caf..1d614db7514 100644 --- a/source/SConscript +++ b/source/SConscript @@ -1,6 +1,7 @@ Import ('user_options_dict') SConscript(['blender/SConscript', - 'kernel/SConscript']) + 'kernel/SConscript', + 'creator/SConscript']) if user_options_dict['BUILD_GAMEENGINE'] == 1: SConscript (['gameengine/SConscript']) diff --git a/source/blender/src/SConscript b/source/blender/src/SConscript index 91c75559f2c..4e434655059 100644 --- a/source/blender/src/SConscript +++ b/source/blender/src/SConscript @@ -143,6 +143,9 @@ if user_options_dict['USE_INTERNATIONAL'] == 1: src_env.Append (CPPDEFINES = 'INTERNATIONAL') src_env.Append (CPPDEFINES = 'FTGL_STATIC_LIBRARY') +if user_options_dict['USE_BUILDINFO'] == 1: + src_env.Append (CPPDEFINES = 'NAN_BUILDINFO') + src_env.Append (CPPPATH=extra_includes) src_env.Library (target='#'+user_options_dict['BUILD_DIR']+'/lib/blender_blendersrc', source=source_files) diff --git a/source/creator/SConscript b/source/creator/SConscript new file mode 100644 index 00000000000..6210f578af2 --- /dev/null +++ b/source/creator/SConscript @@ -0,0 +1,29 @@ +creator_env = Environment () + +Import ('cflags') +Import ('cxxflags') +Import ('defines') +Import ('user_options_dict') +creator_env.Append (CCFLAGS = cflags) +creator_env.Append (CXXFLAGS = cxxflags) +creator_env.Append (CPPDEFINES = defines) + +source_files = ['creator.c'] + +creator_env.Append (CPPPATH = ['#/intern/guardedalloc', + '../blender/blenlib', + '../blender/blenkernel', + '../blender/include', + '../blender/blenloader', + '../blender/imbuf', + '../blender/renderconverter', + '../blender/render/extern/include', + '../blender/python', + '../blender/makesdna', + '../kernel/gen_messaging', + '../kernel/gen_system']) + +if user_options_dict['USE_QUICKTIME'] == 1: + creator_env.Append (CPPDEFINES = ['WITH_QUICKTIME']) + +creator_env.Library (target='#'+user_options_dict['BUILD_DIR']+'/lib/blender_creator', source=source_files) -- cgit v1.2.3