/[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 3189 by jfenwick, Thu Sep 16 05:20:34 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        TagMap.c
99        Util.c
100        ReferenceElementSets.c
101        CPPAdapter/DudleyAdapterException.cpp
102        CPPAdapter/DudleyError.cpp
103        CPPAdapter/MeshAdapter.cpp
104        CPPAdapter/MeshAdapterFactory.cpp
105        CPPAdapter/SystemMatrixAdapter.cpp
106        CPPAdapter/TransportProblemAdapter.cpp
107    """.split()
108    unroll_sources= """
109        Assemble_gradient.c
110        Assemble_jacobeans.c
111    """.split()
112    
113    
114    headers = """
115        Assemble.h
116        ElementFile.h
117        Dudley.h
118        DudleyVersion.h
119        IndexList.h
120        Mesh.h
121        NodeFile.h
122        NodeMapping.h
123        Quadrature.h
124        TriangularMesh.h
125        ReferenceElements.h
126        ShapeFunctions.h
127        ShapeTable.h
128        TagMap.h
129        Util.h
130        ReferenceElementSets.h
131        vtkCellType.h
132    """.split()
133    cppadapter_headers = """
134        CPPAdapter/DudleyAdapterException.h
135        CPPAdapter/DudleyError.h
136        CPPAdapter/MeshAdapter.h
137        CPPAdapter/MeshAdapterFactory.h
138        CPPAdapter/SystemMatrixAdapter.h
139        CPPAdapter/TransportProblemAdapter.h
140        CPPAdapter/system_dep.h
141    """.split()
142    
143    local_env.Append(LIBS = ['escript', 'esysUtils', 'paso'] + env['sys_libs'] )
144    
145    if IS_WINDOWS_PLATFORM :
146      local_env.Append(CPPDEFINES = ['DUDLEY_EXPORTS'])
147    
148    py_wrapper_local_env.Append(LIBS = ['dudley', 'escript', 'esysUtils', 'paso'] + env['sys_libs'] )
149    
150    module_name = 'dudley'
151    py_wrapper_name = module_name + 'cpp'
152    
153    un = [ local_unroll_env.SharedObject(x) for x in unroll_sources]
154    
155  local_env.Append(CPPDEFINES = 'FINLEY_EXPORTS')  lib = local_env.SharedLibrary(module_name, sources+un)
156    env.Alias('target_dudley_so', lib)
157    
158  lib = local_env.SharedLibrary(lib_name, sources)  py_wrapper_lib = py_wrapper_local_env.SharedLibrary(py_wrapper_name, 'CPPAdapter/dudleycpp.cpp')
159  py_wrapper_lib = py_wrapper_local_env.SharedLibrary( py_wrapper_lib_name, py_wrapper_source)  env.Alias('target_dudleycpp_so', py_wrapper_lib)
160    
161  include_path = Dir(lib_name, incinstall)  include_path = Dir('dudley', local_env['incinstall'])
162  cppadapter_include_path = Dir('CppAdapter', include_path)  cppadapter_include_path = Dir('CppAdapter', include_path)
163    
164  local_env.Install(include_path, headers )  tmp1 = local_env.Install(include_path, headers )
165  local_env.Install(cppadapter_include_path, cppadapter_headers )  tmp2 = local_env.Install(cppadapter_include_path, cppadapter_headers )
166  local_env.Install(libinstall, lib)  env.Alias('target_install_dudley_headers', [tmp1, tmp2])
167  py_wrapper_local_env.Install(pyinstall+'/finley', py_wrapper_lib)  
168    tmp3 = local_env.Install(local_env['libinstall'], lib)
169    env.Alias('target_install_dudley_so', tmp3)
170    
171    #windows specific mod
172    tmp_inst = os.path.join(local_env['pyinstall'],module_name)
173    if os.name == 'nt':
174      wrapper_postfix = '.pyd'
175    else:
176      wrapper_postfix = '.so'
177    
178    share_name = os.path.join(tmp_inst,py_wrapper_name+wrapper_postfix)
179    
180    tmp4 = py_wrapper_local_env.InstallAs(target=share_name,
181                                          source=py_wrapper_lib[0])
182    
183    env.Alias('target_install_dudleycpp_so', tmp4)
184    
185  # export the lib target since tests will depend on it  # export the lib target since tests will depend on it
186  # 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)
187  # 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?
188  dep_lib = [libinstall+'/'+str(x) for x in lib]  dep_lib = [local_env['libinstall']+'/'+str(x) for x in lib]
189  Export('dep_lib')  Export('dep_lib')
190    
 # 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  
191  # Call the python sconscript  # Call the python sconscript
192  env.SConscript(dirs = ['#/finley/py_src'], build_dir='py', duplicate=0)  CallSConscript(env,dirs = ['#/dudley/py_src'], variant_dir='py', duplicate=0)
193    
194  # Call the unit tests SConscript  # Call the unit tests SConscript
195  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)
196    

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

  ViewVC Help
Powered by ViewVC 1.1.26