svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r22717:22875
[blender.git] / tools / btools.py
index 2c9b564b8a1a453b8983fcb492f7b95e9617cd2f..1ae952adbc71d4cb242d47998a132eb1a8a9c12f 100755 (executable)
@@ -30,24 +30,28 @@ def validate_arguments(args, bc):
                        'WITH_BF_PYTHON', 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'WITH_BF_STATICPYTHON', 'BF_PYTHON_LIB_STATIC',
                        'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC',
                        'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH',
                        'WITH_BF_PYTHON', 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'WITH_BF_STATICPYTHON', 'BF_PYTHON_LIB_STATIC',
                        'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC',
                        'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH',
+                       'BF_LIBSAMPLERATE', 'BF_LIBSAMPLERATE_INC', 'BF_LIBSAMPLERATE_LIB', 'BF_LIBSAMPLERATE_LIBPATH',
+                       'WITH_BF_JACK', 'BF_JACK', 'BF_JACK_INC', 'BF_JACK_LIB', 'BF_JACK_LIBPATH',
+                       'WITH_BF_SNDFILE', 'BF_SNDFILE', 'BF_SNDFILE_INC', 'BF_SNDFILE_LIB', 'BF_SNDFILE_LIBPATH',
                        'BF_PTHREADS', 'BF_PTHREADS_INC', 'BF_PTHREADS_LIB', 'BF_PTHREADS_LIBPATH',
                        'WITH_BF_OPENEXR', 'BF_OPENEXR', 'BF_OPENEXR_INC', 'BF_OPENEXR_LIB', 'BF_OPENEXR_LIBPATH', 'WITH_BF_STATICOPENEXR', 'BF_OPENEXR_LIB_STATIC',
                        'WITH_BF_DDS',
                        'WITH_BF_FFMPEG', 'BF_FFMPEG_LIB','BF_FFMPEG_EXTRA', 'BF_FFMPEG',  'BF_FFMPEG_INC',
                        'WITH_BF_OGG', 'BF_OGG', 'BF_OGG_LIB',
                        'WITH_BF_JPEG', 'BF_JPEG', 'BF_JPEG_INC', 'BF_JPEG_LIB', 'BF_JPEG_LIBPATH',
                        'BF_PTHREADS', 'BF_PTHREADS_INC', 'BF_PTHREADS_LIB', 'BF_PTHREADS_LIBPATH',
                        'WITH_BF_OPENEXR', 'BF_OPENEXR', 'BF_OPENEXR_INC', 'BF_OPENEXR_LIB', 'BF_OPENEXR_LIBPATH', 'WITH_BF_STATICOPENEXR', 'BF_OPENEXR_LIB_STATIC',
                        'WITH_BF_DDS',
                        'WITH_BF_FFMPEG', 'BF_FFMPEG_LIB','BF_FFMPEG_EXTRA', 'BF_FFMPEG',  'BF_FFMPEG_INC',
                        'WITH_BF_OGG', 'BF_OGG', 'BF_OGG_LIB',
                        'WITH_BF_JPEG', 'BF_JPEG', 'BF_JPEG_INC', 'BF_JPEG_LIB', 'BF_JPEG_LIBPATH',
+                       'WITH_BF_OPENJPEG', 'BF_OPENJPEG', 'BF_OPENJPEG_INC', 'BF_OPENJPEG_LIB', 'BF_OPENJPEG_LIBPATH',
+                       'WITH_BF_REDCODE', 'BF_REDCODE', 'BF_REDCODE_INC', 'BF_REDCODE_LIB', 'BF_REDCODE_LIBPATH',
                        'WITH_BF_PNG', 'BF_PNG', 'BF_PNG_INC', 'BF_PNG_LIB', 'BF_PNG_LIBPATH',
                        'BF_TIFF', 'BF_TIFF_INC', 'BF_TIFF_LIB', 'BF_TIFF_LIBPATH',
                        'WITH_BF_ZLIB', 'BF_ZLIB', 'BF_ZLIB_INC', 'BF_ZLIB_LIB', 'BF_ZLIB_LIBPATH',
                        'WITH_BF_INTERNATIONAL',
                        'BF_GETTEXT', 'BF_GETTEXT_INC', 'BF_GETTEXT_LIB', 'BF_GETTEXT_LIBPATH',
                        'WITH_BF_ICONV', 'BF_ICONV', 'BF_ICONV_INC', 'BF_ICONV_LIB', 'BF_ICONV_LIBPATH',
                        'WITH_BF_PNG', 'BF_PNG', 'BF_PNG_INC', 'BF_PNG_LIB', 'BF_PNG_LIBPATH',
                        'BF_TIFF', 'BF_TIFF_INC', 'BF_TIFF_LIB', 'BF_TIFF_LIBPATH',
                        'WITH_BF_ZLIB', 'BF_ZLIB', 'BF_ZLIB_INC', 'BF_ZLIB_LIB', 'BF_ZLIB_LIBPATH',
                        'WITH_BF_INTERNATIONAL',
                        'BF_GETTEXT', 'BF_GETTEXT_INC', 'BF_GETTEXT_LIB', 'BF_GETTEXT_LIBPATH',
                        'WITH_BF_ICONV', 'BF_ICONV', 'BF_ICONV_INC', 'BF_ICONV_LIB', 'BF_ICONV_LIBPATH',
-                       'WITH_BF_ODE', 'BF_ODE', 'BF_ODE_INC', 'BF_ODE_LIB',
-                       'WITH_BF_GAMEENGINE', 'WITH_BF_SOLID', 'WITH_BF_BULLET', 'BF_BULLET', 'BF_BULLET_INC', 'BF_BULLET_LIB',
-                       'BF_SOLID', 'BF_SOLID_INC', 'BF_WINTAB', 'BF_WINTAB_INC',
-                       'WITH_BF_YAFRAY',
+                       'WITH_BF_GAMEENGINE', 'WITH_BF_BULLET', 'BF_BULLET', 'BF_BULLET_INC', 'BF_BULLET_LIB',
+                       'BF_WINTAB', 'BF_WINTAB_INC',
                        'WITH_BF_FREETYPE', 'BF_FREETYPE', 'BF_FREETYPE_INC', 'BF_FREETYPE_LIB', 'BF_FREETYPE_LIBPATH',
                        'WITH_BF_QUICKTIME', 'BF_QUICKTIME', 'BF_QUICKTIME_INC', 'BF_QUICKTIME_LIB', 'BF_QUICKTIME_LIBPATH',
                        'WITH_BF_FREETYPE', 'BF_FREETYPE', 'BF_FREETYPE_INC', 'BF_FREETYPE_LIB', 'BF_FREETYPE_LIBPATH',
                        'WITH_BF_QUICKTIME', 'BF_QUICKTIME', 'BF_QUICKTIME_INC', 'BF_QUICKTIME_LIB', 'BF_QUICKTIME_LIBPATH',
+                       'WITH_BF_FFTW3', 'BF_FFTW3', 'BF_FFTW3_INC', 'BF_FFTW3_LIB', 'BF_FFTW3_LIBPATH',
                        'WITH_BF_STATICOPENGL', 'BF_OPENGL', 'BF_OPENGL_INC', 'BF_OPENGL_LIB', 'BF_OPENGL_LIBPATH', 'BF_OPENGL_LIB_STATIC',
                        'WITH_BF_PLAYER',
                        'WITH_BF_NOBLENDER',
                        'WITH_BF_STATICOPENGL', 'BF_OPENGL', 'BF_OPENGL_INC', 'BF_OPENGL_LIB', 'BF_OPENGL_LIBPATH', 'BF_OPENGL_LIB_STATIC',
                        'WITH_BF_PLAYER',
                        'WITH_BF_NOBLENDER',
@@ -56,13 +60,15 @@ def validate_arguments(args, bc):
                        'BF_CXX', 'WITH_BF_STATICCXX', 'BF_CXX_LIB_STATIC',
                        'BF_TWEAK_MODE', 'BF_SPLIT_SRC',
                        'WITHOUT_BF_INSTALL',
                        'BF_CXX', 'WITH_BF_STATICCXX', 'BF_CXX_LIB_STATIC',
                        'BF_TWEAK_MODE', 'BF_SPLIT_SRC',
                        'WITHOUT_BF_INSTALL',
+                       'WITHOUT_BF_PYTHON_INSTALL',
                        'WITH_BF_OPENMP',
                        'WITH_BF_OPENMP',
-                       'WITHOUT_BF_INSTALL',
                        'BF_FANCY', 'BF_QUIET',
                        'BF_X264_CONFIG',
                        'BF_XVIDCORE_CONFIG',
                        'BF_FANCY', 'BF_QUIET',
                        'BF_X264_CONFIG',
                        'BF_XVIDCORE_CONFIG',
+                       'WITH_BF_LCMS', 'BF_LCMS_LIB',
                        'WITH_BF_DOCS',
                        'BF_NUMJOBS',
                        'WITH_BF_DOCS',
                        'BF_NUMJOBS',
+                       'BF_MSVS',
                        ]
        
        # Have options here that scons expects to be lists
                        ]
        
        # Have options here that scons expects to be lists
@@ -92,7 +98,7 @@ def validate_arguments(args, bc):
                if (k in opts_list) or (k in arg_list):
                        okdict[k] = v
                elif k in opts_list_split:
                if (k in opts_list) or (k in arg_list):
                        okdict[k] = v
                elif k in opts_list_split:
-                       okdict[k] = v.split() # "" have alredy been stripped
+                       okdict[k] = v.split() # "" have already been stripped
                else:
                        print '\t'+bc.WARNING+'Invalid argument: '+bc.ENDC+k+'='+v
 
                else:
                        print '\t'+bc.WARNING+'Invalid argument: '+bc.ENDC+k+'='+v
 
@@ -155,8 +161,7 @@ def read_opts(cfg, args):
                (BoolVariable('WITH_BF_STATICPYTHON', 'Staticly link to python', False)),
 
                (BoolVariable('BF_NO_ELBEEM', 'Disable Fluid Sim', False)),
                (BoolVariable('WITH_BF_STATICPYTHON', 'Staticly link to python', False)),
 
                (BoolVariable('BF_NO_ELBEEM', 'Disable Fluid Sim', False)),
-               (BoolVariable('WITH_BF_YAFRAY', 'Enable Yafray', True)),
-
+               ('BF_PROFILE_FLAGS', 'Profiling compiler flags', ''),
                (BoolVariable('WITH_BF_OPENAL', 'Use OpenAL if true', False)),
                ('BF_OPENAL', 'base path for OpenAL', ''),
                ('BF_OPENAL_INC', 'include path for python headers', ''),
                (BoolVariable('WITH_BF_OPENAL', 'Use OpenAL if true', False)),
                ('BF_OPENAL', 'base path for OpenAL', ''),
                ('BF_OPENAL_INC', 'include path for python headers', ''),
@@ -167,10 +172,27 @@ def read_opts(cfg, args):
 
                (BoolVariable('WITH_BF_SDL', 'Use SDL if true', False)),
                ('BF_SDL', 'SDL base path', ''),
 
                (BoolVariable('WITH_BF_SDL', 'Use SDL if true', False)),
                ('BF_SDL', 'SDL base path', ''),
-               ('BF_SDL_INC', 'SDL include path', ''),  #$(shell $(BF_SDL)/bin/sdl-config --cflags)
-               ('BF_SDL_LIB', 'SDL library', ''),        #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
+               ('BF_SDL_INC', 'SDL include path', ''),
+               ('BF_SDL_LIB', 'SDL library', ''),
                ('BF_SDL_LIBPATH', 'SDL library path', ''),
 
                ('BF_SDL_LIBPATH', 'SDL library path', ''),
 
+               ('BF_LIBSAMPLERATE', 'libsamplerate aka SRC base path', ''),
+               ('BF_LIBSAMPLERATE_INC', 'libsamplerate aka SRC include path', ''),
+               ('BF_LIBSAMPLERATE_LIB', 'libsamplerate aka SRC library', ''),
+               ('BF_LIBSAMPLERATE_LIBPATH', 'libsamplerate aka SRC library path', ''),
+
+               (BoolVariable('WITH_BF_JACK', 'Enable jack support if true', True)),
+               ('BF_JACK', 'jack base path', ''),
+               ('BF_JACK_INC', 'jack include path', ''),
+               ('BF_JACK_LIB', 'jack library', ''),
+               ('BF_JACK_LIBPATH', 'jack library path', ''),
+
+               (BoolVariable('WITH_BF_SNDFILE', 'Enable sndfile support if true', True)),
+               ('BF_SNDFILE', 'sndfile base path', ''),
+               ('BF_SNDFILE_INC', 'sndfile include path', ''),
+               ('BF_SNDFILE_LIB', 'sndfile library', ''),
+               ('BF_SNDFILE_LIBPATH', 'sndfile library path', ''),
+
                ('BF_PTHREADS', 'Pthreads base path', ''),
                ('BF_PTHREADS_INC', 'Pthreads include path', ''),
                ('BF_PTHREADS_LIB', 'Pthreads library', ''),
                ('BF_PTHREADS', 'Pthreads base path', ''),
                ('BF_PTHREADS_INC', 'Pthreads include path', ''),
                ('BF_PTHREADS_LIB', 'Pthreads library', ''),
@@ -247,21 +269,13 @@ def read_opts(cfg, args):
                ('BF_ICONV_LIB', 'iconv library', ''),
                ('BF_ICONV_LIBPATH', 'iconv library path', ''),
                
                ('BF_ICONV_LIB', 'iconv library', ''),
                ('BF_ICONV_LIBPATH', 'iconv library path', ''),
                
-               (BoolVariable('WITH_BF_GAMEENGINE', 'Build with gameengine' , True)),
-
-               (BoolVariable('WITH_BF_ODE', 'Use ODE if true', True)),
-               ('BF_ODE', 'ODE base path', ''),
-               ('BF_ODE_INC', 'ODE include path' , ''),
-               ('BF_ODE_LIB', 'ODE library', ''),
+               (BoolVariable('WITH_BF_GAMEENGINE', 'Build with gameengine' , False)),
 
                (BoolVariable('WITH_BF_BULLET', 'Use Bullet if true', True)),
                ('BF_BULLET', 'Bullet base dir', ''),
                ('BF_BULLET_INC', 'Bullet include path', ''),
                ('BF_BULLET_LIB', 'Bullet library', ''),
                
 
                (BoolVariable('WITH_BF_BULLET', 'Use Bullet if true', True)),
                ('BF_BULLET', 'Bullet base dir', ''),
                ('BF_BULLET_INC', 'Bullet include path', ''),
                ('BF_BULLET_LIB', 'Bullet library', ''),
                
-               (BoolVariable('WITH_BF_SOLID', 'Use Sumo/Solid deprecated physics system if true', True)),
-               ('BF_SOLID', 'Solid base dir', '#/extern/solid'),
-               ('BF_SOLID_INC', 'Solid include path', ''),
                ('BF_WINTAB', 'WinTab base dir', ''),
                ('BF_WINTAB_INC', 'WinTab include dir', ''),
                ('BF_CXX', 'c++ base path for libstdc++, only used when static linking', ''),
                ('BF_WINTAB', 'WinTab base dir', ''),
                ('BF_WINTAB_INC', 'WinTab include dir', ''),
                ('BF_CXX', 'c++ base path for libstdc++, only used when static linking', ''),
@@ -298,6 +312,12 @@ def read_opts(cfg, args):
                ('BF_QUICKTIME_INC', 'QuickTime include path', ''),
                ('BF_QUICKTIME_LIB', 'QuickTime library', ''),
                ('BF_QUICKTIME_LIBPATH', 'QuickTime library path', ''),
                ('BF_QUICKTIME_INC', 'QuickTime include path', ''),
                ('BF_QUICKTIME_LIB', 'QuickTime library', ''),
                ('BF_QUICKTIME_LIBPATH', 'QuickTime library path', ''),
+               
+               (BoolVariable('WITH_BF_FFTW3', 'Use FFTW3 if true', False)),
+               ('BF_FFTW3', 'FFTW3 base path', ''),
+               ('BF_FFTW3_INC', 'FFTW3 include path', ''),
+               ('BF_FFTW3_LIB', 'FFTW3 library', ''),
+               ('BF_FFTW3_LIBPATH', 'FFTW3 library path', ''),
 
                (BoolVariable('WITH_BF_STATICOPENGL', 'Use MESA if true', True)),
                ('BF_OPENGL', 'OpenGL base path', ''),
 
                (BoolVariable('WITH_BF_STATICOPENGL', 'Use MESA if true', True)),
                ('BF_OPENGL', 'OpenGL base path', ''),
@@ -350,16 +370,21 @@ def read_opts(cfg, args):
                (BoolVariable('BF_TWEAK_MODE', 'Enable tweak mode if true', False)),
                (BoolVariable('BF_SPLIT_SRC', 'Split src lib into several chunks if true', False)),
                (BoolVariable('WITHOUT_BF_INSTALL', 'dont install if true', False)),
                (BoolVariable('BF_TWEAK_MODE', 'Enable tweak mode if true', False)),
                (BoolVariable('BF_SPLIT_SRC', 'Split src lib into several chunks if true', False)),
                (BoolVariable('WITHOUT_BF_INSTALL', 'dont install if true', False)),
+               (BoolVariable('WITHOUT_BF_PYTHON_INSTALL', 'dont install Python modules if true', False)),
                (BoolVariable('BF_FANCY', 'Enable fancy output if true', True)),
                (BoolVariable('BF_QUIET', 'Enable silent output if true', True)),
                (BoolVariable('WITH_BF_BINRELOC', 'Enable relocatable binary (linux only)', False)),
                (BoolVariable('BF_FANCY', 'Enable fancy output if true', True)),
                (BoolVariable('BF_QUIET', 'Enable silent output if true', True)),
                (BoolVariable('WITH_BF_BINRELOC', 'Enable relocatable binary (linux only)', False)),
+               
+               (BoolVariable('WITH_BF_LCMS', 'Enable color correction with lcms', False)),
+               ('BF_LCMS_LIB', 'LCMSlibrary', 'lcms'),
 
                ('BF_X264_CONFIG', 'configuration flags for x264', ''),
                ('BF_XVIDCORE_CONFIG', 'configuration flags for xvidcore', ''),
                (BoolVariable('WITH_BF_DOCS', 'Generate API documentation', False)),
                
                ('BF_CONFIG', 'SCons python config file used to set default options', 'user_config.py'),
 
                ('BF_X264_CONFIG', 'configuration flags for x264', ''),
                ('BF_XVIDCORE_CONFIG', 'configuration flags for xvidcore', ''),
                (BoolVariable('WITH_BF_DOCS', 'Generate API documentation', False)),
                
                ('BF_CONFIG', 'SCons python config file used to set default options', 'user_config.py'),
-               ('BF_NUMJOBS', 'Number of build processes to spawn', '1')
+               ('BF_NUMJOBS', 'Number of build processes to spawn', '1'),
+               ('BF_MSVS', 'Generate MSVS project files and solution', False)
 
        ) # end of opts.AddOptions()
 
 
        ) # end of opts.AddOptions()
 
@@ -399,9 +424,13 @@ def NSIS_Installer(target=None, source=None, env=None):
 
        ns = open("00.sconsblender.nsi","r")
 
 
        ns = open("00.sconsblender.nsi","r")
 
+
        ns_cnt = str(ns.read())
        ns.close()
 
        ns_cnt = str(ns.read())
        ns.close()
 
+       # set Python version we compile against
+       ns_cnt = string.replace(ns_cnt, "[PYTHON_VERSION]", env['BF_PYTHON_VERSION'])
+
        # do root
        rootlist = []
        rootdir = os.listdir(inst_dir+"\\")
        # do root
        rootlist = []
        rootdir = os.listdir(inst_dir+"\\")