ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/SConstruct
Revision: 1.21
Committed: Tue Jan 9 00:08:57 2018 UTC (6 years, 8 months ago) by schorsch
Branch: MAIN
CVS Tags: rad5R4, rad5R2, rad5R3, HEAD
Changes since 1.20: +8 -0 lines
Log Message:
SCons Option to build Pmap with OOC data on unix

File Contents

# Content
1 from __future__ import division, print_function, unicode_literals
2
3 import os
4 import sys
5
6 def set_pre_opts(testenv):
7 optfile = File(testenv['CFG_OPTFILE']).abspath
8 vars = Variables(optfile, ARGUMENTS)
9 vars.Add('SKIP', 'Skip Display of License terms', 0)
10 vars.Add('RAD_DEBUG', 'Build a debug version', 0)
11 if testenv['CFG_PLATSYS'] == 'Windows':
12 # no default, will select the most recent one when empty
13 vars.Add('MSVC_VERSION', 'Microsoft VC Version', )
14 else: # not yet supported on Windows
15 vars.Add('PMAP_OOC', 'Build Pmap with Out-of-core Data', 1)
16 vars.Update(testenv)
17 return vars
18
19 def set_opts(env, pathfile):
20 vars = Variables(pathfile, ARGUMENTS)
21 vars.Add('RAD_BASEDIR', 'Installation base directory', env['RAD_BASEDIR'])
22 vars.Add('RAD_BINDIR', 'Install executables here', env['RAD_BINDIR'])
23 vars.Add('RAD_RLIBDIR', 'Install support files here', env['RAD_RLIBDIR'])
24 vars.Add('RAD_MANDIR', 'Install man pages here', env['RAD_MANDIR'])
25 vars.Update(env)
26 vars.Save(pathfile, env)
27 Help(vars.GenerateHelpText(env))
28 # where stuff is located in the source tree
29 # the binary target libs are configured by platform
30 env['RAD_BUILDRLIB'] = '#lib'
31 env['RAD_BUILDMAN'] = '#doc/man'
32
33 def allplats_setup(env):
34 from build_utils import find_libs
35 find_libs.find_radlib(env)
36 find_libs.find_x11(env)
37 find_libs.find_gl(env) # OpenGL
38 find_libs.find_libtiff(env)
39 find_libs.find_pyinstaller(env)
40
41 def post_common_setup(env):
42 env.Append(CPPPATH = [os.path.join('#src', 'common')])
43 env.Append(LIBPATH=[env['RAD_BUILDLIB']]) # our own libs
44 if not env.has_key('RAD_MLIB'):
45 env['RAD_MLIB'] = [] #['m'] # no seperate mlib on Win
46
47 def shareinstall_setup(env):
48 from build_utils import install
49 # only scan for those files when we actually need them
50 if 'install' in sys.argv or 'rlibinstall' in sys.argv:
51 install.install_rlibfiles(env)
52 if 'install' in sys.argv or 'maninstall' in sys.argv:
53 install.install_manfiles(env)
54
55 # first figure out the platform
56 from build_utils import load_plat
57 testenv = Environment()
58 load_plat.identify_plat(testenv)
59
60 # set stuff before loading platforms
61 prevars = set_pre_opts(testenv)
62
63 # Set up build environment
64 env = Environment(variables=prevars)
65 env.Decider('timestamp-match')
66
67 if env.get('PMAP_OOC', 0) in (0,'0','','n','no','false',False,None):
68 print('Building Photon-Maps with In-core KD-Tree')
69 else:
70 print('Building Photon-Maps with Out-of-core Octree')
71
72 from build_utils import install
73 script_b = Builder(action = install.install_script, suffix = '')
74 env.Append(BUILDERS={'InstallScript': script_b})
75 if os.name == 'posix':
76 tclscript_b = Builder(action = install.install_tclscript, suffix = '')
77 env.Append(BUILDERS={'InstallTCLScript': tclscript_b})
78
79 # configure platform-specific stuff
80 load_plat.load_plat(env, testenv)
81
82 # override options
83 cfg_pathfile = File(testenv['CFG_PATHFILE']).abspath
84 set_opts(env, cfg_pathfile)
85
86 load_plat.combine_instpaths(env)
87
88 # accept license
89 if ((not env['SKIP']
90 or env['SKIP'].strip().lower() in (0,'0','n','no','false',None))
91 and not '-c' in sys.argv and not 'test' in sys.argv):
92 from build_utils import copyright
93 copyright.show_license()
94 testenv['SKIP'] = '1'
95
96 # We waited to save this, so that we can add the SKIP
97 prevars.Save(File(testenv['CFG_OPTFILE']).abspath, testenv)
98
99 # fill in generic config
100 allplats_setup(env)
101
102 print('Installation directories:')
103 print('Base: ', env.subst('$RAD_BASEDIR'))
104 print('Binaries: ', env.subst('$RAD_BINDIR'))
105 print('Library: ', env.subst('$RAD_RLIBDIR'))
106 print('Manpages: ', env.subst('$RAD_MANDIR'))
107 print()
108
109 # Bring in all the actual things to build
110 Export('env')
111 if 'test' in sys.argv:
112 SConscript(os.path.join('test', 'SConscript'))
113
114 else:
115 SConscript(os.path.join('src', 'common', 'SConscript'),
116 variant_dir=os.path.join(env['RAD_BUILDOBJ'],'common'), duplicate=0)
117 post_common_setup(env)
118 dirs = Split('''meta cv gen ot rt px hd util cal''')
119 if os.path.isfile('src/winimage/SConscript'):
120 dirs.append('winimage')
121 if os.path.isfile('src/winrview/SConscript'):
122 dirs.append('winrview')
123 for d in dirs:
124 print(d)
125 SConscript(os.path.join('src', d, 'SConscript'),
126 variant_dir=os.path.join(env['RAD_BUILDOBJ'], d), duplicate=0)
127
128 if ' '.join(sys.argv[1:]).find('install') > -1:
129 shareinstall_setup(env)
130
131 Default('.')
132
133 # virtual targets
134 env.Alias('bininstall', '$RAD_BINDIR')
135 env.Alias('rlibinstall', '$RAD_RLIBDIR')
136 env.Alias('maninstall', '$RAD_MANDIR')
137
138 env.Alias('build', ['$RAD_BUILDBIN']) #, '$RAD_BUILDRLIB'])
139 env.Alias('test', ['#test'])
140 env.Alias('install', ['bininstall', 'rlibinstall', 'maninstall'])
141
142 # vi: set ts=4 sw=4 :
143 # vim: set syntax=python :