/[escript]/branches/domexper/dudley/src/SConscript
ViewVC logotype

Diff of /branches/domexper/dudley/src/SConscript

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

trunk/finley/src/SConscript revision 1139 by ksteube, Mon May 14 05:12:53 2007 UTC branches/domexper/dudley/src/SConscript revision 3196 by jfenwick, Wed Sep 22 01:18:52 2010 UTC
# Line 1  Line 1 
1  #          Copyright 2006 by ACcESS MNRF  
2    
3    ########################################################
4    #
5    # Copyright (c) 2003-2010 by University of Queensland
6    # Earth Systems Science Computational Center (ESSCC)
7    # http://www.uq.edu.au/esscc
8  #  #
9  #              http://www.access.edu.au  # Primary Business: Queensland, Australia
10  #       Primary Business: Queensland, Australia  # Licensed under the Open Software License version 3.0
11  #  Licensed under the Open Software License version 3.0  # http://www.opensource.org/licenses/osl-3.0.php
 #     http://www.opensource.org/licenses/osl-3.0.php  
12  #  #
13    ########################################################
14    
15    
16  import os  import os
17  Import('*')  Import('*')
18    
19  local_env=env.Copy()  local_env = clone_env(env_mpi)
20  py_wrapper_local_env=env.Copy()  py_wrapper_local_env = clone_env(env_mpi)
21    local_unroll_env = clone_env(env_mpi)
22    local_unroll_env.Append(CFLAGS = env_mpi['dudley_assemble_flags'])
23    
24    
25  # 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
26  del py_wrapper_local_env['SHLIBPREFIX']  del py_wrapper_local_env['SHLIBPREFIX']
27    
28  lib_name = 'finley'  sources = """
29  py_wrapper_name = lib_name+'cpp'      Assemble_AverageElementData.c
30  py_wrapper_source = 'CPPAdapter/'+py_wrapper_name+'.cpp' # FIXME: In need of a source tree refactor      Assemble_CopyElementData.c
31  py_wrapper_lib_name = py_wrapper_name      Assemble_CopyNodalData.c
32        Assemble_LumpedSystem.c
33  src_dir = local_env.Dir('.').srcnode().abspath      Assemble_NodeCoordinates.c
34  filenames = [ x for x in os.listdir(src_dir) if os.path.splitext(x)[1] in [".h", ".c", ".cpp"] ]      Assemble_PDE.c
35        Assemble_PDE_Single2_2D.c
36  sources = [x for x in filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]      Assemble_PDE_Single2_3D.c
37  headers = [x for x in filenames if os.path.splitext(x)[1] in ['.h']]      Assemble_PDE_System2_2D.c
38        Assemble_PDE_System2_3D.c
39        Assemble_addToSystemMatrix.c
40  # finleycpp has additional source in the CPPAdapter sub-directory. Append these to the list      Assemble_getAssembleParameters.c
41  cppadapter_filenames = [ 'CPPAdapter/'+x for x in os.listdir(src_dir+'/CPPAdapter')  if os.path.splitext(x)[1] in [".h", ".c", ".cpp"] ]      Assemble_getSize.c
42  sources += [ x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]      Assemble_integrate.c
43  cppadapter_headers = [x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.h']]      Assemble_interpolate.c
44        Assemble_setNormal.c
45  sources.remove(py_wrapper_source) # FIXME: should probably refactor the source tree so the python wrapper isn't colocated with c++ sources      ElementFile.c
46  local_env.Append(LIBS = [boost_libs] +  python_libs + sys_libs + ['escript', 'esysUtils', 'paso'])      ElementFile_allocTable.c
47  py_wrapper_local_env.Append(LIBS = [boost_libs] + python_libs + sys_libs + [lib_name, 'escript', 'esysUtils', 'paso'])      ElementFile_copyTable.c
48        ElementFile_createColoring.c
49  if mkl_libs:      ElementFile_distributeByRankOfDOF.c
50     local_env.Append(CPPDEFINES=['MKL',])      ElementFile_gather.c
51     local_env.Append(LIBS = mkl_libs)      ElementFile_jacobeans.c
52  if scsl_libs:      ElementFile_markNodes.c
53     local_env.Append(CPPDEFINES=['SCSL',])      ElementFile_optimizeOrdering.c
54     local_env.Append(LIBS = scsl_libs)      ElementFile_relableNodes.c
55  if umf_libs and amd_libs:      ElementFile_scatter.c
56     local_env.Append(CPPDEFINES=['UMFPACK',])      ElementFile_setCoordinates.c
57     local_env.Append(LIBS = umf_libs)      ElementFile_setNodeRange.c
58     local_env.Append(LIBS = amd_libs)      ElementFile_setTags.c
59        Dudley.c
60  if blas_libs:      IndexList.c
61     local_env.Append(LIBS = blas_libs)      Mesh.c
62        Mesh_createNodeFileMappings.c
63  if papi_libs:      Mesh_distributeByRankOfDOF.c
64     local_env.Append(CPPDEFINES=['PAPI',])      Mesh_findMatchingFaces.c
65     local_env.Append(LIBS = papi_libs)      Mesh_getPattern.c
66        Mesh_glueFaces.c
67        Mesh_joinFaces.c
68        Mesh_markNodes.c
69        Mesh_merge.c
70        Mesh_optimizeDOFDistribution.c
71        Mesh_optimizeDOFLabeling.c
72        Mesh_prepare.c
73        Mesh_print.c
74        Mesh_read.c
75        Mesh_readGmsh.c
76        Mesh_relableElementNodes.c
77        Mesh_resolveNodeIds.c
78        Mesh_saveDX.c
79        Mesh_saveVTK.c
80        Mesh_setCoordinates.c
81        Mesh_tagmaps.c
82        Mesh_tet4.c
83        Mesh_tri3.c
84        Mesh_write.c
85        NodeFile.c
86        NodeFile_allocTable.c
87        NodeFile_copyTable.c
88        NodeFile_createDenseLabelings.c
89        NodeFile_gather.c
90        NodeFile_scatter.c
91        NodeFile_setCoordinates.c
92        NodeFile_setIdRange.c
93        NodeFile_setTags.c
94        NodeMapping.c
95        Quadrature.c
96        ReferenceElements.c
97        ShapeFunctions.c
98        ShapeTable.c
99        TagMap.c
100        Util.c
101        ReferenceElementSets.c
102        CPPAdapter/DudleyAdapterException.cpp
103        CPPAdapter/DudleyError.cpp
104        CPPAdapter/MeshAdapter.cpp
105        CPPAdapter/MeshAdapterFactory.cpp
106        CPPAdapter/SystemMatrixAdapter.cpp
107        CPPAdapter/TransportProblemAdapter.cpp
108    """.split()
109    unroll_sources= """
110        Assemble_gradient.c
111        Assemble_jacobeans.c
112    """.split()
113    
114    
115    headers = """
116        Assemble.h
117        ElementFile.h
118        Dudley.h
119        DudleyVersion.h
120        IndexList.h
121        Mesh.h
122        NodeFile.h
123        NodeMapping.h
124        Quadrature.h
125        TriangularMesh.h
126        ReferenceElements.h
127        ShapeFunctions.h
128        ShapeTable.h
129        TagMap.h
130        Util.h
131        ReferenceElementSets.h
132        vtkCellType.h
133    """.split()
134    cppadapter_headers = """
135        CPPAdapter/DudleyAdapterException.h
136        CPPAdapter/DudleyError.h
137        CPPAdapter/MeshAdapter.h
138        CPPAdapter/MeshAdapterFactory.h
139        CPPAdapter/SystemMatrixAdapter.h
140        CPPAdapter/TransportProblemAdapter.h
141        CPPAdapter/system_dep.h
142    """.split()
143    
144    local_env.Append(LIBS = ['escript', 'esysUtils', 'paso'] + env['sys_libs'] )
145    
146    if IS_WINDOWS_PLATFORM :
147      local_env.Append(CPPDEFINES = ['DUDLEY_EXPORTS'])
148    
149    py_wrapper_local_env.Append(LIBS = ['dudley', 'escript', 'esysUtils', 'paso'] + env['sys_libs'] )
150    
151    module_name = 'dudley'
152    py_wrapper_name = module_name + 'cpp'
153    
154    un = [ local_unroll_env.SharedObject(x) for x in unroll_sources]
155    
156  local_env.Append(CPPDEFINES = 'FINLEY_EXPORTS')  lib = local_env.SharedLibrary(module_name, sources+un)
157    env.Alias('target_dudley_so', lib)
158    
159  lib = local_env.SharedLibrary(lib_name, sources)  py_wrapper_lib = py_wrapper_local_env.SharedLibrary(py_wrapper_name, 'CPPAdapter/dudleycpp.cpp')
160  py_wrapper_lib = py_wrapper_local_env.SharedLibrary( py_wrapper_lib_name, py_wrapper_source)  env.Alias('target_dudleycpp_so', py_wrapper_lib)
161    
162  include_path = Dir(lib_name, incinstall)  include_path = Dir('dudley', local_env['incinstall'])
163  cppadapter_include_path = Dir('CppAdapter', include_path)  cppadapter_include_path = Dir('CppAdapter', include_path)
164    
165  local_env.Install(include_path, headers )  tmp1 = local_env.Install(include_path, headers )
166  local_env.Install(cppadapter_include_path, cppadapter_headers )  tmp2 = local_env.Install(cppadapter_include_path, cppadapter_headers )
167  local_env.Install(libinstall, lib)  env.Alias('target_install_dudley_headers', [tmp1, tmp2])
168  py_wrapper_local_env.Install(pyinstall+'/finley', py_wrapper_lib)  
169    tmp3 = local_env.Install(local_env['libinstall'], lib)
170    env.Alias('target_install_dudley_so', tmp3)
171    
172    #windows specific mod
173    tmp_inst = os.path.join(local_env['pyinstall'],module_name)
174    if os.name == 'nt':
175      wrapper_postfix = '.pyd'
176    else:
177      wrapper_postfix = '.so'
178    
179    share_name = os.path.join(tmp_inst,py_wrapper_name+wrapper_postfix)
180    
181    tmp4 = py_wrapper_local_env.InstallAs(target=share_name,
182                                          source=py_wrapper_lib[0])
183    
184    env.Alias('target_install_dudleycpp_so', tmp4)
185    
186  # export the lib target since tests will depend on it  # export the lib target since tests will depend on it
187  # 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)
188  # 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?
189  dep_lib = [libinstall+'/'+str(x) for x in lib]  dep_lib = [local_env['libinstall']+'/'+str(x) for x in lib]
190  Export('dep_lib')  Export('dep_lib')
191    
 # 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)  
 try:  
   env.Tar(src_tarfile, release_srcfiles)  
 except AttributeError:  
   pass  
192  # Call the python sconscript  # Call the python sconscript
193  env.SConscript(dirs = ['#/finley/py_src'], build_dir='py', duplicate=0)  CallSConscript(env,dirs = ['#/dudley/py_src'], variant_dir='py', duplicate=0)
194    
195  # Call the unit tests SConscript  # Call the unit tests SConscript
196  local_env.SConscript(dirs = ['#/finley/test'], build_dir='#/build/$PLATFORM/finley/test', duplicate=0)  CallSConscript(local_env,dirs = ['#/dudley/test'], variant_dir='#/build/$PLATFORM/dudley/test', duplicate=0)
197    

Legend:
Removed from v.1139  
changed lines
  Added in v.3196

  ViewVC Help
Powered by ViewVC 1.1.26