1 Import('env buildmodule cc') |
1 Import('env pyenv buildmodule cc') |
2 |
|
3 myenv = env.Clone(CPPPATH = '#include') |
|
4 pyenv = myenv.Clone() |
|
5 if env['PLATFORM'] == 'win32': |
|
6 import sys |
|
7 pythonver = '%c%c' % (sys.version[0], sys.version[2]) |
|
8 pythonlib = 'python'+pythonver |
|
9 pythonpath = [env['pythonpath'], |
|
10 'C:\\Program Files\\Python'+pythonver] |
|
11 pyenv.Append(LIBS=pythonlib) |
|
12 pyenv.Append(CPPPATH=[s+'\\include' for s in pythonpath]) |
|
13 pyenv.Append(LIBPATH=[s+'\\libs' for s in pythonpath]) |
|
14 pyenv.Replace(SHLIBSUFFIX='.pyd') |
|
15 else: |
|
16 pyenv.ParseConfig('python-config --includes --libs') |
|
17 |
2 |
18 sources = [ |
3 sources = [ |
19 'raytracer.cc', 'scene.cc', 'shapes.cc', 'sampler.cc', |
4 'common.cc', 'raytracer.cc', 'sampler.cc', 'scene.cc', |
20 'container.cc', 'kdtree.cc', 'octree.cc', 'material.cc', |
5 'shapes.cc', 'material.cc', 'pixmap.cc', 'serialize.cc', |
21 'serialize.cc', 'pixmap.cc'] |
6 'container.cc', 'kdtree.cc', 'octree.cc'] |
22 |
|
23 objs = [] |
|
24 shared_objs = [] |
|
25 for src in sources: |
|
26 objs.append( myenv.Object(src) ) |
|
27 shared_objs.append( myenv.SharedObject(src) ) |
|
28 |
7 |
29 if buildmodule: |
8 if buildmodule: |
|
9 shared_objs = [] |
|
10 for src in sources: |
|
11 shared_objs.append( pyenv.SharedObject(src) ) |
30 if cc == 'gcc': |
12 if cc == 'gcc': |
31 ccflags = '$CCFLAGS -Wno-write-strings' |
13 ccflags = '$CCFLAGS -Wno-write-strings' |
32 else: |
14 else: |
33 ccflags = '$CCFLAGS' |
15 ccflags = '$CCFLAGS' |
|
16 if cc == 'msvc': |
|
17 linkflags = '$LINKFLAGS /export:initpyrit' |
|
18 else: |
|
19 linkflags = '$LINKFLAGS' |
34 pymodule = pyenv.SharedLibrary('pyrit', |
20 pymodule = pyenv.SharedLibrary('pyrit', |
35 ['raytracermodule.cc']+shared_objs, |
21 ['raytracermodule.cc']+shared_objs, |
36 SHLIBPREFIX = '', CCFLAGS = ccflags) |
22 SHLIBPREFIX = '', CCFLAGS = ccflags, |
|
23 LINKFLAGS=linkflags) |
|
24 if cc == 'msvc': |
|
25 pyenv.AddPostAction(pymodule, 'mt /nologo /manifest ${TARGET}.manifest /outputresource:$TARGET;2') |
37 env.Alias('shared-objs', shared_objs) |
26 env.Alias('shared-objs', shared_objs) |
38 env.Alias('python-module', pymodule) |
27 env.Alias('python-module', pymodule) |
39 Return('pymodule') |
28 Return('pymodule') |
40 else: |
29 else: |
41 lib = myenv.StaticLibrary('pyrit', objs) |
30 objs = [] |
|
31 for src in sources: |
|
32 objs.append( env.Object(src) ) |
|
33 lib = env.StaticLibrary('pyrit', objs) |
42 env.Alias('objs', objs) |
34 env.Alias('objs', objs) |
43 env.Alias('static-lib', lib) |
35 env.Alias('static-lib', lib) |
44 Return('lib') |
36 Return('lib') |