basic detection of compiler (GCC or ICC) and CPU capabilities
try to detect Python path in Windows and allow direct specification through build option
plus other build system fixes
+ − Import('env')
+ − env.Append(CPPPATH = '#include')
+ −
+ − pyenv = env.Clone()
+ − if env['PLATFORM'] == 'win32':
+ − import sys
+ − pythonver = '%c%c' % (sys.version[0], sys.version[2])
+ − pythonlib = 'python'+pythonver
+ − pythonpath = [env['pythonpath'],
+ − 'C:\\Program Files\\Python'+pythonver]
+ − pyenv.Append(LIBS=pythonlib)
+ − pyenv.Append(CPPPATH=[s+'\\include' for s in pythonpath])
+ − pyenv.Append(LIBPATH=[s+'\\libs' for s in pythonpath])
+ − pyenv.Replace(SHLIBSUFFIX='.pyd')
+ − else:
+ − pyenv.ParseConfig('python-config --includes --libs')
+ −
+ − sources = [
+ − 'raytracer.cc', 'scene.cc', 'sampler.cc',
+ − 'container.cc', 'kdtree.cc', 'octree.cc', 'noise.cc']
+ −
+ − objs = []
+ − shared_objs = []
+ − for src in sources:
+ − objs.append( env.Object(src) )
+ − shared_objs.append( env.SharedObject(src) )
+ −
+ − pymodule = pyenv.SharedLibrary('raytracer',
+ − ['raytracermodule.cc']+shared_objs,
+ − SHLIBPREFIX = '',
+ − CCFLAGS = '$CCFLAGS -Wno-write-strings')
+ −
+ − lib = env.StaticLibrary('pyrit', objs)
+ −
+ − env.Alias('objs', objs)
+ − env.Alias('static-lib', lib)
+ − env.Alias('shared-objs', shared_objs)
+ − env.Alias('python-module', pymodule)
+ − env.Alias('libs', ['static-lib', 'python-module'])
+ −
+ − Return('lib pymodule')