/[escript]/trunk/finley/src/SConscript
ViewVC logotype

Diff of /trunk/finley/src/SConscript

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

trunk/finley/src/finleyC/SConscript revision 188 by jgs, Mon Nov 21 01:20:26 2005 UTC trunk/finley/src/SConscript revision 700 by gross, Thu Apr 6 00:13:40 2006 UTC
# Line 1  Line 1 
1    import os
2  Import('*')  Import('*')
3    
4  import os  local_env=env.Copy()
5    py_wrapper_local_env=env.Copy()
6    # Remove the sharedlibrary prefix on all platform - we don't want 'lib' mucking with our python modules
7    del py_wrapper_local_env['SHLIBPREFIX']
8    
9    lib_name = 'finley'
10    py_wrapper_name = lib_name+'cpp'
11    py_wrapper_source = 'CPPAdapter/'+py_wrapper_name+'.cpp' # FIXME: In need of a source tree refactor
12    py_wrapper_lib_name = py_wrapper_name
13    
14    src_dir = local_env.Dir('.').srcnode().abspath
15    filenames = [ x for x in os.listdir(src_dir) if os.path.splitext(x)[1] in [".h", ".c", ".cpp"] ]
16    
17    sources = [x for x in filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]
18    headers = [x for x in filenames if os.path.splitext(x)[1] in ['.h']]
19    
20    
21    # finleycpp has additional source in the CPPAdapter sub-directory. Append these to the list
22    cppadapter_filenames = [ 'CPPAdapter/'+x for x in os.listdir(src_dir+'/CPPAdapter')  if os.path.splitext(x)[1] in [".h", ".c", ".cpp"] ]
23    sources += [ x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]
24    cppadapter_headers = [x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.h']]
25    
26    sources.remove(py_wrapper_source) # FIXME: should probably refactor the source tree so the python wrapper isn't colocated with c++ sources
27    local_env.Append(LIBS = [boost_lib, python_lib, sys_libs, 'escript', 'esysUtils', 'paso'])
28    py_wrapper_local_env.Append(LIBS = [boost_lib, python_lib, sys_libs, lib_name, 'escript', 'esysUtils', 'paso'])
29    
30    if mkl_libs:
31       local_env.Append(CPPDEFINES=['MKL',])
32       local_env.Append(LIBS = mkl_libs)
33    if scsl_libs:
34       local_env.Append(CPPDEFINES=['SCSL',])
35       local_env.Append(LIBS = scsl_libs)
36    if umf_libs:
37       local_env.Append(CPPDEFINES=['UMFPACK',])
38       local_env.Append(LIBS = umf_libs)
39    if papi_libs:
40       local_env.Append(CPPDEFINES=['PAPI',])
41       local_env.Append(LIBS = papi_libs)
42    
43    
44    lib = local_env.SharedLibrary(lib_name, sources)
45    py_wrapper_lib = py_wrapper_local_env.SharedLibrary( py_wrapper_lib_name, py_wrapper_source)
46    
47    include_path = Dir(lib_name, incinstall)
48    cppadapter_include_path = Dir('CppAdapter', include_path)
49    
50    local_env.Install(include_path, headers )
51    local_env.Install(cppadapter_include_path, cppadapter_headers )
52    local_env.Install(libinstall, lib)
53    py_wrapper_local_env.Install(pyinstall+'/finley', py_wrapper_lib)
54    
55    # export the lib target since tests will depend on it
56    # the lib target is a list of file nodes (why? win32 produces more than one output file: .lib, .dll, .pdb)
57    # FIXME: This list handling produces the desired result but can this be done directly with scons File nodes?
58    dep_lib = [libinstall+'/'+str(x) for x in lib]
59    Export('dep_lib')
60    
61    # add source files to release
62    release_srcfiles = [ env.File(x) for x in filenames + cppadapter_filenames ] + [env.File("SConscript"), ]
63    env.Zip(src_zipfile, release_srcfiles)
64    env.Tar(src_tarfile, release_srcfiles)
65    
66  cc_flags = '-O0 -openmp -openmp_report0 -tpp2 -ansi -ansi_alias -no-gcc -fpic -w1'  # Call the python sconscript
67    env.SConscript(dirs = ['#/finley/py_src'], build_dir='py', duplicate=0)
68    
69  cpp_path = ['#../escript/inc',  # Call the unit tests SConscript
70              '#../esysUtils/inc',  local_env.SConscript(dirs = ['#/finley/test'], build_dir='#/build/$PLATFORM/finley/test', duplicate=0)
             '#../finley/inc',  
             '#../paso/inc',  
             '/raid2/tools/python-2.3.4/include/python2.3',  
             '/raid2/tools/boost/include/boost-1_31']  
   
 lib = 'finleyC'  
 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']  
   
 finleyC_env = Environment(ENV = os.environ)  
   
 finleyC_env.Replace(CC = 'icc')  
 finleyC_env.Replace(CCFLAGS = cc_flags)  
 finleyC_env.Replace(CPPPATH = cpp_path)  
71    
 finleyC_lib = finleyC_env.StaticLibrary(lib, sources)  
 finleyC_env.Install(libdir, finleyC_lib)  

Legend:
Removed from v.188  
changed lines
  Added in v.700

  ViewVC Help
Powered by ViewVC 1.1.26