/[escript]/trunk/finley/src/SConscript
ViewVC logotype

Contents of /trunk/finley/src/SConscript

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1385 - (show annotations)
Fri Jan 11 07:33:30 2008 UTC (13 years, 1 month ago) by trankine
File size: 4022 byte(s)
This is a commit to the trunk of the current windows version undergoing debugging.
This trunk will shortly be moved to the branches area
of the repository, and the saved trunk version currently over in branches restored to the trunk.

Second try after resolving a conflict.
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 import os
9 Import('*')
10
11 local_env=env.Copy()
12 py_wrapper_local_env=env.Copy()
13 # Remove the sharedlibrary prefix on all platform - we don't want 'lib' mucking with our python modules
14 del py_wrapper_local_env['SHLIBPREFIX']
15
16 lib_name = 'finley'
17 py_wrapper_name = lib_name+'cpp'
18 py_wrapper_source = 'CPPAdapter/'+py_wrapper_name+'.cpp' # FIXME: In need of a source tree refactor
19 py_wrapper_lib_name = py_wrapper_name
20
21 src_dir = local_env.Dir('.').srcnode().abspath
22 filenames = [ x for x in os.listdir(src_dir) if os.path.splitext(x)[1] in [".h", ".c", ".cpp"] ]
23
24 sources = [x for x in filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]
25 headers = [x for x in filenames if os.path.splitext(x)[1] in ['.h']]
26
27
28 # finleycpp has additional source in the CPPAdapter sub-directory. Append these to the list
29 cppadapter_filenames = [ 'CPPAdapter/'+x for x in os.listdir(src_dir+'/CPPAdapter') if os.path.splitext(x)[1] in [".h", ".c", ".cpp"] ]
30 sources += [ x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]
31 cppadapter_headers = [x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.h']]
32
33 sources.remove(py_wrapper_source) # FIXME: should probably refactor the source tree so the python wrapper isn't colocated with c++ sources
34 local_env.Append(LIBS = [boost_lib, python_lib, 'escript', 'esysUtils', 'paso'] + sys_libs + mpi_libs )
35 py_wrapper_local_env.Append(LIBS = [boost_lib, python_lib, lib_name, 'escript', 'esysUtils', 'paso'] + sys_libs + mpi_libs )
36
37 if mkl_libs:
38 local_env.Append(CPPDEFINES=['MKL',])
39 local_env.Append(LIBS = mkl_libs)
40 if scsl_libs:
41 local_env.Append(CPPDEFINES=['SCSL',])
42 local_env.Append(LIBS = scsl_libs)
43 if umf_libs:
44 local_env.Append(CPPDEFINES=['UMFPACK',])
45 local_env.Append(LIBS = umf_libs)
46
47 if blas_libs:
48 local_env.Append(LIBS = blas_libs)
49
50 if papi_instrument_solver:
51 local_env.Append(CPPDEFINES=['PAPI',])
52 if papi_libs:
53 local_env.Append(LIBS = papi_libs)
54 local_env.Append(CPPDEFINES=['BLOCKPAPI',])
55
56 if trilinos_libs:
57 local_env.Append(CPPDEFINES=['TRILINOS',])
58 local_env.Append(LIBS = trilinos_libs)
59
60 local_env.Append(CPPDEFINES = 'FINLEY_EXPORTS')
61
62 lib = local_env.SharedLibrary(lib_name, sources)
63 py_wrapper_lib = py_wrapper_local_env.SharedLibrary( py_wrapper_lib_name, py_wrapper_source)
64
65 include_path = Dir(lib_name, incinstall)
66 cppadapter_include_path = Dir('CppAdapter', include_path)
67
68 local_env.Install(include_path, headers )
69 local_env.Install(cppadapter_include_path, cppadapter_headers )
70 local_env.Install(libinstall, lib)
71 py_wrapper_local_env.Install(pyinstall+'/finley', py_wrapper_lib)
72
73 #windows specific mod
74 if os.name == 'nt':
75 py_wrapper_local_env.InstallAs(target = [ pyinstall+'/finley/'+py_wrapper_lib_name+'.pyd', \
76 pyinstall+'/finley/'+py_wrapper_lib_name+'.lib', \
77 pyinstall+'/finley/'+py_wrapper_lib_name+'.exp' ], \
78 source = py_wrapper_lib )
79
80
81 # export the lib target since tests will depend on it
82 # the lib target is a list of file nodes (why? win32 produces more than one output file: .lib, .dll, .pdb)
83 # FIXME: This list handling produces the desired result but can this be done directly with scons File nodes?
84 dep_lib = [libinstall+'/'+str(x) for x in lib]
85 Export('dep_lib')
86
87 # add source files to release
88 release_srcfiles = [ env.File(x) for x in filenames + cppadapter_filenames ] + [env.File("SConscript"), ]
89 env.Zip(src_zipfile, release_srcfiles)
90 env.Tar(src_tarfile, release_srcfiles)
91
92 # Call the python sconscript
93 env.SConscript(dirs = ['#/finley/py_src'], build_dir='py', duplicate=0)
94
95 # Call the unit tests SConscript
96 local_env.SConscript(dirs = ['#/finley/test'], build_dir='#/build/$PLATFORM/finley/test', duplicate=0)
97

  ViewVC Help
Powered by ViewVC 1.1.26