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

Contents of /branches/domexper/dudley/src/SConscript

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3189 - (show annotations)
Thu Sep 16 05:20:34 2010 UTC (9 years, 5 months ago) by jfenwick
File size: 5181 byte(s)
Adding support for selective compiling with loop unroll

1
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 # Primary Business: Queensland, Australia
10 # Licensed under the Open Software License version 3.0
11 # http://www.opensource.org/licenses/osl-3.0.php
12 #
13 ########################################################
14
15
16 import os
17 Import('*')
18
19 local_env = clone_env(env_mpi)
20 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
26 del py_wrapper_local_env['SHLIBPREFIX']
27
28 sources = """
29 Assemble_AverageElementData.c
30 Assemble_CopyElementData.c
31 Assemble_CopyNodalData.c
32 Assemble_LumpedSystem.c
33 Assemble_NodeCoordinates.c
34 Assemble_PDE.c
35 Assemble_PDE_Single2_2D.c
36 Assemble_PDE_Single2_3D.c
37 Assemble_PDE_System2_2D.c
38 Assemble_PDE_System2_3D.c
39 Assemble_addToSystemMatrix.c
40 Assemble_getAssembleParameters.c
41 Assemble_getSize.c
42 Assemble_integrate.c
43 Assemble_interpolate.c
44 Assemble_setNormal.c
45 ElementFile.c
46 ElementFile_allocTable.c
47 ElementFile_copyTable.c
48 ElementFile_createColoring.c
49 ElementFile_distributeByRankOfDOF.c
50 ElementFile_gather.c
51 ElementFile_jacobeans.c
52 ElementFile_markNodes.c
53 ElementFile_optimizeOrdering.c
54 ElementFile_relableNodes.c
55 ElementFile_scatter.c
56 ElementFile_setCoordinates.c
57 ElementFile_setNodeRange.c
58 ElementFile_setTags.c
59 Dudley.c
60 IndexList.c
61 Mesh.c
62 Mesh_createNodeFileMappings.c
63 Mesh_distributeByRankOfDOF.c
64 Mesh_findMatchingFaces.c
65 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 lib = local_env.SharedLibrary(module_name, sources+un)
156 env.Alias('target_dudley_so', lib)
157
158 py_wrapper_lib = py_wrapper_local_env.SharedLibrary(py_wrapper_name, 'CPPAdapter/dudleycpp.cpp')
159 env.Alias('target_dudleycpp_so', py_wrapper_lib)
160
161 include_path = Dir('dudley', local_env['incinstall'])
162 cppadapter_include_path = Dir('CppAdapter', include_path)
163
164 tmp1 = local_env.Install(include_path, headers )
165 tmp2 = local_env.Install(cppadapter_include_path, cppadapter_headers )
166 env.Alias('target_install_dudley_headers', [tmp1, tmp2])
167
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
186 # 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?
188 dep_lib = [local_env['libinstall']+'/'+str(x) for x in lib]
189 Export('dep_lib')
190
191 # Call the python sconscript
192 CallSConscript(env,dirs = ['#/dudley/py_src'], variant_dir='py', duplicate=0)
193
194 # Call the unit tests SConscript
195 CallSConscript(local_env,dirs = ['#/dudley/test'], variant_dir='#/build/$PLATFORM/dudley/test', duplicate=0)
196

  ViewVC Help
Powered by ViewVC 1.1.26