/[escript]/branches/ROBW_XPLATFORM/SConstruct
ViewVC logotype

Annotation of /branches/ROBW_XPLATFORM/SConstruct

Parent Directory Parent Directory | Revision Log Revision Log


Revision 639 - (hide annotations)
Thu Mar 23 13:06:40 2006 UTC (17 years ago) by robwdcock
File size: 11175 byte(s)
+Unit tests for esysUtils and escript added

1 jgs 214 # top-level Scons configuration file for all esys13 modules
2 robwdcock 623 # Begin initialisation Section
3     # all of this section just intialises default environments and helper
4     # scripts. You shouldn't need to modify this section.
5     EnsureSConsVersion(0,96,91)
6     EnsurePythonVersion(2,3)
7 jgs 455
8 robwdcock 623 import sys, os
9     # Add our extensions
10     if sys.path.count('scons')==0: sys.path.append('scons')
11     import scons_extensions
12 jgs 455
13 robwdcock 623 # Default options and options help text
14     # These are defaults and can be overridden using command line arguments or an options file.
15     # if the options_file or ARGUMENTS do not exist then the ones listed as default here are used
16     # DO NOT CHANGE THEM HERE
17     if ARGUMENTS.get('options_file',0):
18     options_file = ARGUMENTS.get('options_file',0)
19     else:
20     import socket
21     from string import ascii_letters,digits
22     hostname=""
23     for s in socket.gethostname().split('.')[0]:
24     if s in ascii_letters+digits:
25     hostname+=s
26     else:
27     hostname+="_"
28     options_file = "scons/"+hostname+"_options.py"
29 jgs 214
30 robwdcock 623 opts = Options(options_file, ARGUMENTS)
31     opts.AddOptions(
32     # Where to install esys stuff
33 robwdcock 635 ('incinstall', 'where the esys headers will be installed', Dir('#.').abspath+'/include'),
34     ('libinstall', 'where the esys libraries will be installed', Dir('#.').abspath+'/lib'),
35     ('pyinstall', 'where the esys python modules will be installed', Dir('#.').abspath+'/esys'),
36 robwdcock 623 # Compilation options
37 robwdcock 639 BoolOption('dodebug', 'Do you want a debug build?', 'yes'),
38 robwdcock 623 ('options_file', "Optional file containing preferred options. Ignored if it doesn't exist (default: scons/hostname_options.py)", options_file),
39     ('cc_defines','C/C++ defines to use', None),
40     ('cc_flags','C compiler flags to use (Release build)', None),
41     ('cc_flags_debug', 'C compiler flags to use (Debug build)', None),
42     ('cxx_flags', 'C++ compiler flags to use (Release build)', None),
43     ('cxx_flags_debug', 'C++ compiler flags to use (Debug build)', None),
44     ('ar_flags', 'Static library archiver flags to use', None),
45     ('sys_libs', 'System libraries to link with', None),
46     # MKL
47     PathOption('mkl_path', 'Path to MKL includes', None),
48     PathOption('mkl_lib_path', 'Path to MKL libs', None),
49     ('mkl_libs', 'MKL libraries to link with', None),
50     # SCSL
51     PathOption('scsl_path', 'Path to SCSL includes', None),
52     PathOption('scsl_lib_path', 'Path to SCSL libs', None),
53     ('scsl_libs', 'SCSL libraries to link with', None),
54     # UMFPACK
55     PathOption('umf_path', 'Path to UMF includes', None),
56     PathOption('umf_lib_path', 'Path to UMF libs', None),
57     ('umf_libs', 'UMF libraries to link with', None),
58     # Python
59     PathOption('python_path', 'Path to Python includes', '/usr/include'),
60     PathOption('python_lib_path', 'Path to Python libs', '/usr/lib'),
61     ('python_lib', 'Python libraries to link with', ['python2.3',]),
62     # Boost
63     PathOption('boost_path', 'Path to Boost includes', '/usr/include'),
64     PathOption('boost_lib_path', 'Path to Boost libs', '/usr/lib'),
65     ('boost_lib', 'Boost libraries to link with', ['boost_python',]),
66 robwdcock 635 # CppUnit
67     PathOption('cppunit_path', 'Path to CppUnit includes', Dir('#.').abspath+'/tools/CppUnitTest/inc'),
68     PathOption('cppunit_lib_path', 'Path to CppUnit libs', Dir('#.').abspath+'/lib'),
69     ('cppunit_lib', 'CppUnit libraries to link with', ['CppUnitTest',]),
70 robwdcock 623 # Doc building
71     PathOption('doxygen_path', 'Path to Doxygen executable', None),
72     PathOption('epydoc_path', 'Path to Epydoc executable', None),
73     PathOption('epydoc_pythonpath', 'Path to Epydoc python files', None),
74     # PAPI
75     PathOption('papi_path', 'Path to PAPI includes', None),
76     PathOption('papi_lib_path', 'Path to PAPI libs', None),
77     ('papi_libs', 'PAPI libraries to link with', None),
78     )
79 jgs 192
80 robwdcock 623 # Initialise Scons Build Environment
81     # Note: On the Altix the intel compilers are not automatically
82     # detected by scons intelc.py script. The Altix has a different directory
83     # path and in some locations the "modules" facility is used to support
84     # multiple compiler versions. This forces the need to import the users PATH
85     # environment which isn't the "scons way"
86     # This doesn't impact linux and windows which will use the default compiler (g++ or msvc, or the intel compiler if it is installed on both platforms)
87     # FIXME: Perhaps a modification to intelc.py will allow better support for ia64 on altix
88 robwdcock 632 if os.name != "nt" and os.uname()[4]=='ia64':
89 robwdcock 623 env = Environment(ENV = {'PATH' : os.environ['PATH']}, tools = ['default', 'intelc'], options = opts)
90     if env['CXX'] == 'icpc':
91     env['LINK'] = env['CXX'] # version >=9 of intel c++ compiler requires use of icpc to link in C++ runtimes (icc does not). FIXME: this behaviour could be directly incorporated into scons intelc.py
92     else:
93 robwdcock 634 env = Environment(tools = ['default', 'intelc'], options = opts)
94 robwdcock 623
95     # Setup help for options
96     Help(opts.GenerateHelpText(env))
97    
98     # Add some customer builders
99     py_builder = Builder(action = scons_extensions.build_py, suffix = '.pyc', src_suffix = '.py', single_source=True)
100     env.Append(BUILDERS = {'PyCompile' : py_builder});
101    
102     if env['PLATFORM'] == "win32":
103     runUnitTest_builder = Builder(action = scons_extensions.runUnitTest, suffix = '.passed', src_suffix='.exe', single_source=True)
104     else:
105     runUnitTest_builder = Builder(action = scons_extensions.runUnitTest, suffix = '.passed', single_source=True)
106     env.Append(BUILDERS = {'RunUnitTest' : runUnitTest_builder});
107    
108     # FIXME: Copy this builder from the win32 branch
109     #runPyUnitTest_builder = Builder(action = scons_extensions.runPyUnitTest, suffix = '.passed', src_suffic='.py', single_source=True)
110     #env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});
111    
112     # Convert the options which are held in environment variable into python variables for ease of handling and configure compilation options
113     try:
114     incinstall = env['incinstall']
115     env.Append(CPPPATH = [incinstall,])
116     except KeyError:
117     incinstall = None
118     try:
119     libinstall = env['libinstall']
120     env.Append(LIBPATH = [libinstall,])
121     except KeyError:
122     libinstall = None
123     try:
124     pyinstall = env['pyinstall']
125     except KeyError:
126     pyinstall = None
127     try:
128     dodebug = env['dodebug']
129     except KeyError:
130     dodebug = None
131     try:
132     cc_defines = env['cc_defines']
133     env.Append(CPPDEFINES = [cc_defines,])
134     except KeyError:
135     pass
136     if dodebug:
137     try:
138     flags = env['cc_flags_debug']
139 robwdcock 632 env.Append(CCFLAGS = flags)
140 robwdcock 623 except KeyError:
141     pass
142     else:
143     try:
144     flags = env['cc_flags']
145 robwdcock 632 env.Append(CCFLAGS = flags)
146 robwdcock 623 except KeyError:
147     pass
148    
149     if dodebug:
150     try:
151     flags = env['cxx_flags_debug']
152 robwdcock 632 env.Append(CXXFLAGS = flags)
153 robwdcock 623 except KeyError:
154     pass
155     else:
156     try:
157     flags = env['cxx_flags']
158 robwdcock 632 env.Append(CXXFLAGS = flags)
159 robwdcock 623 except KeyError:
160     pass
161    
162     try:
163     flags = env['ar_flags']
164     env.Append(ARFLAGS = flags)
165     except KeyError:
166     ar_flags = None
167     try:
168     sys_libs = env['sys_libs']
169     except KeyError:
170     sys_libs = None
171    
172     try:
173     includes = env['mkl_path']
174     env.Append(CPPPATH = [includes,])
175     except KeyError:
176     pass
177     try:
178     lib_path = env['mkl_lib_path']
179     env.Append(LIBPATH = [lib_path,])
180     except KeyError:
181     pass
182     try:
183     mkl_libs = env['mkl_libs']
184     except KeyError:
185     mkl_libs = None
186     try:
187     includes = env['scsl_path']
188     env.Append(CPPPATH = [includes,])
189     except KeyError:
190     pass
191     try:
192     lib_path = env['scsl_lib_path']
193     env.Append(LIBPATH = [lib_path,])
194     except KeyError:
195     pass
196     try:
197     scsl_libs = env['scsl_libs']
198     except KeyError:
199     scsl_libs = None
200     try:
201     includes = env['umf_path']
202     env.Append(CPPPATH = [includes,])
203     except KeyError:
204     pass
205     try:
206     lib_path = env['umf_lib_path']
207     env.Append(LIBPATH = [lib_path,])
208     except KeyError:
209     pass
210     try:
211     umf_libs = env['umf_libs']
212     except KeyError:
213     umf_libs = None
214     try:
215     includes = env['boost_path']
216     env.Append(CPPPATH = [includes,])
217     except KeyError:
218     pass
219     try:
220     lib_path = env['boost_lib_path']
221     env.Append(LIBPATH = [lib_path,])
222     except KeyError:
223     pass
224     try:
225     boost_lib = env['boost_lib']
226     except KeyError:
227     boost_lib = None
228     try:
229 robwdcock 635 includes = env['cppunit_path']
230     env.Append(CPPPATH = [includes,])
231     except KeyError:
232     pass
233     try:
234     lib_path = env['cppunit_lib_path']
235     env.Append(LIBPATH = [lib_path,])
236     except KeyError:
237     pass
238     try:
239     cppunit_lib = env['cppunit_lib']
240     except KeyError:
241     boost_lib = None
242     try:
243 robwdcock 623 includes = env['python_path']
244     env.Append(CPPPATH = [includes,])
245     except KeyError:
246     pass
247     try:
248     lib_path = env['python_lib_path']
249     env.Append(LIBPATH = [lib_path,])
250     except KeyError:
251     pass
252     try:
253     python_lib = env['python_lib']
254     except KeyError:
255     python_lib = None
256     try:
257     doxygen_path = env['doxygen_path']
258     except KeyError:
259     doxygen_path = None
260     try:
261     epydoc_path = env['epydoc_path']
262     except KeyError:
263     epydoc_path = None
264     try:
265     epydoc_pythonpath = env['epydoc_pythonpath']
266     except KeyError:
267     epydoc_pythonpath = None
268     try:
269     includes = env['papi_path']
270     env.Append(CPPPATH = [includes,])
271     except KeyError:
272     pass
273     try:
274     lib_path = env['papi_lib_path']
275     env.Append(LIBPATH = [lib_path,])
276     except KeyError:
277     pass
278     try:
279     papi_libs = env['papi_libs']
280     except KeyError:
281     papi_libs = None
282    
283     # Targets
284     env.Default(libinstall)
285     env.Default(incinstall)
286     env.Alias('py_test')
287    
288     # Allow sconscripts to see the env
289     Export(["env", "incinstall", "libinstall", "pyinstall", "dodebug", "mkl_libs", "scsl_libs", "umf_libs",
290 robwdcock 635 "boost_lib", "python_lib", "doxygen_path", "epydoc_path", "epydoc_pythonpath", "papi_libs", "cppunit_lib", "sys_libs" ])
291 robwdcock 623
292     # End initialisation section
293     # Begin configuration section
294     # Insert new components to be build here
295     # FIXME: might be nice to replace this verbosity with a list of targets and some
296     # FIXME: nifty python to create the lengthy but very similar env.Sconscript lines
297     # Third Party libraries
298     env.SConscript(dirs = ['tools/CppUnitTest/src'], build_dir='build/$PLATFORM/tools/CppUnitTest', duplicate=0)
299     # C/C++ Libraries
300     env.SConscript(dirs = ['paso/src'], build_dir='build/$PLATFORM/paso', duplicate=0)
301     env.SConscript(dirs = ['bruce/src'], build_dir='build/$PLATFORM/bruce', duplicate=0)
302     env.SConscript(dirs = ['escript/src'], build_dir='build/$PLATFORM/escript', duplicate=0)
303     env.SConscript(dirs = ['esysUtils/src'], build_dir='build/$PLATFORM/esysUtils', duplicate=0)
304     env.SConscript(dirs = ['finley/src'], build_dir='build/$PLATFORM/finley', duplicate=0)
305    
306     # Unit Tests
307     #env.SConscript(dirs = ['escript/test'], build_dir='build/$PLATFORM/escript/test', duplicate=0)
308     #env.SConscript(dirs = ['bruce/test'], build_dir='build/$PLATFORM/bruce/test', duplicate=0)
309     #env.SConscript(dirs = ['finley/test'], build_dir='build/$PLATFORM/finley/test', duplicate=0)
310    
311     # Python
312     #env.SConscript(dirs = ['esys/py_src'], build_dir='build/$PLATFORM/esys/py', duplicate=0)# call appropriate SConscripts
313     # FIXME:modelib and pyvisi need to be incorporated into build system for it to match original one
314     #'modellib/SConstruct',
315     #'pyvisi/SConstruct']
316     # 'doc/SConstruct']
317     # 'doc/SConstruct']
318    
319     # FIXME: REMOVE THIS OLD STUFF
320     # Original SConstruct file contents (minus the bits that have been replaced)
321     #target_scripts = [
322     # 'modellib/SConstruct',
323     # 'pyvisi/SConstruct']
324 gross 584 # 'doc/SConstruct']
325 gross 602 # 'doc/SConstruct']
326 jgs 214
327 robwdcock 623 #SConscript(target_scripts, duplicate=0)
328    

  ViewVC Help
Powered by ViewVC 1.1.26