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

Diff of /trunk/finley/src/SConscript

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 700 by gross, Thu Apr 6 00:13:40 2006 UTC revision 1840 by phornby, Fri Oct 3 03:16:11 2008 UTC
# Line 1  Line 1 
1    
2    ########################################################
3    #
4    # Copyright (c) 2003-2008 by University of Queensland
5    # Earth Systems Science Computational Center (ESSCC)
6    # http://www.uq.edu.au/esscc
7    #
8    # Primary Business: Queensland, Australia
9    # Licensed under the Open Software License version 3.0
10    # http://www.opensource.org/licenses/osl-3.0.php
11    #
12    ########################################################
13    
14    
15  import os  import os
16  Import('*')  Import('*')
17    
18  local_env=env.Copy()  local_env = clone_env(env_mpi)
19  py_wrapper_local_env=env.Copy()  py_wrapper_local_env = clone_env(env_mpi)
20    
21  # Remove the sharedlibrary prefix on all platform - we don't want 'lib' mucking with our python modules  # Remove the sharedlibrary prefix on all platform - we don't want 'lib' mucking with our python modules
22  del py_wrapper_local_env['SHLIBPREFIX']  del py_wrapper_local_env['SHLIBPREFIX']
23    
24  lib_name = 'finley'  sources = """
25  py_wrapper_name = lib_name+'cpp'      Assemble_AverageElementData.c
26  py_wrapper_source = 'CPPAdapter/'+py_wrapper_name+'.cpp' # FIXME: In need of a source tree refactor      Assemble_CopyElementData.c
27  py_wrapper_lib_name = py_wrapper_name      Assemble_CopyNodalData.c
28        Assemble_LumpedSystem.c
29  src_dir = local_env.Dir('.').srcnode().abspath      Assemble_NodeCoordinates.c
30  filenames = [ x for x in os.listdir(src_dir) if os.path.splitext(x)[1] in [".h", ".c", ".cpp"] ]      Assemble_PDE.c
31        Assemble_PDE_Single2_1D.c
32  sources = [x for x in filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]      Assemble_PDE_Single2_2D.c
33  headers = [x for x in filenames if os.path.splitext(x)[1] in ['.h']]      Assemble_PDE_Single2_3D.c
34        Assemble_PDE_Single2_C.c
35        Assemble_PDE_System2_1D.c
36  # finleycpp has additional source in the CPPAdapter sub-directory. Append these to the list      Assemble_PDE_System2_2D.c
37  cppadapter_filenames = [ 'CPPAdapter/'+x for x in os.listdir(src_dir+'/CPPAdapter')  if os.path.splitext(x)[1] in [".h", ".c", ".cpp"] ]      Assemble_PDE_System2_3D.c
38  sources += [ x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]      Assemble_PDE_System2_C.c
39  cppadapter_headers = [x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.h']]      Assemble_addToSystemMatrix.c
40        Assemble_getAssembleParameters.c
41  sources.remove(py_wrapper_source) # FIXME: should probably refactor the source tree so the python wrapper isn't colocated with c++ sources      Assemble_getSize.c
42  local_env.Append(LIBS = [boost_lib, python_lib, sys_libs, 'escript', 'esysUtils', 'paso'])      Assemble_gradient.c
43  py_wrapper_local_env.Append(LIBS = [boost_lib, python_lib, sys_libs, lib_name, 'escript', 'esysUtils', 'paso'])      Assemble_integrate.c
44        Assemble_interpolate.c
45  if mkl_libs:      Assemble_jacobeans.c
46     local_env.Append(CPPDEFINES=['MKL',])      Assemble_setNormal.c
47     local_env.Append(LIBS = mkl_libs)      ElementFile.c
48  if scsl_libs:      ElementFile_allocTable.c
49     local_env.Append(CPPDEFINES=['SCSL',])      ElementFile_copyTable.c
50     local_env.Append(LIBS = scsl_libs)      ElementFile_createColoring.c
51  if umf_libs:      ElementFile_distributeByRankOfDOF.c
52     local_env.Append(CPPDEFINES=['UMFPACK',])      ElementFile_gather.c
53     local_env.Append(LIBS = umf_libs)      ElementFile_jacobeans.c
54  if papi_libs:      ElementFile_markNodes.c
55     local_env.Append(CPPDEFINES=['PAPI',])      ElementFile_optimizeOrdering.c
56     local_env.Append(LIBS = papi_libs)      ElementFile_relableNodes.c
57        ElementFile_scatter.c
58        ElementFile_setCoordinates.c
59        ElementFile_setNodeRange.c
60        ElementFile_setTags.c
61        Finley.c
62        IndexList.c
63        Mesh.c
64        Mesh_createNodeFileMappings.c
65        Mesh_distributeByRankOfDOF.c
66        Mesh_findMatchingFaces.c
67        Mesh_getPattern.c
68        Mesh_glueFaces.c
69        Mesh_hex20.c
70        Mesh_hex8.c
71        Mesh_joinFaces.c
72        Mesh_markNodes.c
73        Mesh_merge.c
74        Mesh_optimizeDOFDistribution.c
75        Mesh_optimizeDOFLabeling.c
76        Mesh_prepare.c
77        Mesh_print.c
78        Mesh_read.c
79        Mesh_readGmsh.c
80        Mesh_rec4.c
81        Mesh_rec8.c
82        Mesh_relableElementNodes.c
83        Mesh_resolveNodeIds.c
84        Mesh_saveDX.c
85        Mesh_saveVTK.c
86        Mesh_setCoordinates.c
87        Mesh_tagmaps.c
88        Mesh_write.c
89        NodeFile.c
90        NodeFile_allocTable.c
91        NodeFile_copyTable.c
92        NodeFile_createDenseLabelings.c
93        NodeFile_gather.c
94        NodeFile_scatter.c
95        NodeFile_setCoordinates.c
96        NodeFile_setIdRange.c
97        NodeFile_setTags.c
98        NodeMapping.c
99        Quadrature.c
100        ReferenceElements.c
101        ShapeFunctions.c
102        TagMap.c
103        Util.c
104        CPPAdapter/FinleAdapterException.cpp
105        CPPAdapter/FinleyError.cpp
106        CPPAdapter/MeshAdapter.cpp
107        CPPAdapter/MeshAdapterFactory.cpp
108        CPPAdapter/SystemMatrixAdapter.cpp
109        CPPAdapter/TransportProblemAdapter.cpp
110    """.split()
111    headers = """
112        Assemble.h
113        ElementFile.h
114        Finley.h
115        FinleyVersion.h
116        IndexList.h
117        Mesh.h
118        NodeFile.h
119        NodeMapping.h
120        Quadrature.h
121        RectangularMesh.h
122        ReferenceElements.h
123        ShapeFunctions.h
124        TagMap.h
125        Util.h
126        vtkCellType.h
127    """.split()
128    cppadapter_headers = """
129        CPPAdapter/FinleyAdapterException.h
130        CPPAdapter/FinleyError.h
131        CPPAdapter/MeshAdapter.h
132        CPPAdapter/MeshAdapterFactory.h
133        CPPAdapter/SystemMatrixAdapter.h
134        CPPAdapter/TransportProblemAdapter.h
135        CPPAdapter/system_dep.h
136    """.split()
137    
138    local_env.Append(LIBS = ['escript', 'esysUtils', 'paso'] + env['sys_libs'] )
139    py_wrapper_local_env.Append(LIBS = ['finley', 'escript', 'esysUtils', 'paso'] + env['sys_libs'] )
140    
141    py_wrapper_name = 'finley'
142    
143    lib = local_env.SharedLibrary(py_wrapper_name, sources)
144    env.Alias('target_finley_so', lib)
145    
146  lib = local_env.SharedLibrary(lib_name, sources)  py_wrapper_lib = py_wrapper_local_env.SharedLibrary('finleycpp', 'CPPAdapter/finleycpp.cpp')
147  py_wrapper_lib = py_wrapper_local_env.SharedLibrary( py_wrapper_lib_name, py_wrapper_source)  env.Alias('target_finleycpp_so', py_wrapper_lib)
148    
149  include_path = Dir(lib_name, incinstall)  include_path = Dir('finley', local_env['incinstall'])
150  cppadapter_include_path = Dir('CppAdapter', include_path)  cppadapter_include_path = Dir('CppAdapter', include_path)
151    
152  local_env.Install(include_path, headers )  tmp1 = local_env.Install(include_path, headers )
153  local_env.Install(cppadapter_include_path, cppadapter_headers )  tmp2 = local_env.Install(cppadapter_include_path, cppadapter_headers )
154  local_env.Install(libinstall, lib)  env.Alias('target_install_finley_headers', [tmp1, tmp2])
155  py_wrapper_local_env.Install(pyinstall+'/finley', py_wrapper_lib)  
156    tmp3 = local_env.Install(local_env['libinstall'], lib)
157    env.Alias('target_install_finley_so', tmp3)
158    
159    #windows specific mod
160    tmp_inst = os.path.join(local_env['pyinstall'],py_wrapper_name)
161    if os.name == 'nt':
162      wrapper_postfix = '.pyd'
163      source_lib = py_wrapper_lib[0]
164    else:
165      wrapper_postfix = '.so'
166      source_lib = py_wrapper_lib
167    
168    share_name = os.path.join(tmp_inst,py_wrapper_name+wrapper_postfix)
169    
170    tmp4 = py_wrapper_local_env.InstallAs(target=share_name, source=source_lib)
171    
172    env.Alias('target_install_finleycpp_so', tmp4)
173    
174  # export the lib target since tests will depend on it  # export the lib target since tests will depend on it
175  # the lib target is a list of file nodes (why? win32 produces more than one output file: .lib, .dll, .pdb)  # the lib target is a list of file nodes (why? win32 produces more than one output file: .lib, .dll, .pdb)
176  # FIXME: This list handling produces the desired result but can this be done directly with scons File nodes?  # FIXME: This list handling produces the desired result but can this be done directly with scons File nodes?
177  dep_lib = [libinstall+'/'+str(x) for x in lib]  dep_lib = [local_env['libinstall']+'/'+str(x) for x in lib]
178  Export('dep_lib')  Export('dep_lib')
179    
 # add source files to release  
 release_srcfiles = [ env.File(x) for x in filenames + cppadapter_filenames ] + [env.File("SConscript"), ]  
 env.Zip(src_zipfile, release_srcfiles)  
 env.Tar(src_tarfile, release_srcfiles)  
   
180  # Call the python sconscript  # Call the python sconscript
181  env.SConscript(dirs = ['#/finley/py_src'], build_dir='py', duplicate=0)  env.SConscript(dirs = ['#/finley/py_src'], build_dir='py', duplicate=0)
182    

Legend:
Removed from v.700  
changed lines
  Added in v.1840

  ViewVC Help
Powered by ViewVC 1.1.26