/[escript]/trunk/SConstruct
ViewVC logotype

Annotation of /trunk/SConstruct

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1248 - (hide annotations)
Tue Aug 14 05:20:39 2007 UTC (11 years, 11 months ago) by phornby
File size: 25552 byte(s)
Prepend various shareable library locations to PATH rather than appending.

Add (empty) include directory to the repository.

Impact of adding lib, include and esys dirs to repository.
You will need to move these aside in any checked out tree before doing an update.
1 jongui 961 # Copyright 2006 by ACcESS MNRF
2 jgs 214 #
3 matt 863 # http://www.access.edu.au
4     # Primary Business: Queensland, Australia
5     # Licensed under the Open Software License version 3.0
6     # http://www.opensource.org/licenses/osl-3.0.php
7 jgs 455
8 robwdcock 682 # top-level Scons configuration file for all esys13 modules
9     # Begin initialisation Section
10 matt 863 # all of this section just intialises default environments and helper
11 robwdcock 682 # scripts. You shouldn't need to modify this section.
12     EnsureSConsVersion(0,96,91)
13     EnsurePythonVersion(2,3)
14 jgs 214
15 gross 1133 #===============================================================
16     # import tools:
17 gross 700 import glob
18 ksteube 1247 import sys, os, re
19 robwdcock 682 # Add our extensions
20     if sys.path.count('scons')==0: sys.path.append('scons')
21     import scons_extensions
22 jgs 192
23 gross 1133 #===============================================================
24 gross 806
25 phornby 1232 tools_prefix="/usr"
26 gross 806
27 gross 1133 #==============================================================================================
28     #
29 ksteube 1215 # get the installation prefix
30 gross 1133 #
31 phornby 1243 prefix = ARGUMENTS.get('prefix', '/usr')
32 ksteube 1217
33     # We may also need to know where python's site-packages subdirectory lives
34     python_version = 'python%s.%s'%(sys.version_info[0],sys.version_info[1])
35    
36 phornby 1243 # Install as a standard python package in /usr/lib64 if available, else in /usr/lib
37     if os.path.isdir( prefix+"/lib64/"+python_version+"/site-packages"):
38     sys_dir_packages = prefix+"/lib64/"+python_version+"/site-packages/esys"
39     sys_dir_libraries = prefix+"/lib64"
40 ksteube 1217 else:
41 phornby 1243 sys_dir_packages = prefix+"/lib/"+python_version+"/site-packages/esys"
42     sys_dir_libraries = prefix+"/lib"
43 ksteube 1217
44 phornby 1243 sys_dir_examples = prefix+"/share/doc/esys"
45    
46     source_root = Dir('#.').abspath
47    
48     dir_packages = os.path.join(source_root,"esys")
49     dir_examples = os.path.join(source_root,"examples")
50     dir_libraries = os.path.join(source_root,"lib")
51    
52     print " Default packages local installation: ", dir_packages
53     print " Default library local installation ", dir_libraries
54     print " Default example local installation: ", dir_examples
55 gross 1133 print "Install prefix is: ", prefix
56 phornby 1243 print " Default packages system installation: ", sys_dir_packages
57     print " Default library system installation ", sys_dir_libraries
58     print " Default example system installation: ", sys_dir_examples
59 gross 806
60 ksteube 1217 #==============================================================================================
61    
62 robwdcock 682 # Default options and options help text
63     # These are defaults and can be overridden using command line arguments or an options file.
64     # if the options_file or ARGUMENTS do not exist then the ones listed as default here are used
65     # DO NOT CHANGE THEM HERE
66 ksteube 1083 # Where to install?
67 gross 1133 #==============================================================================================
68     #
69     # get the options file if present:
70     #
71 phornby 1246 options_file = ARGUMENTS.get('options_file','')
72    
73     if not os.path.isfile(options_file) :
74     options_file = False
75    
76     if not options_file :
77     import socket
78 robwdcock 682 from string import ascii_letters,digits
79     hostname=""
80     for s in socket.gethostname().split('.')[0]:
81     if s in ascii_letters+digits:
82     hostname+=s
83     else:
84     hostname+="_"
85 phornby 1246 tmp = os.path.join("scons",hostname+"_options.py")
86    
87     if os.path.isfile(tmp) :
88     options_file = tmp
89    
90     IS_WINDOWS_PLATFORM = (os.name== "nt")
91    
92     # If you're not going to tell me then......
93     # FIXME: add one for the altix too.
94     if not options_file :
95     if IS_WINDOWS_PLATFORM :
96     options_file = "scons/windows_mscv71_options.py"
97     else:
98     options_file = "scons/linux_gcc_eg_options.py"
99    
100 gross 1133 # and load it
101     opts = Options(options_file, ARGUMENTS)
102     #================================================================
103     #
104     # check if UMFPACK is installed on the system:
105     #
106 gross 1149 uf_root=None
107     for i in [ 'UMFPACK', 'umfpack', 'ufsparse', 'UFSPARSE']:
108     if os.path.isdir(os.path.join(tools_prefix,'include',i)):
109     uf_root=i
110     print i," is used form ",tools_prefix
111     break
112     if not uf_root==None:
113     umf_path_default=os.path.join(tools_prefix,'include',uf_root)
114     umf_lib_path_default=os.path.join(tools_prefix,'lib')
115     umf_libs_default=['umfpack']
116     amd_path_default=os.path.join(tools_prefix,'include',uf_root)
117     amd_lib_path_default=os.path.join(tools_prefix,'lib')
118     amd_libs_default=['amd']
119     ufc_path_default=os.path.join(tools_prefix,'include',uf_root)
120 gross 1133 else:
121 gross 1149 umf_path_default=None
122     umf_lib_path_default=None
123     umf_libs_default=None
124     amd_path_default=None
125     amd_lib_path_default=None
126     amd_libs_default=None
127     ufc_path_default=None
128     #
129 gross 1133 #==========================================================================
130     #
131     # python installation:
132     #
133 phornby 1232 python_path_default=os.path.join(tools_prefix,'include','python%s.%s'%(sys.version_info[0],sys.version_info[1]))
134     python_lib_path_default=os.path.join(tools_prefix,'lib')
135 phornby 1235 python_lib_default="python%s.%s"%(sys.version_info[0],sys.version_info[1])
136 gross 1149
137 gross 1133 #==========================================================================
138     #
139     # boost installation:
140     #
141 phornby 1232 boost_path_default=os.path.join(tools_prefix,'include')
142 phornby 1235 boost_lib_path_default=os.path.join(tools_prefix,'lib')
143     boost_lib_default=['boost_python']
144 gross 1133 #==========================================================================
145     #
146     # check if netCDF is installed on the system:
147     #
148 phornby 1232 netCDF_path_default=os.path.join(tools_prefix,'include','netcdf-3')
149     netCDF_lib_path_default=os.path.join(tools_prefix,'lib','netcdf-3')
150 gross 1149
151     if os.path.isdir(netCDF_path_default) and os.path.isdir(netCDF_lib_path_default):
152     useNetCDF_default='yes'
153     netCDF_libs_default=[ 'netcdf_c++', 'netcdf' ]
154     else:
155     useNetCDF_default='no'
156     netCDF_path_default=None
157     netCDF_lib_path_default=None
158     netCDF_libs_default=None
159    
160 gross 1133 #==========================================================================
161     #
162     # compile:
163     #
164 phornby 1232 cc_flags_default='-O3 -std=c99 -ffast-math -fpic -Wno-unknown-pragmas -ansi -pedantic-errors'
165     cc_flags_debug_default='-g -O0 -ffast-math -std=c99 -fpic -Wno-unknown-pragmas -ansi -pedantic-errors'
166     cxx_flags_default='--no-warn -ansi'
167     cxx_flags_debug_default='--no-warn -ansi -DDOASSERT'
168 gross 1133 #==============================================================================================
169     # Default options and options help text
170     # These are defaults and can be overridden using command line arguments or an options file.
171     # if the options_file or ARGUMENTS do not exist then the ones listed as default here are used
172     # DO NOT CHANGE THEM HERE
173 robwdcock 682 opts.AddOptions(
174     # Where to install esys stuff
175 ksteube 1217 ('incinstall', 'where the esys headers will be installed', Dir('#.').abspath+'/include'),
176     ('libinstall', 'where the esys libraries will be installed', dir_libraries),
177     ('pyinstall', 'where the esys python modules will be installed', dir_packages),
178     ('exinstall', 'where the esys examples will be installed', dir_examples),
179 phornby 1243 ('sys_libinstall', 'where the system esys libraries will be installed', sys_dir_libraries),
180     ('sys_pyinstall', 'where the system esys python modules will be installed', sys_dir_packages),
181     ('sys_exinstall', 'where the system esys examples will be installed', sys_dir_examples),
182 ksteube 1217 ('src_zipfile', 'the source zip file will be installed.', Dir('#.').abspath+"/release/escript_src.zip"),
183     ('test_zipfile', 'the test zip file will be installed.', Dir('#.').abspath+"/release/escript_tests.zip"),
184     ('src_tarfile', 'the source tar file will be installed.', Dir('#.').abspath+"/release/escript_src.tar.gz"),
185     ('test_tarfile', 'the test tar file will be installed.', Dir('#.').abspath+"/release/escript_tests.tar.gz"),
186     ('examples_tarfile', 'the examples tar file will be installed.', Dir('#.').abspath+"/release/doc/escript_examples.tar.gz"),
187     ('examples_zipfile', 'the examples zip file will be installed.', Dir('#.').abspath+"/release/doc/escript_examples.zip"),
188     ('guide_pdf', 'name of the user guide in pdf format', Dir('#.').abspath+"/release/doc/user/guide.pdf"),
189     ('api_epydoc', 'name of the epydoc api docs directory', Dir('#.').abspath+"/release/doc/epydoc"),
190     ('guide_html', 'name of the directory for user guide in html format', Dir('#.').abspath+"/release/doc/user/html"),
191 ksteube 1215 ('api_doxygen', 'name of the doxygen api docs directory',prefix+"/release/doc/doxygen"),
192 robwdcock 682 # Compilation options
193 gross 700 BoolOption('dodebug', 'Do you want a debug build?', 'no'),
194 gross 1133 ('options_file', "Optional file containing preferred options. Ignored if it doesn't exist (default: scons/<hostname>_options.py)", options_file),
195 robwdcock 682 ('cc_defines','C/C++ defines to use', None),
196 gross 1133 ('cc_flags','C compiler flags to use (Release build)', cc_flags_default),
197     ('cc_flags_debug', 'C compiler flags to use (Debug build)', cc_flags_debug_default),
198     ('cxx_flags', 'C++ compiler flags to use (Release build)', cxx_flags_default),
199     ('cxx_flags_debug', 'C++ compiler flags to use (Debug build)', cxx_flags_debug_default),
200 robwdcock 682 ('ar_flags', 'Static library archiver flags to use', None),
201     ('sys_libs', 'System libraries to link with', None),
202 gross 700 ('tar_flags','flags for zip files','-c -z'),
203 robwdcock 682 # MKL
204 matt 863 PathOption('mkl_path', 'Path to MKL includes', None),
205     PathOption('mkl_lib_path', 'Path to MKL libs', None),
206 robwdcock 682 ('mkl_libs', 'MKL libraries to link with', None),
207     # SCSL
208 matt 863 PathOption('scsl_path', 'Path to SCSL includes', None),
209     PathOption('scsl_lib_path', 'Path to SCSL libs', None),
210 robwdcock 682 ('scsl_libs', 'SCSL libraries to link with', None),
211 bcumming 759 ('scsl_libs_MPI', 'SCSL libraries to link with for MPI build', None),
212 matt 863 # UMFPACK
213     PathOption('ufc_path', 'Path to UFconfig includes', ufc_path_default),
214     PathOption('umf_path', 'Path to UMFPACK includes', umf_path_default),
215     PathOption('umf_lib_path', 'Path to UMFPACK libs', umf_lib_path_default),
216 gross 806 ('umf_libs', 'UMFPACK libraries to link with', umf_libs_default),
217     # AMD (used by UMFPACK)
218 matt 863 PathOption('amd_path', 'Path to AMD includes', amd_path_default),
219     PathOption('amd_lib_path', 'Path to AMD libs', amd_lib_path_default),
220 gross 806 ('amd_libs', 'AMD libraries to link with', amd_libs_default),
221 gross 805 # BLAS
222 matt 863 PathOption('blas_path', 'Path to BLAS includes', None),
223     PathOption('blas_lib_path', 'Path to BLAS libs', None),
224 gross 806 ('blas_libs', 'BLAS libraries to link with', None),
225 gross 950 # netCDF
226 gross 1133 ('useNetCDF', 'switch on/off the usage of netCDF', useNetCDF_default),
227 gross 1028 PathOption('netCDF_path', 'Path to netCDF includes', netCDF_path_default),
228     PathOption('netCDF_lib_path', 'Path to netCDF libs', netCDF_lib_path_default),
229 gross 1133 ('netCDF_libs', 'netCDF C++ libraries to link with', netCDF_libs_default),
230 robwdcock 682 # Python
231 gross 685 # locations of include files for python
232 phornby 1243 # FIXME: python_path should be python_inc_path and the same for boost etc.
233 gross 1133 PathOption('python_path', 'Path to Python includes', python_path_default),
234     PathOption('python_lib_path', 'Path to Python libs', python_lib_path_default),
235 phornby 1235 ('python_lib', 'Python libraries to link with', python_lib_default),
236 phornby 1243 ('python_cmd', 'Python command', 'python'),
237 robwdcock 682 # Boost
238 gross 1133 PathOption('boost_path', 'Path to Boost includes', boost_path_default),
239 phornby 1235 PathOption('boost_lib_path', 'Path to Boost libs', boost_lib_path_default),
240     ('boost_lib', 'Boost libraries to link with', boost_lib_default),
241 robwdcock 682 # Doc building
242 ksteube 1216 # PathOption('doxygen_path', 'Path to Doxygen executable', None),
243 matt 863 # PathOption('epydoc_path', 'Path to Epydoc executable', None),
244 robwdcock 682 # PAPI
245 matt 863 PathOption('papi_path', 'Path to PAPI includes', None),
246     PathOption('papi_lib_path', 'Path to PAPI libs', None),
247 robwdcock 682 ('papi_libs', 'PAPI libraries to link with', None),
248 bcumming 759 # MPI
249     BoolOption('useMPI', 'Compile parallel version using MPI', 'no'),
250 robwdcock 682 )
251 gross 1133 #=================================================================================================
252     #
253     # Note: On the Altix the intel compilers are not automatically
254     # detected by scons intelc.py script. The Altix has a different directory
255     # path and in some locations the "modules" facility is used to support
256     # multiple compiler versions. This forces the need to import the users PATH
257     # environment which isn't the "scons way"
258     # 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)
259     # FIXME: Perhaps a modification to intelc.py will allow better support for ia64 on altix
260     #
261 phornby 1232
262 gross 1133 if IS_WINDOWS_PLATFORM:
263     env = Environment(tools = ['default', 'msvc'], options = opts)
264 robwdcock 682 else:
265 gross 1133 if os.uname()[4]=='ia64':
266     env = Environment(tools = ['default', 'intelc'], options = opts)
267     if env['CXX'] == 'icpc':
268     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
269     else:
270     env = Environment(tools = ['default'], options = opts)
271     Help(opts.GenerateHelpText(env))
272 phornby 1232
273 gross 1133 #=================================================================================================
274     #
275     # Initialise Scons Build Environment
276     # check for user environment variables we are interested in
277 gross 1024 try:
278 phornby 1243 tmp = os.environ['PYTHONPATH']
279     env['ENV']['PYTHONPATH'] = tmp
280 gross 1024 except KeyError:
281 phornby 1243 pass
282 gross 1024
283 phornby 1243 env.PrependENVPath('PYTHONPATH', source_root)
284    
285 gross 1024 try:
286 gross 1160 omp_num_threads = os.environ['OMP_NUM_THREADS']
287     except KeyError:
288     omp_num_threads = 1
289 phornby 1243
290 gross 1160 env['ENV']['OMP_NUM_THREADS'] = omp_num_threads
291    
292     try:
293 gross 1163 env['ENV']['DISPLAY'] = os.environ['DISPLAY']
294 jongui 1164 env['ENV']['XAUTHORITY'] = os.environ['XAUTHORITY']
295 gross 1163 except KeyError:
296     pass
297    
298     try:
299 phornby 1243 tmp = os.environ['PATH']
300     env['ENV']['PATH'] = tmp
301 gross 1024 except KeyError:
302 phornby 1243 pass
303    
304 gross 1024 try:
305 phornby 1243 tmp = os.environ['LD_LIBRARY_PATH']
306     env['ENV']['LD_LIBRARY_PATH'] = tmp
307 gross 1024 except KeyError:
308 phornby 1243 pass
309 gross 1133 #==========================================================================
310     #
311     # Add some customer builders
312     #
313 robwdcock 682 py_builder = Builder(action = scons_extensions.build_py, suffix = '.pyc', src_suffix = '.py', single_source=True)
314     env.Append(BUILDERS = {'PyCompile' : py_builder});
315    
316 phornby 1244 runUnitTest_builder = Builder(action = scons_extensions.runUnitTest, suffix = '.passed',
317     src_suffix=env['PROGSUFFIX'], single_source=True)
318    
319 robwdcock 682 env.Append(BUILDERS = {'RunUnitTest' : runUnitTest_builder});
320    
321     runPyUnitTest_builder = Builder(action = scons_extensions.runPyUnitTest, suffix = '.passed', src_suffic='.py', single_source=True)
322     env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});
323    
324     # Convert the options which are held in environment variable into python variables for ease of handling and configure compilation options
325     try:
326     incinstall = env['incinstall']
327     env.Append(CPPPATH = [incinstall,])
328     except KeyError:
329 matt 863 incinstall = None
330 robwdcock 682 try:
331     libinstall = env['libinstall']
332 ksteube 1215 env.Append(LIBPATH = [libinstall,]) # Adds -L for building of libescript.so libfinley.so escriptcpp.so finleycpp.so
333 robwdcock 682 env.PrependENVPath('LD_LIBRARY_PATH', libinstall)
334 phornby 1248 if IS_WINDOWS_PLATFORM :
335 woo409 757 env.PrependENVPath('PATH', libinstall)
336 robwdcock 682 except KeyError:
337 matt 863 libinstall = None
338 robwdcock 682 try:
339 ksteube 1217 pyinstall = env['pyinstall'] # all targets will install into pyinstall/esys but PYTHONPATH points at straight pyinstall so you go import esys.escript etc
340 robwdcock 682 except KeyError:
341 matt 863 pyinstall = None
342 robwdcock 682 try:
343 ksteube 1217 exinstall = env['exinstall']
344     except KeyError:
345     exinstall = None
346     try:
347 phornby 1243 sys_libinstall = env['sys_libinstall']
348     except KeyError:
349     sys_libinstall = None
350     try:
351     sys_pyinstall = env['sys_pyinstall']
352     except KeyError:
353     sys_pyinstall = None
354     try:
355     sys_exinstall = env['sys_exinstall']
356     except KeyError:
357     sys_exinstall = None
358     try:
359 robwdcock 682 dodebug = env['dodebug']
360     except KeyError:
361 matt 863 dodebug = None
362 robwdcock 682 try:
363 bcumming 759 useMPI = env['useMPI']
364     except KeyError:
365 matt 863 useMPI = None
366 bcumming 759 try:
367 robwdcock 682 cc_defines = env['cc_defines']
368 woo409 757 env.Append(CPPDEFINES = cc_defines)
369 robwdcock 682 except KeyError:
370     pass
371 ksteube 817
372 phornby 1246
373 robwdcock 682 if dodebug:
374 bcumming 759 if useMPI:
375     try:
376     flags = env['cc_flags_debug_MPI']
377     env.Append(CCFLAGS = flags)
378     except KeyError:
379     pass
380 matt 863 else:
381 bcumming 759 try:
382 robwdcock 682 flags = env['cc_flags_debug']
383     env.Append(CCFLAGS = flags)
384 bcumming 759 except KeyError:
385 robwdcock 682 pass
386     else:
387 bcumming 759 if useMPI:
388 robwdcock 682 try:
389 bcumming 759 flags = env['cc_flags_MPI']
390     env.Append(CCFLAGS = flags)
391     except KeyError:
392     pass
393     else:
394     try:
395 robwdcock 682 flags = env['cc_flags']
396     env.Append(CCFLAGS = flags)
397     except KeyError:
398     pass
399     if dodebug:
400 bcumming 759 if useMPI:
401     try:
402     flags = env['cxx_flags_debug_MPI']
403     env.Append(CXXFLAGS = flags)
404     except KeyError:
405     pass
406     else:
407     try:
408     flags = env['cxx_flags_debug']
409     env.Append(CXXFLAGS = flags)
410     except KeyError:
411     pass
412 robwdcock 682 else:
413 bcumming 759 if useMPI:
414     try:
415     flags = env['cxx_flags_MPI']
416     env.Append(CXXFLAGS = flags)
417     except KeyError:
418     pass
419     else:
420     try:
421     flags = env['cxx_flags']
422     env.Append(CXXFLAGS = flags)
423     except KeyError:
424     pass
425 robwdcock 682 try:
426     flags = env['ar_flags']
427     env.Append(ARFLAGS = flags)
428     except KeyError:
429 matt 863 ar_flags = None
430 robwdcock 682 try:
431     sys_libs = env['sys_libs']
432     except KeyError:
433 gross 1133 sys_libs = []
434 robwdcock 682
435     try:
436 gross 700 tar_flags = env['tar_flags']
437     env.Replace(TARFLAGS = tar_flags)
438     except KeyError:
439     pass
440    
441     try:
442 robwdcock 682 includes = env['mkl_path']
443     env.Append(CPPPATH = [includes,])
444     except KeyError:
445     pass
446 gross 700
447 robwdcock 682 try:
448     lib_path = env['mkl_lib_path']
449     env.Append(LIBPATH = [lib_path,])
450     except KeyError:
451     pass
452 gross 700
453 gross 806 if useMPI:
454 gross 1133 mkl_libs = []
455 gross 806 else:
456     try:
457     mkl_libs = env['mkl_libs']
458     except KeyError:
459 gross 1133 mkl_libs = []
460 gross 806
461 robwdcock 682 try:
462     includes = env['scsl_path']
463     env.Append(CPPPATH = [includes,])
464     except KeyError:
465     pass
466 gross 806
467 robwdcock 682 try:
468     lib_path = env['scsl_lib_path']
469     env.Append(LIBPATH = [lib_path,])
470     except KeyError:
471     pass
472 gross 806
473 matt 863 if useMPI:
474 bcumming 759 try:
475     scsl_libs = env['scsl_libs_MPI']
476     except KeyError:
477 gross 1133 scsl_libs = []
478 matt 863 else:
479 bcumming 759 try:
480     scsl_libs = env['scsl_libs']
481     except KeyError:
482 gross 1133 scsl_libs = []
483 gross 805
484 robwdcock 682 try:
485     includes = env['umf_path']
486     env.Append(CPPPATH = [includes,])
487     except KeyError:
488     pass
489 gross 805
490 robwdcock 682 try:
491     lib_path = env['umf_lib_path']
492     env.Append(LIBPATH = [lib_path,])
493     except KeyError:
494     pass
495 gross 805
496 matt 863 if useMPI:
497 gross 1133 umf_libs = []
498 gross 806 else:
499     try:
500     umf_libs = env['umf_libs']
501     except KeyError:
502 gross 1133 umf_libs = []
503 gross 806
504 robwdcock 682 try:
505 gross 806 includes = env['ufc_path']
506     env.Append(CPPPATH = [includes,])
507 gross 805 except KeyError:
508     pass
509    
510     try:
511 gross 806 includes = env['amd_path']
512     env.Append(CPPPATH = [includes,])
513 robwdcock 682 except KeyError:
514 gross 806 pass
515 gross 805
516 robwdcock 682 try:
517 gross 806 lib_path = env['amd_lib_path']
518     env.Append(LIBPATH = [lib_path,])
519     except KeyError:
520     pass
521    
522 matt 863 if useMPI:
523 gross 1133 amd_libs = []
524 gross 806 else:
525     try:
526     amd_libs = env['amd_libs']
527     except KeyError:
528 gross 1133 amd_libs = []
529 gross 806
530     try:
531 gross 805 includes = env['blas_path']
532     env.Append(CPPPATH = [includes,])
533     except KeyError:
534     pass
535 gross 806
536 gross 805 try:
537     lib_path = env['blas_lib_path']
538     env.Append(LIBPATH = [lib_path,])
539     except KeyError:
540     pass
541 gross 806
542 gross 805 try:
543     blas_libs = env['blas_libs']
544     except KeyError:
545 gross 1133 blas_libs = []
546 gross 805
547     try:
548 gross 1023 useNetCDF = env['useNetCDF']
549 gross 950 except KeyError:
550 gross 1023 useNetCDF = 'yes'
551 gross 950 pass
552    
553 gross 1023 if useNetCDF == 'yes':
554     try:
555 phornby 1246 netCDF_libs = env['netCDF_libs']
556     except KeyError:
557     pass
558    
559     env.Append(LIBS = netCDF_libs)
560     env.Append(CPPDEFINES = [ 'USE_NETCDF' ])
561     try:
562 gross 1023 includes = env['netCDF_path']
563     env.Append(CPPPATH = [includes,])
564     except KeyError:
565     pass
566 gross 950
567 gross 1023 try:
568     lib_path = env['netCDF_lib_path']
569 gross 1133 env.Append(LIBPATH = [ lib_path, ])
570 phornby 1248 if IS_WINDOWS_PLATFORM :
571     env.PrependENVPath('PATH', lib_path)
572 gross 1023 except KeyError:
573     pass
574     else:
575 phornby 1246 print "Warning: Installation is not configured with netCDF. Some I/O function may not be available."
576 gross 1133 netCDF_libs=[ ]
577 gross 1023
578 gross 950 try:
579 robwdcock 682 includes = env['boost_path']
580     env.Append(CPPPATH = [includes,])
581     except KeyError:
582     pass
583     try:
584 phornby 1235 lib_path = env['boost_lib_path']
585 robwdcock 682 env.Append(LIBPATH = [lib_path,])
586 phornby 1248 if IS_WINDOWS_PLATFORM :
587     env.PrependENVPath('PATH', lib_path)
588 robwdcock 682 except KeyError:
589     pass
590     try:
591 phornby 1235 boost_lib = env['boost_lib']
592 robwdcock 682 except KeyError:
593 phornby 1235 boost_lib = None
594 robwdcock 682 try:
595     includes = env['python_path']
596     env.Append(CPPPATH = [includes,])
597     except KeyError:
598     pass
599     try:
600     lib_path = env['python_lib_path']
601     env.Append(LIBPATH = [lib_path,])
602     except KeyError:
603     pass
604     try:
605 phornby 1235 python_lib = env['python_lib']
606 robwdcock 682 except KeyError:
607 phornby 1235 python_lib = None
608 robwdcock 682 try:
609     doxygen_path = env['doxygen_path']
610     except KeyError:
611 matt 863 doxygen_path = None
612 robwdcock 682 try:
613     epydoc_path = env['epydoc_path']
614     except KeyError:
615 matt 863 epydoc_path = None
616 robwdcock 682 try:
617     includes = env['papi_path']
618     env.Append(CPPPATH = [includes,])
619     except KeyError:
620     pass
621     try:
622     lib_path = env['papi_lib_path']
623     env.Append(LIBPATH = [lib_path,])
624     except KeyError:
625     pass
626     try:
627     papi_libs = env['papi_libs']
628     except KeyError:
629 matt 863 papi_libs = None
630 robwdcock 682
631 gross 707
632 gross 700 try:
633 gross 707 src_zipfile = env.File(env['src_zipfile'])
634 gross 700 except KeyError:
635 matt 863 src_zipfile = None
636 gross 700 try:
637 gross 707 test_zipfile = env.File(env['test_zipfile'])
638 gross 700 except KeyError:
639 matt 863 test_zipfile = None
640 gross 707 try:
641     examples_zipfile = env.File(env['examples_zipfile'])
642     except KeyError:
643 matt 863 examples_zipfile = None
644 gross 700
645     try:
646 gross 707 src_tarfile = env.File(env['src_tarfile'])
647 gross 700 except KeyError:
648 matt 863 src_tarfile = None
649 gross 700 try:
650 gross 707 test_tarfile = env.File(env['test_tarfile'])
651 gross 700 except KeyError:
652 matt 863 test_tarfile = None
653 gross 707 try:
654     examples_tarfile = env.File(env['examples_tarfile'])
655     except KeyError:
656 matt 863 examples_tarfile = None
657 gross 700
658     try:
659 gross 707 guide_pdf = env.File(env['guide_pdf'])
660 gross 700 except KeyError:
661 matt 863 guide_pdf = None
662 gross 700
663 gross 707 try:
664     guide_html_index = env.File('index.htm',env['guide_html'])
665     except KeyError:
666 matt 863 guide_html_index = None
667 gross 707
668 elspeth 712 try:
669     api_epydoc = env.Dir(env['api_epydoc'])
670     except KeyError:
671 matt 863 api_epydoc = None
672 elspeth 712
673 ksteube 1215 try:
674     api_doxygen = env.Dir(env['api_doxygen'])
675     except KeyError:
676     api_doxygen = None
677    
678 ksteube 1247 try:
679     svn_pipe = os.popen("svn info | grep '^Revision'")
680     rev = svn_pipe.readlines()
681     svn_pipe.close()
682     svn_version = re.sub("[^0-9]", "", rev[0])
683     except:
684     svn_version = "0"
685     env.Append(CPPDEFINES = "SVN_VERSION="+svn_version)
686    
687 phornby 1246 # Python install - esys __init__.py
688     init_target = env.Command(pyinstall+'/__init__.py', None, Touch('$TARGET'))
689 phornby 1243
690     # FIXME: exinstall and friends related to examples are not working.
691 phornby 1246 build_target = env.Alias('build',[libinstall,incinstall,pyinstall,init_target])
692 phornby 1243
693     env.Default(build_target)
694    
695 gross 700 # Zipgets
696 matt 863 env.Alias('release_src',[ src_zipfile, src_tarfile ])
697 gross 700 env.Alias('release_tests',[ test_zipfile, test_tarfile])
698 gross 707 env.Alias('release_examples',[ examples_zipfile, examples_tarfile])
699 ksteube 1215 env.Alias('examples_zipfile',examples_zipfile)
700     env.Alias('examples_tarfile',examples_tarfile)
701 gross 720 env.Alias('api_epydoc',api_epydoc)
702 ksteube 1215 env.Alias('api_doxygen',api_doxygen)
703     env.Alias('guide_html_index',guide_html_index)
704 gross 807 env.Alias('guide_pdf', guide_pdf)
705 ksteube 1216 env.Alias('docs',[ 'release_examples', 'guide_pdf', api_epydoc, api_doxygen, guide_html_index])
706 gross 707 env.Alias('release', ['release_src', 'release_tests', 'docs'])
707 phornby 1243
708 phornby 1246 env.Alias('build_tests',build_target) # target to build all C++ tests
709     env.Alias('build_py_tests',build_target) # target to build all python tests
710 gross 706 env.Alias('build_all_tests', [ 'build_tests', 'build_py_tests' ] ) # target to build all python tests
711     env.Alias('run_tests', 'build_tests') # target to run all C++ test
712     env.Alias('py_tests', 'build_py_tests') # taget to run all released python tests
713 gross 705 env.Alias('all_tests', ['run_tests', 'py_tests']) # target to run all C++ and released python tests
714 robwdcock 682
715    
716     # Allow sconscripts to see the env
717 phornby 1246 Export(["env", "incinstall", "libinstall", "pyinstall", "exinstall", "dodebug",
718     "mkl_libs", "scsl_libs", "umf_libs", "amd_libs", "blas_libs",
719     "netCDF_libs",
720 phornby 1235 "boost_lib", "python_lib", "doxygen_path", "epydoc_path", "papi_libs",
721 phornby 1246 "sys_libs", "test_zipfile", "src_zipfile", "test_tarfile",
722     "src_tarfile", "examples_tarfile", "examples_zipfile",
723     "guide_pdf", "guide_html_index", "api_epydoc", "api_doxygen", "useMPI"
724     ])
725 robwdcock 682
726     # End initialisation section
727     # Begin configuration section
728 gross 700 # adds this file and the scons option directore to the source tar
729     release_srcfiles=[env.File('SConstruct'),]+[ env.File(x) for x in glob.glob('scons/*.py') ]
730     release_testfiles=[env.File('README_TESTS'),]
731 gross 706 env.Zip(src_zipfile, release_srcfiles)
732 gross 700 env.Zip(test_zipfile, release_testfiles)
733 gross 1133 try:
734     env.Tar(src_tarfile, release_srcfiles)
735     env.Tar(test_tarfile, release_testfiles)
736     except AttributeError:
737     pass
738 robwdcock 682 # Insert new components to be build here
739     # FIXME: might be nice to replace this verbosity with a list of targets and some
740     # FIXME: nifty python to create the lengthy but very similar env.Sconscript lines
741     # Third Party libraries
742     env.SConscript(dirs = ['tools/CppUnitTest/src'], build_dir='build/$PLATFORM/tools/CppUnitTest', duplicate=0)
743     # C/C++ Libraries
744     env.SConscript(dirs = ['paso/src'], build_dir='build/$PLATFORM/paso', duplicate=0)
745 gross 958 # bruce is removed for now as it doesn't really do anything
746     # env.SConscript(dirs = ['bruce/src'], build_dir='build/$PLATFORM/bruce', duplicate=0)
747 robwdcock 682 env.SConscript(dirs = ['escript/src'], build_dir='build/$PLATFORM/escript', duplicate=0)
748     env.SConscript(dirs = ['esysUtils/src'], build_dir='build/$PLATFORM/esysUtils', duplicate=0)
749     env.SConscript(dirs = ['finley/src'], build_dir='build/$PLATFORM/finley', duplicate=0)
750     env.SConscript(dirs = ['modellib/py_src'], build_dir='build/$PLATFORM/modellib', duplicate=0)
751 gross 707 env.SConscript(dirs = ['doc'], build_dir='build/$PLATFORM/doc', duplicate=0)
752 matt 863 env.SConscript(dirs = ['pyvisi/py_src'], build_dir='build/$PLATFORM/pyvisi', duplicate=0)
753 gross 898 env.SConscript(dirs = ['pycad/py_src'], build_dir='build/$PLATFORM/pycad', duplicate=0)
754 bcumming 751
755     # added by Ben Cumming
756 matt 863 env.SConscript(dirs = ['pythonMPI/src'], build_dir='build/$PLATFORM/pythonMPI', duplicate=0)
757 bcumming 784 #env.SConscript(dirs = ['../test'], build_dir='../test/build', duplicate=0)
758 phornby 1243
759    
760     syslib_install_target = env.installDirectory(sys_libinstall,libinstall)
761     syspy_install_target = env.installDirectory(sys_pyinstall,pyinstall,recursive=True)
762    
763     install_target = env.Alias("install", env.Flatten([syslib_install_target, syspy_install_target]) )

  ViewVC Help
Powered by ViewVC 1.1.26