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

Diff of /trunk/escript/src/SConscript

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

revision 1664 by ksteube, Tue Jul 22 03:41:38 2008 UTC revision 1705 by ksteube, Thu Aug 14 05:56:40 2008 UTC
# Line 1  Line 1 
1    #
2    # $Id$
3    #
4    #######################################################
5    #
6    #           Copyright 2003-2007 by ACceSS MNRF
7    #       Copyright 2007 by University of Queensland
8    #
9    #                http://esscc.uq.edu.au
10    #        Primary Business: Queensland, Australia
11    #  Licensed under the Open Software License version 3.0
12    #     http://www.opensource.org/licenses/osl-3.0.php
13    #
14    #######################################################
15    #
16    
17  import os  import os
18  Import('*')  Import('*')
19    
20  local_env=env.Copy()  local_env = clone_env(env_mpi)
21  py_wrapper_local_env=env.Copy()  py_wrapper_local_env = clone_env(env_mpi)
22    
23  # 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
24  del py_wrapper_local_env['SHLIBPREFIX']  del py_wrapper_local_env['SHLIBPREFIX']
25    
26  lib_name = 'escript'  sources = """
27  py_wrapper_name = lib_name+'cpp'      AbstractContinuousDomain.cpp
28  py_wrapper_source = py_wrapper_name+'.cpp'      AbstractDomain.cpp
29  py_wrapper_lib_name = py_wrapper_name      AbstractSystemMatrix.cpp
30        AbstractTransportProblem.cpp
31  # get the relevant file names:      Data.cpp
32  src_dir = local_env.Dir('.').srcnode().abspath      DataAbstract.cpp
33  filenames = [ x for x in os.listdir(src_dir) if os.path.splitext(x)[1] in [".h", ".c", ".cpp"] ]      DataArrayView.cpp
34        DataBlocks2D.cpp
35  sources = [x for x in filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]      DataC.cpp
36  headers = [x for x in filenames if os.path.splitext(x)[1] in ['.h']]      DataConstant.cpp
37        DataEmpty.cpp
38  # Filter out sources that should not be in the list automatically      DataException.cpp
39  sources.remove(py_wrapper_source) # FIXME: should probably refactor the source tree so the python wrapper isn't colocated with c++ sources      DataExpanded.cpp
40        DataFactory.cpp
41  local_env.Append(LIBS = [boost_lib] + [ 'esysUtils'] + sys_libs + netCDF_libs + mpi_libs + [python_lib])      DataTagged.cpp
42  py_wrapper_local_env.Append(LIBS = [boost_lib] + [ lib_name, 'esysUtils'] + sys_libs + netCDF_libs + [python_lib])      DataVector.cpp
43  if useNetCDF == 'yes':      DomainException.cpp
44      local_env.Append(LIBS = netCDF_libs)      FunctionSpace.cpp
45      local_env.Append(CPPDEFINES = [ 'USE_NETCDF' ])      FunctionSpaceException.cpp
46      py_wrapper_local_env.Append(LIBS = netCDF_libs)      FunctionSpaceFactory.cpp
47      py_wrapper_local_env.Append(CPPDEFINES = [ 'USE_NETCDF' ])      NullDomain.cpp
48        SystemMatrixException.cpp
49  if papi_instrument_solver:      Taipan.cpp
50     local_env.Append(CPPDEFINES=['PAPI',])      TransportProblemException.cpp
51  if papi_libs:      Utils.cpp
52     local_env.Append(LIBS = papi_libs)      blocktimer.c
53     local_env.Append(CPPDEFINES=['BLOCKPAPI',])  """.split()
54    headers = """
55  local_env.Append(CPPDEFINES = [ 'ESCRIPT_EXPORTS'] )      AbstractContinuousDomain.h
56        AbstractDomain.h
57  lib = local_env.SharedLibrary(lib_name, sources)      AbstractSystemMatrix.h
58  py_wrapper_lib = py_wrapper_local_env.SharedLibrary( py_wrapper_lib_name, py_wrapper_source)      AbstractTransportProblem.h
59        BinaryOp.h
60  include_path = Dir(lib_name, incinstall)      Data.h
61        DataAbstract.h
62  local_env.Install(include_path, headers )      DataAlgorithm.h
63  local_env.Install(libinstall, lib)      DataArrayView.h
64  py_wrapper_local_env.InstallAs(pyinstall+'/escript/escriptcpp.so', py_wrapper_lib)      DataBlocks2D.h
65        DataC.h
66        DataConstant.h
67        DataEmpty.h
68        DataException.h
69        DataExpanded.h
70        DataFactory.h
71        DataTagged.h
72        DataVector.h
73        DomainException.h
74        FunctionSpace.h
75        FunctionSpaceException.h
76        FunctionSpaceFactory.h
77        LocalOps.h
78        NullDomain.h
79        SystemMatrixException.h
80        Taipan.h
81        TransportProblemException.h
82        UnaryFuncs.h
83        UnaryOp.h
84        UtilC.h
85        Utils.h
86        blocktimer.h
87        esysmpi.h
88        system_dep.h
89    """.split()
90    
91    local_env.Append(LIBS = [ 'esysUtils'] + env['sys_libs'] )
92    py_wrapper_local_env.Append(LIBS = [ 'escript', 'esysUtils'] + env['sys_libs'])
93    
94    lib = local_env.SharedLibrary('escript', sources)
95    env.Alias('target_escript_so', lib)
96    
97    py_wrapper_lib = py_wrapper_local_env.SharedLibrary('escriptcpp', 'escriptcpp.cpp')
98    env.Alias('target_escriptcpp_so', py_wrapper_lib)
99    
100    include_path = Dir('escript', local_env['incinstall'])
101    
102    tmp1 = local_env.Install(include_path, headers )
103    env.Alias('target_install_escript_headers', [tmp1])
104    
105    tmp3 = local_env.Install(local_env['libinstall'], lib)
106    env.Alias('target_install_escript_so', tmp3)
107    
108  #windows specific mod  #windows specific mod
109  if os.name == 'nt':  if os.name == 'nt':
110     py_wrapper_local_env.InstallAs(target = [ pyinstall+'/escript/'+py_wrapper_lib_name+'.pyd', \    tmp4 = py_wrapper_local_env.Install(local_env['pyinstall']+'/escript', ['escriptcpp.pyd', 'escriptcpp.lib', 'escriptcpp.exp'])
111                                               pyinstall+'/escript/'+py_wrapper_lib_name+'.lib', \  else:
112                                               pyinstall+'/escript/'+py_wrapper_lib_name+'.exp' ], \    tmp4 = py_wrapper_local_env.InstallAs(local_env['pyinstall']+'/escript/escriptcpp.so', py_wrapper_lib)
113                                 source = py_wrapper_lib )  env.Alias('target_install_escriptcpp_so', tmp4)
114    
115  # export the lib target since tests will depend on it  # export the lib target since tests will depend on it
116  # 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)
117  # 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?
118  dep_lib = [libinstall+'/'+str(x) for x in lib]  dep_lib = [local_env['libinstall']+'/'+str(x) for x in lib]
119  Export('dep_lib')  Export('dep_lib')
120    
   
   
 # add source files to release  
 release_srcfiles = [ env.File(x) for x in filenames ] + [env.File("SConscript"), ]  
 env.Zip(src_zipfile, release_srcfiles)  
 env.Tar(src_tarfile, release_srcfiles)  
   
121  # Call the python sconscript  # Call the python sconscript
122  env.SConscript(dirs = ['#/escript/py_src'], build_dir='py', duplicate=0)  env.SConscript(dirs = ['#/escript/py_src'], build_dir='py', duplicate=0)
123    
124  # Call the unit tests SConscript  # Call the unit tests SConscript
125  local_env.SConscript(dirs = ['#/escript/test'], build_dir='#/build/$PLATFORM/escript/test', duplicate=0)  local_env.SConscript(dirs = ['#/escript/test'], build_dir='#/build/$PLATFORM/escript/test', duplicate=0)
126    

Legend:
Removed from v.1664  
changed lines
  Added in v.1705

  ViewVC Help
Powered by ViewVC 1.1.26