packetize Phong shader
new scons config options:
simd=(yes|no) - allow/suppress explicit SSE
force_flags=(yes|no) - force use of specified flags instead of autodetected
profile=(yes|no) - enable gcc's profiling (-pg option)
check for pthread.h header, don't try to build without it
add fourth Vector3 component for better memory aligning
rename Vector3 to Vector
partialy SSE-ize Vector class (only fully vertical operations)
build static lib and python module in distinctive directories
to avoid collision of library file names on some platforms
Import('env buildmodule')
env = env.Clone(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', 'shapes.cc', 'sampler.cc',
'container.cc', 'kdtree.cc', 'octree.cc', 'material.cc',
'serialize.cc', 'pixmap.cc']
objs = []
shared_objs = []
for src in sources:
objs.append( env.Object(src) )
shared_objs.append( env.SharedObject(src) )
if buildmodule:
pymodule = pyenv.SharedLibrary('pyrit',
['raytracermodule.cc']+shared_objs,
SHLIBPREFIX = '',
CCFLAGS = '$CCFLAGS -Wno-write-strings')
env.Alias('shared-objs', shared_objs)
env.Alias('python-module', pymodule)
Return('pymodule')
else:
lib = env.StaticLibrary('pyrit', objs)
env.Alias('objs', objs)
env.Alias('static-lib', lib)
Return('lib')