/[escript]/temp/SConstruct
ViewVC logotype

Contents of /temp/SConstruct

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1246 - (show annotations)
Mon Aug 13 22:09:00 2007 UTC (11 years, 5 months ago) by phornby
Original Path: trunk/SConstruct
File size: 25288 byte(s)
Add the esys and lib directories to the repository.
Remove the IS_WINDOWS_PLATFORM from the SConscripts, and
do the logic once in SConstruct.
SConstruct now includes example options files if the hostname_options file is not present. 
This needs some more work for the altix.
The tests now depend upon the build target. This is important it seems, as there appears to be the
possibility of calling linking different libraries
against incompatible versions of sub-libraries. 
This addressed most of the exceptions we were getting on windows.
All the useNetCDF logic is now done by SConstruct.
Made the init_target part of the build alias so that __ini__.py is created on a fresh checkout.

py_tests mostly pass on windows, only need to track down the exception in run_tests.
1 # Copyright 2006 by ACcESS MNRF
2 #
3 # 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
8 # top-level Scons configuration file for all esys13 modules
9 # Begin initialisation Section
10 # all of this section just intialises default environments and helper
11 # scripts. You shouldn't need to modify this section.
12 EnsureSConsVersion(0,96,91)
13 EnsurePythonVersion(2,3)
14
15 #===============================================================
16 # import tools:
17 import glob
18 import sys, os
19 # Add our extensions
20 if sys.path.count('scons')==0: sys.path.append('scons')
21 import scons_extensions
22
23 #===============================================================
24
25 tools_prefix="/usr"
26
27 #==============================================================================================
28 #
29 # get the installation prefix
30 #
31 prefix = ARGUMENTS.get('prefix', '/usr')
32
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 # 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 else:
41 sys_dir_packages = prefix+"/lib/"+python_version+"/site-packages/esys"
42 sys_dir_libraries = prefix+"/lib"
43
44 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 print "Install prefix is: ", prefix
56 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
60 #==============================================================================================
61
62 # 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 # Where to install?
67 #==============================================================================================
68 #
69 # get the options file if present:
70 #
71 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 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 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 # and load it
101 opts = Options(options_file, ARGUMENTS)
102 #================================================================
103 #
104 # check if UMFPACK is installed on the system:
105 #
106 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 else:
121 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 #==========================================================================
130 #
131 # python installation:
132 #
133 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 python_lib_default="python%s.%s"%(sys.version_info[0],sys.version_info[1])
136
137 #==========================================================================
138 #
139 # boost installation:
140 #
141 boost_path_default=os.path.join(tools_prefix,'include')
142 boost_lib_path_default=os.path.join(tools_prefix,'lib')
143 boost_lib_default=['boost_python']
144 #==========================================================================
145 #
146 # check if netCDF is installed on the system:
147 #
148 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
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 #==========================================================================
161 #
162 # compile:
163 #
164 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 #==============================================================================================
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 opts.AddOptions(
174 # Where to install esys stuff
175 ('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 ('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 ('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 ('api_doxygen', 'name of the doxygen api docs directory',prefix+"/release/doc/doxygen"),
192 # Compilation options
193 BoolOption('dodebug', 'Do you want a debug build?', 'no'),
194 ('options_file', "Optional file containing preferred options. Ignored if it doesn't exist (default: scons/<hostname>_options.py)", options_file),
195 ('cc_defines','C/C++ defines to use', None),
196 ('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 ('ar_flags', 'Static library archiver flags to use', None),
201 ('sys_libs', 'System libraries to link with', None),
202 ('tar_flags','flags for zip files','-c -z'),
203 # MKL
204 PathOption('mkl_path', 'Path to MKL includes', None),
205 PathOption('mkl_lib_path', 'Path to MKL libs', None),
206 ('mkl_libs', 'MKL libraries to link with', None),
207 # SCSL
208 PathOption('scsl_path', 'Path to SCSL includes', None),
209 PathOption('scsl_lib_path', 'Path to SCSL libs', None),
210 ('scsl_libs', 'SCSL libraries to link with', None),
211 ('scsl_libs_MPI', 'SCSL libraries to link with for MPI build', None),
212 # 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 ('umf_libs', 'UMFPACK libraries to link with', umf_libs_default),
217 # AMD (used by UMFPACK)
218 PathOption('amd_path', 'Path to AMD includes', amd_path_default),
219 PathOption('amd_lib_path', 'Path to AMD libs', amd_lib_path_default),
220 ('amd_libs', 'AMD libraries to link with', amd_libs_default),
221 # BLAS
222 PathOption('blas_path', 'Path to BLAS includes', None),
223 PathOption('blas_lib_path', 'Path to BLAS libs', None),
224 ('blas_libs', 'BLAS libraries to link with', None),
225 # netCDF
226 ('useNetCDF', 'switch on/off the usage of netCDF', useNetCDF_default),
227 PathOption('netCDF_path', 'Path to netCDF includes', netCDF_path_default),
228 PathOption('netCDF_lib_path', 'Path to netCDF libs', netCDF_lib_path_default),
229 ('netCDF_libs', 'netCDF C++ libraries to link with', netCDF_libs_default),
230 # Python
231 # locations of include files for python
232 # FIXME: python_path should be python_inc_path and the same for boost etc.
233 PathOption('python_path', 'Path to Python includes', python_path_default),
234 PathOption('python_lib_path', 'Path to Python libs', python_lib_path_default),
235 ('python_lib', 'Python libraries to link with', python_lib_default),
236 ('python_cmd', 'Python command', 'python'),
237 # Boost
238 PathOption('boost_path', 'Path to Boost includes', boost_path_default),
239 PathOption('boost_lib_path', 'Path to Boost libs', boost_lib_path_default),
240 ('boost_lib', 'Boost libraries to link with', boost_lib_default),
241 # Doc building
242 # PathOption('doxygen_path', 'Path to Doxygen executable', None),
243 # PathOption('epydoc_path', 'Path to Epydoc executable', None),
244 # PAPI
245 PathOption('papi_path', 'Path to PAPI includes', None),
246 PathOption('papi_lib_path', 'Path to PAPI libs', None),
247 ('papi_libs', 'PAPI libraries to link with', None),
248 # MPI
249 BoolOption('useMPI', 'Compile parallel version using MPI', 'no'),
250 )
251 #=================================================================================================
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
262 if IS_WINDOWS_PLATFORM:
263 env = Environment(tools = ['default', 'msvc'], options = opts)
264 else:
265 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
273 #=================================================================================================
274 #
275 # Initialise Scons Build Environment
276 # check for user environment variables we are interested in
277 try:
278 tmp = os.environ['PYTHONPATH']
279 env['ENV']['PYTHONPATH'] = tmp
280 except KeyError:
281 pass
282
283 env.PrependENVPath('PYTHONPATH', source_root)
284
285 try:
286 omp_num_threads = os.environ['OMP_NUM_THREADS']
287 except KeyError:
288 omp_num_threads = 1
289
290 env['ENV']['OMP_NUM_THREADS'] = omp_num_threads
291
292 try:
293 env['ENV']['DISPLAY'] = os.environ['DISPLAY']
294 env['ENV']['XAUTHORITY'] = os.environ['XAUTHORITY']
295 except KeyError:
296 pass
297
298 try:
299 tmp = os.environ['PATH']
300 env['ENV']['PATH'] = tmp
301 except KeyError:
302 pass
303
304 try:
305 tmp = os.environ['LD_LIBRARY_PATH']
306 env['ENV']['LD_LIBRARY_PATH'] = tmp
307 except KeyError:
308 pass
309 #==========================================================================
310 #
311 # Add some customer builders
312 #
313 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 runUnitTest_builder = Builder(action = scons_extensions.runUnitTest, suffix = '.passed',
317 src_suffix=env['PROGSUFFIX'], single_source=True)
318
319 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 incinstall = None
330 try:
331 libinstall = env['libinstall']
332 env.Append(LIBPATH = [libinstall,]) # Adds -L for building of libescript.so libfinley.so escriptcpp.so finleycpp.so
333 env.PrependENVPath('LD_LIBRARY_PATH', libinstall)
334 if env['PLATFORM'] == "win32":
335 env.PrependENVPath('PATH', libinstall)
336 env.PrependENVPath('PATH', env['boost_lib_path'])
337 except KeyError:
338 libinstall = None
339 try:
340 pyinstall = env['pyinstall'] # all targets will install into pyinstall/esys but PYTHONPATH points at straight pyinstall so you go import esys.escript etc
341 except KeyError:
342 pyinstall = None
343 try:
344 exinstall = env['exinstall']
345 except KeyError:
346 exinstall = None
347 try:
348 sys_libinstall = env['sys_libinstall']
349 except KeyError:
350 sys_libinstall = None
351 try:
352 sys_pyinstall = env['sys_pyinstall']
353 except KeyError:
354 sys_pyinstall = None
355 try:
356 sys_exinstall = env['sys_exinstall']
357 except KeyError:
358 sys_exinstall = None
359 try:
360 dodebug = env['dodebug']
361 except KeyError:
362 dodebug = None
363 try:
364 useMPI = env['useMPI']
365 except KeyError:
366 useMPI = None
367 try:
368 cc_defines = env['cc_defines']
369 env.Append(CPPDEFINES = cc_defines)
370 except KeyError:
371 pass
372
373
374 if dodebug:
375 if useMPI:
376 try:
377 flags = env['cc_flags_debug_MPI']
378 env.Append(CCFLAGS = flags)
379 except KeyError:
380 pass
381 else:
382 try:
383 flags = env['cc_flags_debug']
384 env.Append(CCFLAGS = flags)
385 except KeyError:
386 pass
387 else:
388 if useMPI:
389 try:
390 flags = env['cc_flags_MPI']
391 env.Append(CCFLAGS = flags)
392 except KeyError:
393 pass
394 else:
395 try:
396 flags = env['cc_flags']
397 env.Append(CCFLAGS = flags)
398 except KeyError:
399 pass
400 if dodebug:
401 if useMPI:
402 try:
403 flags = env['cxx_flags_debug_MPI']
404 env.Append(CXXFLAGS = flags)
405 except KeyError:
406 pass
407 else:
408 try:
409 flags = env['cxx_flags_debug']
410 env.Append(CXXFLAGS = flags)
411 except KeyError:
412 pass
413 else:
414 if useMPI:
415 try:
416 flags = env['cxx_flags_MPI']
417 env.Append(CXXFLAGS = flags)
418 except KeyError:
419 pass
420 else:
421 try:
422 flags = env['cxx_flags']
423 env.Append(CXXFLAGS = flags)
424 except KeyError:
425 pass
426 try:
427 flags = env['ar_flags']
428 env.Append(ARFLAGS = flags)
429 except KeyError:
430 ar_flags = None
431 try:
432 sys_libs = env['sys_libs']
433 except KeyError:
434 sys_libs = []
435
436 try:
437 tar_flags = env['tar_flags']
438 env.Replace(TARFLAGS = tar_flags)
439 except KeyError:
440 pass
441
442 try:
443 includes = env['mkl_path']
444 env.Append(CPPPATH = [includes,])
445 except KeyError:
446 pass
447
448 try:
449 lib_path = env['mkl_lib_path']
450 env.Append(LIBPATH = [lib_path,])
451 except KeyError:
452 pass
453
454 if useMPI:
455 mkl_libs = []
456 else:
457 try:
458 mkl_libs = env['mkl_libs']
459 except KeyError:
460 mkl_libs = []
461
462 try:
463 includes = env['scsl_path']
464 env.Append(CPPPATH = [includes,])
465 except KeyError:
466 pass
467
468 try:
469 lib_path = env['scsl_lib_path']
470 env.Append(LIBPATH = [lib_path,])
471 except KeyError:
472 pass
473
474 if useMPI:
475 try:
476 scsl_libs = env['scsl_libs_MPI']
477 except KeyError:
478 scsl_libs = []
479 else:
480 try:
481 scsl_libs = env['scsl_libs']
482 except KeyError:
483 scsl_libs = []
484
485 try:
486 includes = env['umf_path']
487 env.Append(CPPPATH = [includes,])
488 except KeyError:
489 pass
490
491 try:
492 lib_path = env['umf_lib_path']
493 env.Append(LIBPATH = [lib_path,])
494 except KeyError:
495 pass
496
497 if useMPI:
498 umf_libs = []
499 else:
500 try:
501 umf_libs = env['umf_libs']
502 except KeyError:
503 umf_libs = []
504
505 try:
506 includes = env['ufc_path']
507 env.Append(CPPPATH = [includes,])
508 except KeyError:
509 pass
510
511 try:
512 includes = env['amd_path']
513 env.Append(CPPPATH = [includes,])
514 except KeyError:
515 pass
516
517 try:
518 lib_path = env['amd_lib_path']
519 env.Append(LIBPATH = [lib_path,])
520 except KeyError:
521 pass
522
523 if useMPI:
524 amd_libs = []
525 else:
526 try:
527 amd_libs = env['amd_libs']
528 except KeyError:
529 amd_libs = []
530
531 try:
532 includes = env['blas_path']
533 env.Append(CPPPATH = [includes,])
534 except KeyError:
535 pass
536
537 try:
538 lib_path = env['blas_lib_path']
539 env.Append(LIBPATH = [lib_path,])
540 except KeyError:
541 pass
542
543 try:
544 blas_libs = env['blas_libs']
545 except KeyError:
546 blas_libs = []
547
548 try:
549 useNetCDF = env['useNetCDF']
550 except KeyError:
551 useNetCDF = 'yes'
552 pass
553
554 if useNetCDF == 'yes':
555 try:
556 netCDF_libs = env['netCDF_libs']
557 except KeyError:
558 pass
559
560 env.Append(LIBS = netCDF_libs)
561 env.Append(CPPDEFINES = [ 'USE_NETCDF' ])
562 try:
563 includes = env['netCDF_path']
564 env.Append(CPPPATH = [includes,])
565 except KeyError:
566 pass
567
568 try:
569 lib_path = env['netCDF_lib_path']
570 if IS_WINDOWS_PLATFORM: env['ENV']['PATH']+=";"+lib_path
571 env.Append(LIBPATH = [ lib_path, ])
572 except KeyError:
573 pass
574 else:
575 print "Warning: Installation is not configured with netCDF. Some I/O function may not be available."
576 netCDF_libs=[ ]
577
578 try:
579 includes = env['boost_path']
580 env.Append(CPPPATH = [includes,])
581 except KeyError:
582 pass
583 try:
584 lib_path = env['boost_lib_path']
585 env.Append(LIBPATH = [lib_path,])
586 except KeyError:
587 pass
588 try:
589 boost_lib = env['boost_lib']
590 except KeyError:
591 boost_lib = None
592 try:
593 includes = env['python_path']
594 env.Append(CPPPATH = [includes,])
595 except KeyError:
596 pass
597 try:
598 lib_path = env['python_lib_path']
599 env.Append(LIBPATH = [lib_path,])
600 except KeyError:
601 pass
602 try:
603 python_lib = env['python_lib']
604 except KeyError:
605 python_lib = None
606 try:
607 doxygen_path = env['doxygen_path']
608 except KeyError:
609 doxygen_path = None
610 try:
611 epydoc_path = env['epydoc_path']
612 except KeyError:
613 epydoc_path = None
614 try:
615 includes = env['papi_path']
616 env.Append(CPPPATH = [includes,])
617 except KeyError:
618 pass
619 try:
620 lib_path = env['papi_lib_path']
621 env.Append(LIBPATH = [lib_path,])
622 except KeyError:
623 pass
624 try:
625 papi_libs = env['papi_libs']
626 except KeyError:
627 papi_libs = None
628
629
630 try:
631 src_zipfile = env.File(env['src_zipfile'])
632 except KeyError:
633 src_zipfile = None
634 try:
635 test_zipfile = env.File(env['test_zipfile'])
636 except KeyError:
637 test_zipfile = None
638 try:
639 examples_zipfile = env.File(env['examples_zipfile'])
640 except KeyError:
641 examples_zipfile = None
642
643 try:
644 src_tarfile = env.File(env['src_tarfile'])
645 except KeyError:
646 src_tarfile = None
647 try:
648 test_tarfile = env.File(env['test_tarfile'])
649 except KeyError:
650 test_tarfile = None
651 try:
652 examples_tarfile = env.File(env['examples_tarfile'])
653 except KeyError:
654 examples_tarfile = None
655
656 try:
657 guide_pdf = env.File(env['guide_pdf'])
658 except KeyError:
659 guide_pdf = None
660
661 try:
662 guide_html_index = env.File('index.htm',env['guide_html'])
663 except KeyError:
664 guide_html_index = None
665
666 try:
667 api_epydoc = env.Dir(env['api_epydoc'])
668 except KeyError:
669 api_epydoc = None
670
671 try:
672 api_doxygen = env.Dir(env['api_doxygen'])
673 except KeyError:
674 api_doxygen = None
675
676 # Python install - esys __init__.py
677 init_target = env.Command(pyinstall+'/__init__.py', None, Touch('$TARGET'))
678
679 # FIXME: exinstall and friends related to examples are not working.
680 build_target = env.Alias('build',[libinstall,incinstall,pyinstall,init_target])
681
682 env.Default(build_target)
683
684 # Zipgets
685 env.Alias('release_src',[ src_zipfile, src_tarfile ])
686 env.Alias('release_tests',[ test_zipfile, test_tarfile])
687 env.Alias('release_examples',[ examples_zipfile, examples_tarfile])
688 env.Alias('examples_zipfile',examples_zipfile)
689 env.Alias('examples_tarfile',examples_tarfile)
690 env.Alias('api_epydoc',api_epydoc)
691 env.Alias('api_doxygen',api_doxygen)
692 env.Alias('guide_html_index',guide_html_index)
693 env.Alias('guide_pdf', guide_pdf)
694 env.Alias('docs',[ 'release_examples', 'guide_pdf', api_epydoc, api_doxygen, guide_html_index])
695 env.Alias('release', ['release_src', 'release_tests', 'docs'])
696
697 env.Alias('build_tests',build_target) # target to build all C++ tests
698 env.Alias('build_py_tests',build_target) # target to build all python tests
699 env.Alias('build_all_tests', [ 'build_tests', 'build_py_tests' ] ) # target to build all python tests
700 env.Alias('run_tests', 'build_tests') # target to run all C++ test
701 env.Alias('py_tests', 'build_py_tests') # taget to run all released python tests
702 env.Alias('all_tests', ['run_tests', 'py_tests']) # target to run all C++ and released python tests
703
704
705 # Allow sconscripts to see the env
706 Export(["env", "incinstall", "libinstall", "pyinstall", "exinstall", "dodebug",
707 "mkl_libs", "scsl_libs", "umf_libs", "amd_libs", "blas_libs",
708 "netCDF_libs",
709 "boost_lib", "python_lib", "doxygen_path", "epydoc_path", "papi_libs",
710 "sys_libs", "test_zipfile", "src_zipfile", "test_tarfile",
711 "src_tarfile", "examples_tarfile", "examples_zipfile",
712 "guide_pdf", "guide_html_index", "api_epydoc", "api_doxygen", "useMPI"
713 ])
714
715 # End initialisation section
716 # Begin configuration section
717 # adds this file and the scons option directore to the source tar
718 release_srcfiles=[env.File('SConstruct'),]+[ env.File(x) for x in glob.glob('scons/*.py') ]
719 release_testfiles=[env.File('README_TESTS'),]
720 env.Zip(src_zipfile, release_srcfiles)
721 env.Zip(test_zipfile, release_testfiles)
722 try:
723 env.Tar(src_tarfile, release_srcfiles)
724 env.Tar(test_tarfile, release_testfiles)
725 except AttributeError:
726 pass
727 # Insert new components to be build here
728 # FIXME: might be nice to replace this verbosity with a list of targets and some
729 # FIXME: nifty python to create the lengthy but very similar env.Sconscript lines
730 # Third Party libraries
731 env.SConscript(dirs = ['tools/CppUnitTest/src'], build_dir='build/$PLATFORM/tools/CppUnitTest', duplicate=0)
732 # C/C++ Libraries
733 env.SConscript(dirs = ['paso/src'], build_dir='build/$PLATFORM/paso', duplicate=0)
734 # bruce is removed for now as it doesn't really do anything
735 # env.SConscript(dirs = ['bruce/src'], build_dir='build/$PLATFORM/bruce', duplicate=0)
736 env.SConscript(dirs = ['escript/src'], build_dir='build/$PLATFORM/escript', duplicate=0)
737 env.SConscript(dirs = ['esysUtils/src'], build_dir='build/$PLATFORM/esysUtils', duplicate=0)
738 env.SConscript(dirs = ['finley/src'], build_dir='build/$PLATFORM/finley', duplicate=0)
739 env.SConscript(dirs = ['modellib/py_src'], build_dir='build/$PLATFORM/modellib', duplicate=0)
740 env.SConscript(dirs = ['doc'], build_dir='build/$PLATFORM/doc', duplicate=0)
741 env.SConscript(dirs = ['pyvisi/py_src'], build_dir='build/$PLATFORM/pyvisi', duplicate=0)
742 env.SConscript(dirs = ['pycad/py_src'], build_dir='build/$PLATFORM/pycad', duplicate=0)
743
744 # added by Ben Cumming
745 env.SConscript(dirs = ['pythonMPI/src'], build_dir='build/$PLATFORM/pythonMPI', duplicate=0)
746 #env.SConscript(dirs = ['../test'], build_dir='../test/build', duplicate=0)
747
748
749 syslib_install_target = env.installDirectory(sys_libinstall,libinstall)
750 syspy_install_target = env.installDirectory(sys_pyinstall,pyinstall,recursive=True)
751
752 install_target = env.Alias("install", env.Flatten([syslib_install_target, syspy_install_target]) )

  ViewVC Help
Powered by ViewVC 1.1.26