/[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 3114 by jfenwick, Fri Aug 27 05:26:25 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    
22  # 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
23  del py_wrapper_local_env['SHLIBPREFIX']  del py_wrapper_local_env['SHLIBPREFIX']
24    
25  lib_name = 'finley'  sources = """
26  py_wrapper_name = lib_name+'cpp'      Assemble_AverageElementData.c
27  py_wrapper_source = 'CPPAdapter/'+py_wrapper_name+'.cpp' # FIXME: In need of a source tree refactor      Assemble_CopyElementData.c
28  py_wrapper_lib_name = py_wrapper_name      Assemble_CopyNodalData.c
29        Assemble_LumpedSystem.c
30  src_dir = local_env.Dir('.').srcnode().abspath      Assemble_NodeCoordinates.c
31  filenames = [ x for x in os.listdir(src_dir) if os.path.splitext(x)[1] in [".h", ".c", ".cpp"] ]      Assemble_PDE.c
32        Assemble_PDE_Single2_1D.c
33  sources = [x for x in filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]      Assemble_PDE_Single2_2D.c
34  headers = [x for x in filenames if os.path.splitext(x)[1] in ['.h']]      Assemble_PDE_Single2_3D.c
35        Assemble_PDE_Single2_C.c
36        Assemble_PDE_System2_1D.c
37  # finleycpp has additional source in the CPPAdapter sub-directory. Append these to the list      Assemble_PDE_System2_2D.c
38  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
39  sources += [ x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]      Assemble_PDE_System2_C.c
40  cppadapter_headers = [x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.h']]      Assemble_addToSystemMatrix.c
41        Assemble_getAssembleParameters.c
42  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
43  local_env.Append(LIBS = [boost_libs] +  python_libs + sys_libs + ['escript', 'esysUtils', 'paso'])      Assemble_gradient.c
44  py_wrapper_local_env.Append(LIBS = [boost_libs] + python_libs + sys_libs + [lib_name, 'escript', 'esysUtils', 'paso'])      Assemble_integrate.c
45        Assemble_interpolate.c
46  if mkl_libs:      Assemble_jacobeans.c
47     local_env.Append(CPPDEFINES=['MKL',])      Assemble_setNormal.c
48     local_env.Append(LIBS = mkl_libs)      ElementFile.c
49  if scsl_libs:      ElementFile_allocTable.c
50     local_env.Append(CPPDEFINES=['SCSL',])      ElementFile_copyTable.c
51     local_env.Append(LIBS = scsl_libs)      ElementFile_createColoring.c
52  if umf_libs and amd_libs:      ElementFile_distributeByRankOfDOF.c
53     local_env.Append(CPPDEFINES=['UMFPACK',])      ElementFile_gather.c
54     local_env.Append(LIBS = umf_libs)      ElementFile_jacobeans.c
55     local_env.Append(LIBS = amd_libs)      ElementFile_markNodes.c
56        ElementFile_optimizeOrdering.c
57  if blas_libs:      ElementFile_relableNodes.c
58     local_env.Append(LIBS = blas_libs)      ElementFile_scatter.c
59        ElementFile_setCoordinates.c
60  if papi_libs:      ElementFile_setNodeRange.c
61     local_env.Append(CPPDEFINES=['PAPI',])      ElementFile_setTags.c
62     local_env.Append(LIBS = papi_libs)      Dudley.c
63        IndexList.c
64        Mesh.c
65        Mesh_createNodeFileMappings.c
66        Mesh_distributeByRankOfDOF.c
67        Mesh_findMatchingFaces.c
68        Mesh_getPattern.c
69        Mesh_glueFaces.c
70        Mesh_joinFaces.c
71        Mesh_markNodes.c
72        Mesh_merge.c
73        Mesh_optimizeDOFDistribution.c
74        Mesh_optimizeDOFLabeling.c
75        Mesh_prepare.c
76        Mesh_print.c
77        Mesh_read.c
78        Mesh_readGmsh.c
79        Mesh_relableElementNodes.c
80        Mesh_resolveNodeIds.c
81        Mesh_saveDX.c
82        Mesh_saveVTK.c
83        Mesh_setCoordinates.c
84        Mesh_tagmaps.c
85        Mesh_tet4.c
86        Mesh_tri3.c
87        Mesh_write.c
88        NodeFile.c
89        NodeFile_allocTable.c
90        NodeFile_copyTable.c
91        NodeFile_createDenseLabelings.c
92        NodeFile_gather.c
93        NodeFile_scatter.c
94        NodeFile_setCoordinates.c
95        NodeFile_setIdRange.c
96        NodeFile_setTags.c
97        NodeMapping.c
98        Quadrature.c
99        ReferenceElements.c
100        ShapeFunctions.c
101        TagMap.c
102        Util.c
103        ReferenceElementSets.c
104        CPPAdapter/DudleyAdapterException.cpp
105        CPPAdapter/DudleyError.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        Dudley.h
115        DudleyVersion.h
116        IndexList.h
117        Mesh.h
118        NodeFile.h
119        NodeMapping.h
120        Quadrature.h
121        TriangularMesh.h
122        ReferenceElements.h
123        ShapeFunctions.h
124        TagMap.h
125        Util.h
126        ReferenceElementSets.h
127        vtkCellType.h
128    """.split()
129    cppadapter_headers = """
130        CPPAdapter/DudleyAdapterException.h
131        CPPAdapter/DudleyError.h
132        CPPAdapter/MeshAdapter.h
133        CPPAdapter/MeshAdapterFactory.h
134        CPPAdapter/SystemMatrixAdapter.h
135        CPPAdapter/TransportProblemAdapter.h
136        CPPAdapter/system_dep.h
137    """.split()
138    
139    local_env.Append(LIBS = ['escript', 'esysUtils', 'paso'] + env['sys_libs'] )
140    
141    if IS_WINDOWS_PLATFORM :
142      local_env.Append(CPPDEFINES = ['DUDLEY_EXPORTS'])
143    
144    py_wrapper_local_env.Append(LIBS = ['dudley', 'escript', 'esysUtils', 'paso'] + env['sys_libs'] )
145    
146    module_name = 'dudley'
147    py_wrapper_name = module_name + 'cpp'
148    
149  local_env.Append(CPPDEFINES = 'FINLEY_EXPORTS')  lib = local_env.SharedLibrary(module_name, sources)
150    env.Alias('target_dudley_so', lib)
151    
152  lib = local_env.SharedLibrary(lib_name, sources)  py_wrapper_lib = py_wrapper_local_env.SharedLibrary(py_wrapper_name, 'CPPAdapter/dudleycpp.cpp')
153  py_wrapper_lib = py_wrapper_local_env.SharedLibrary( py_wrapper_lib_name, py_wrapper_source)  env.Alias('target_dudleycpp_so', py_wrapper_lib)
154    
155  include_path = Dir(lib_name, incinstall)  include_path = Dir('dudley', local_env['incinstall'])
156  cppadapter_include_path = Dir('CppAdapter', include_path)  cppadapter_include_path = Dir('CppAdapter', include_path)
157    
158  local_env.Install(include_path, headers )  tmp1 = local_env.Install(include_path, headers )
159  local_env.Install(cppadapter_include_path, cppadapter_headers )  tmp2 = local_env.Install(cppadapter_include_path, cppadapter_headers )
160  local_env.Install(libinstall, lib)  env.Alias('target_install_dudley_headers', [tmp1, tmp2])
161  py_wrapper_local_env.Install(pyinstall+'/finley', py_wrapper_lib)  
162    tmp3 = local_env.Install(local_env['libinstall'], lib)
163    env.Alias('target_install_dudley_so', tmp3)
164    
165    #windows specific mod
166    tmp_inst = os.path.join(local_env['pyinstall'],module_name)
167    if os.name == 'nt':
168      wrapper_postfix = '.pyd'
169    else:
170      wrapper_postfix = '.so'
171    
172    share_name = os.path.join(tmp_inst,py_wrapper_name+wrapper_postfix)
173    
174    tmp4 = py_wrapper_local_env.InstallAs(target=share_name,
175                                          source=py_wrapper_lib[0])
176    
177    env.Alias('target_install_dudleycpp_so', tmp4)
178    
179  # export the lib target since tests will depend on it  # export the lib target since tests will depend on it
180  # 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)
181  # 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?
182  dep_lib = [libinstall+'/'+str(x) for x in lib]  dep_lib = [local_env['libinstall']+'/'+str(x) for x in lib]
183  Export('dep_lib')  Export('dep_lib')
184    
 # 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  
185  # Call the python sconscript  # Call the python sconscript
186  env.SConscript(dirs = ['#/finley/py_src'], build_dir='py', duplicate=0)  CallSConscript(env,dirs = ['#/dudley/py_src'], variant_dir='py', duplicate=0)
187    
188  # Call the unit tests SConscript  # Call the unit tests SConscript
189  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)
190    

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

  ViewVC Help
Powered by ViewVC 1.1.26