/[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

revision 481 by jgs, Wed Feb 1 05:57:50 2006 UTC revision 2031 by phornby, Wed Nov 12 08:02:33 2008 UTC
# Line 1  Line 1 
 libinstall = None  
 incinstall = None  
1    
2  Import('*')  
3    ########################################################
4    #
5    # Copyright (c) 2003-2008 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  import os
17  import string  Import('*')
18    
19    local_env = clone_env(env_mpi)
20    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
23    del py_wrapper_local_env['SHLIBPREFIX']
24    
25    sources = """
26        Assemble_AverageElementData.c
27        Assemble_CopyElementData.c
28        Assemble_CopyNodalData.c
29        Assemble_LumpedSystem.c
30        Assemble_NodeCoordinates.c
31        Assemble_PDE.c
32        Assemble_PDE_Single2_1D.c
33        Assemble_PDE_Single2_2D.c
34        Assemble_PDE_Single2_3D.c
35        Assemble_PDE_Single2_C.c
36        Assemble_PDE_System2_1D.c
37        Assemble_PDE_System2_2D.c
38        Assemble_PDE_System2_3D.c
39        Assemble_PDE_System2_C.c
40        Assemble_addToSystemMatrix.c
41        Assemble_getAssembleParameters.c
42        Assemble_getSize.c
43        Assemble_gradient.c
44        Assemble_integrate.c
45        Assemble_interpolate.c
46        Assemble_jacobeans.c
47        Assemble_setNormal.c
48        ElementFile.c
49        ElementFile_allocTable.c
50        ElementFile_copyTable.c
51        ElementFile_createColoring.c
52        ElementFile_distributeByRankOfDOF.c
53        ElementFile_gather.c
54        ElementFile_jacobeans.c
55        ElementFile_markNodes.c
56        ElementFile_optimizeOrdering.c
57        ElementFile_relableNodes.c
58        ElementFile_scatter.c
59        ElementFile_setCoordinates.c
60        ElementFile_setNodeRange.c
61        ElementFile_setTags.c
62        Finley.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_hex20.c
71        Mesh_hex8.c
72        Mesh_joinFaces.c
73        Mesh_markNodes.c
74        Mesh_merge.c
75        Mesh_optimizeDOFDistribution.c
76        Mesh_optimizeDOFLabeling.c
77        Mesh_prepare.c
78        Mesh_print.c
79        Mesh_read.c
80        Mesh_readGmsh.c
81        Mesh_rec4.c
82        Mesh_rec8.c
83        Mesh_relableElementNodes.c
84        Mesh_resolveNodeIds.c
85        Mesh_saveDX.c
86        Mesh_saveVTK.c
87        Mesh_setCoordinates.c
88        Mesh_tagmaps.c
89        Mesh_write.c
90        NodeFile.c
91        NodeFile_allocTable.c
92        NodeFile_copyTable.c
93        NodeFile_createDenseLabelings.c
94        NodeFile_gather.c
95        NodeFile_scatter.c
96        NodeFile_setCoordinates.c
97        NodeFile_setIdRange.c
98        NodeFile_setTags.c
99        NodeMapping.c
100        Quadrature.c
101        ReferenceElements.c
102        ShapeFunctions.c
103        TagMap.c
104        Util.c
105        CPPAdapter/FinleAdapterException.cpp
106        CPPAdapter/FinleyError.cpp
107        CPPAdapter/MeshAdapter.cpp
108        CPPAdapter/MeshAdapterFactory.cpp
109        CPPAdapter/SystemMatrixAdapter.cpp
110        CPPAdapter/TransportProblemAdapter.cpp
111    """.split()
112    headers = """
113        Assemble.h
114        ElementFile.h
115        Finley.h
116        FinleyVersion.h
117        IndexList.h
118        Mesh.h
119        NodeFile.h
120        NodeMapping.h
121        Quadrature.h
122        RectangularMesh.h
123        ReferenceElements.h
124        ShapeFunctions.h
125        TagMap.h
126        Util.h
127        vtkCellType.h
128    """.split()
129    cppadapter_headers = """
130        CPPAdapter/FinleyAdapterException.h
131        CPPAdapter/FinleyError.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 = ['FINLEY_EXPORTS',
143                                     'ESYSUTILS_STATIC_LIB'])
144    
145    py_wrapper_local_env.Append(LIBS = ['finley', 'escript', 'esysUtils', 'paso'] + env['sys_libs'] )
146    
147    module_name = 'finley'
148    py_wrapper_name = module_name + 'cpp'
149    
150    lib = local_env.SharedLibrary(module_name, sources)
151    env.Alias('target_finley_so', lib)
152    
153    py_wrapper_lib = py_wrapper_local_env.SharedLibrary(py_wrapper_name, 'CPPAdapter/finleycpp.cpp')
154    env.Alias('target_finleycpp_so', py_wrapper_lib)
155    
156    include_path = Dir('finley', local_env['incinstall'])
157    cppadapter_include_path = Dir('CppAdapter', include_path)
158    
159    tmp1 = local_env.Install(include_path, headers )
160    tmp2 = local_env.Install(cppadapter_include_path, cppadapter_headers )
161    env.Alias('target_install_finley_headers', [tmp1, tmp2])
162    
163    tmp3 = local_env.Install(local_env['libinstall'], lib)
164    env.Alias('target_install_finley_so', tmp3)
165    
166    #windows specific mod
167    tmp_inst = os.path.join(local_env['pyinstall'],module_name)
168    if os.name == 'nt':
169      wrapper_postfix = '.pyd'
170    else:
171      wrapper_postfix = '.so'
172    
173    share_name = os.path.join(tmp_inst,py_wrapper_name+wrapper_postfix)
174    
175    tmp4 = py_wrapper_local_env.InstallAs(target=share_name,
176                                          source=py_wrapper_lib[0])
177    
178    env.Alias('target_install_finleycpp_so', tmp4)
179    
180    # export the lib target since tests will depend on it
181    # the lib target is a list of file nodes (why? win32 produces more than one output file: .lib, .dll, .pdb)
182    # FIXME: This list handling produces the desired result but can this be done directly with scons File nodes?
183    dep_lib = [local_env['libinstall']+'/'+str(x) for x in lib]
184    Export('dep_lib')
185    
186    # Call the python sconscript
187    env.SConscript(dirs = ['#/finley/py_src'], build_dir='py', duplicate=0)
188    
189  libname = 'finleycpp'  # Call the unit tests SConscript
190    local_env.SConscript(dirs = ['#/finley/test'], build_dir='#/build/$PLATFORM/finley/test', duplicate=0)
191    
 finley_path = str(esysroot) + '/finley/src'  
 finley_cppadapter_path = str(esysroot) + '/finley/src/CPPAdapter'  
 paso_path = str(esysroot) + '/paso/src'  
 escript_path = str(esysroot) + '/escript/src'  
 esysUtils_path = str(esysroot) + '/esysUtils/src'  
   
 esys_lib_path = str(esysroot) + '/lib'  
 mmio_lib_path = str(esysroot) + '/tools/mmio/lib'  
 esysUtils_lib_path = str(esysroot) + '/esysUtils/lib'  
   
 esysUtils_lib = str(esysUtils_lib_path) + '/libesysUtils.a'  
 escript_lib = str(esys_lib_path) + '/libescriptcpp.so'  
 paso_lib = str(esys_lib_path) + '/libpaso.a'  
 mmio_lib = str(mmio_lib_path) + '/libmmio.a'  
   
 cpp_path = [finley_path,  
             finley_cppadapter_path,  
             paso_path,  
             escript_path,  
             esysUtils_path,  
             python_path,  
             boost_path]  
   
 incs = ['Finley.h']  
   
 sources = ['Assemble_addToSystemMatrix.c',  
            'Assemble_CopyElementData.c',  
            'Assemble_CopyNodalData.c',  
            'Assemble_getAssembleParameters.c',  
            'Assemble_getSize.c',  
            'Assemble_gradient.c',  
            'Assemble_handelShapeMissMatch.c',  
            'Assemble_integrate.c',  
            'Assemble_interpolate.c',  
            'Assemble_NodeCoordinates.c',  
            'Assemble_PDE.c',  
            'Assemble_PDEMatrix_Single2.c',  
            'Assemble_PDEMatrix_System2.c',  
            'Assemble_PDE_RHS.c',  
            'Assemble_RHSMatrix_Single.c',  
            'Assemble_RHSMatrix_System.c',  
            'Assemble_RobinCondition.c',  
            'Assemble_RobinCondition_RHS.c',  
            'Assemble_setNormal.c',  
            'ElementFile_allocTable.c',  
            'ElementFile.c',  
            'ElementFile_copyTable.c',  
            'ElementFile_gather.c',  
            'ElementFile_improveColoring.c',  
            'ElementFile_markNodes.c',  
            'ElementFile_optimizeDistribution.c',  
            'ElementFile_prepare.c',  
            'ElementFile_relableNodes.c',  
            'ElementFile_scatter.c',  
            'ElementFile_setNodeRange.c',  
            'Finley.c',  
            'IndexList.c',  
            'Mesh.c',  
            'Mesh_findMatchingFaces.c',  
            'Mesh_getPattern.c',  
            'Mesh_glueFaces.c',  
            'Mesh_hex20.c',  
            'Mesh_hex8.c',  
            'Mesh_joinFaces.c',  
            'Mesh_line2.c',  
            'Mesh_line3.c',  
            'Mesh_markNodes.c',  
            'Mesh_merge.c',  
            'Mesh_prepare.c',  
            'Mesh_prepareNodes.c',  
            'Mesh_print.c',  
            'Mesh_read.c',  
            'Mesh_rec4.c',  
            'Mesh_rec8.c',  
            'Mesh_relabelElementNodes.c',  
            'Mesh_resolveNodeIds.c',  
            'Mesh_saveDX.c',  
            'Mesh_saveVTK.c',  
            'Mesh_write.c',  
            'NodeFile_allocTable.c',  
            'NodeFile.c',  
            'NodeFile_copyTable.c',  
            'NodeFile_gatter.c',  
            'NodeFile_scatter.c',  
            'NodeFile_setCoordinates.c',  
            'NodeFile_setIdRange.c',  
            'Quadrature.c',  
            'ReferenceElements.c',  
            'ShapeFunctions.c',  
            'Util.c',  
            'CPPAdapter/FinleyError.cpp',  
            'CPPAdapter/MeshAdapter.cpp',  
            'CPPAdapter/MeshAdapterFactory.cpp',  
            'CPPAdapter/SystemMatrixAdapter.cpp',  
            'CPPAdapter/finleycpp.cpp']  
   
 lib_path = [esys_lib_path,  
             mmio_lib_path,  
             esysUtils_lib_path,  
             boost_lib_path] \  
           + solver_lib_paths  
   
   
 libs = ['escriptcpp',  
         'esysUtils',  
         'paso',  
         'mmio',  
         str(boost_lib),  
         'dl',  
         'util']     \  
        + sys_libs   \  
        + solver_libs  
   
 finley_env = Environment(ENV = os.environ)  
   
 finley_env.Replace(CC = cc)  
 finley_env.Replace(CXX = cxx)  
 finley_env.Replace(CCFLAGS = cc_flags)  
 finley_env.Replace(CXXFLAGS = cxx_flags)  
 finley_env.Replace(SHOBJSUFFIX = '.lo')  
 finley_env.Replace(CPPPATH = cpp_path)  
 finley_env.Replace(LIBPATH = lib_path)  
 finley_env.Replace(LIBS = libs)  
   
 finley_lib = finley_env.SharedLibrary(libname, sources)  
   
 Depends(finley_lib, esysUtils_lib)  
 Depends(finley_lib, escript_lib)  
 Depends(finley_lib, paso_lib)  
 Depends(finley_lib, mmio_lib)  
   
 Default(finley_env.Install(incdir, incs))  
 Default(finley_env.Install(incdir2, incs))  
 if incinstall != None:  
   Default(finley_env.Install(incinstall, incs))  
   
 Default(finley_env.Install(libdir, finley_lib))  
 Default(finley_env.Install(libdir2, finley_lib))  
 if libinstall != None:  
   Default(finley_env.Install(libinstall, finley_lib))  

Legend:
Removed from v.481  
changed lines
  Added in v.2031

  ViewVC Help
Powered by ViewVC 1.1.26