ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/SConstruct
Revision: 1.20
Committed: Mon Jan 8 13:38:37 2018 UTC (6 years, 3 months ago) by schorsch
Branch: MAIN
Changes since 1.19: +38 -20 lines
Log Message:
Updating to SCons 3.x, adding support for Python 3

File Contents

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