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

Diff of /trunk/escript/src/SConscript

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

trunk/escript/src/Data/SConscript revision 392 by gross, Tue Dec 20 05:39:30 2005 UTC trunk/escript/src/SConscript revision 2032 by phornby, Wed Nov 12 08:11:19 2008 UTC
# Line 1  Line 1 
1  libinstall = None  ########################################################
2    #
3    # Copyright (c) 2003-2008 by University of Queensland
4    # Earth Systems Science Computational Center (ESSCC)
5    # http://www.uq.edu.au/esscc
6    #
7    # Primary Business: Queensland, Australia
8    # Licensed under the Open Software License version 3.0
9    # http://www.opensource.org/licenses/osl-3.0.php
10    #
11    ########################################################
12    
 Import('*')  
13    
14  import os  import os
15  import string  Import('*')
16    
17    local_env = clone_env(env_mpi)
18    py_wrapper_local_env = clone_env(env_mpi)
19    
20    # Remove the sharedlibrary prefix on all platform - we don't want 'lib' mucking with our python modules
21    del py_wrapper_local_env['SHLIBPREFIX']
22    
23  libname = 'escriptcpp'  sources = """
24        AbstractContinuousDomain.cpp
25        AbstractDomain.cpp
26        AbstractSystemMatrix.cpp
27        AbstractTransportProblem.cpp
28        Data.cpp
29        DataAbstract.cpp
30        DataBlocks2D.cpp
31        DataC.cpp
32        DataConstant.cpp
33        DataEmpty.cpp
34        DataException.cpp
35        DataExpanded.cpp
36        DataFactory.cpp
37        DataLazy.cpp
38        DataMaths.cpp
39        DataReady.cpp
40        DataTagged.cpp
41        DataTypes.cpp
42        DataVector.cpp
43        DomainException.cpp
44        EscriptParams.cpp
45        FunctionSpace.cpp
46        FunctionSpaceException.cpp
47        FunctionSpaceFactory.cpp
48        NullDomain.cpp
49        SystemMatrixException.cpp
50        Taipan.cpp
51        TransportProblemException.cpp
52        Utils.cpp
53        blocktimer.c
54    """.split()
55    headers = """
56        AbstractContinuousDomain.h
57        AbstractDomain.h
58        AbstractSystemMatrix.h
59        AbstractTransportProblem.h
60        BinaryOp.h
61        Data.h
62        DataAbstract.h
63        DataAlgorithm.h
64        DataBlocks2D.h
65        DataC.h
66        DataConstant.h
67        DataEmpty.h
68        DataException.h
69        DataExpanded.h
70        DataFactory.h
71        DataLazy.h
72        DataMaths.h
73        DataReady.h
74        DataTagged.h
75        DataTypes.h
76        DataVector.h
77        DomainException.h
78        EscriptParams.h
79        FunctionSpace.h
80        FunctionSpaceException.h
81        FunctionSpaceFactory.h
82        LocalOps.h
83        NullDomain.h
84        Pointers.h
85        SystemMatrixException.h
86        Taipan.h
87        TransportProblemException.h
88        UnaryFuncs.h
89        UnaryOp.h
90        UtilC.h
91        Utils.h
92        blocktimer.h
93        esysmpi.h
94        system_dep.h
95    """.split()
96    
97    local_env.Append(LIBS = [ 'esysUtils'] + env['sys_libs'] )
98    
99    if IS_WINDOWS_PLATFORM :
100      local_env.Append(CPPDEFINES = ['ESCRIPT_EXPORTS',
101                                     'ESYSUTILS_STATIC_LIB'])
102      py_wrapper_local_env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])
103    
104    py_wrapper_local_env.Append(LIBS = [ 'escript', 'esysUtils'] + env['sys_libs'])
105    
106    module_name = 'escript'
107    py_wrapper_name = module_name + 'cpp'
108    
109    lib = local_env.SharedLibrary(module_name, sources)
110    env.Alias('target_escript_so', lib)
111    
112    py_wrapper_lib = py_wrapper_local_env.SharedLibrary(py_wrapper_name, 'escriptcpp.cpp')
113    env.Alias('target_escriptcpp_so', py_wrapper_lib)
114    
115    include_path = Dir('escript', local_env['incinstall'])
116    
117    tmp1 = local_env.Install(include_path, headers )
118    env.Alias('target_install_escript_headers', [tmp1])
119    
120    tmp3 = local_env.Install(local_env['libinstall'], lib)
121    env.Alias('target_install_escript_so', tmp3)
122    
123    #windows specific mod
124    tmp_inst = os.path.join(local_env['pyinstall'],module_name)
125    if os.name == 'nt':
126      wrapper_postfix = '.pyd'
127    else:
128      wrapper_postfix = '.so'
129    
130    share_name = os.path.join(tmp_inst,py_wrapper_name+wrapper_postfix)
131    
132    tmp4 = py_wrapper_local_env.InstallAs(target=share_name,
133                                          source=py_wrapper_lib[0])
134    
135    env.Alias('target_install_escriptcpp_so', tmp4)
136    
137    # export the lib target since tests will depend on it
138    # the lib target is a list of file nodes (why? win32 produces more than one output file: .lib, .dll, .pdb)
139    # FIXME: This list handling produces the desired result but can this be done directly with scons File nodes?
140    dep_lib = [local_env['libinstall']+'/'+str(x) for x in lib]
141    Export('dep_lib')
142    
143  escript_path = str(esysroot) + '/escript/inc'  # Call the python sconscript
144  esysUtils_path = str(esysroot) + '/esysUtils/inc'  env.SConscript(dirs = ['#/escript/py_src'], build_dir='py', duplicate=0)
145    
146  esysUtils_lib_path = str(esysroot) + '/esysUtils/lib'  # Call the unit tests SConscript
147    local_env.SConscript(dirs = ['#/escript/test'], build_dir='#/build/$PLATFORM/escript/test', duplicate=0)
148    
 esysUtils_lib = str(esysUtils_lib_path) + '/libesysUtils.a'  
   
 cpp_path = [escript_path,  
             esysUtils_path,  
             python_path,  
             boost_path]  
   
 sources = ['AbstractContinuousDomain.cpp',  
            'AbstractDomain.cpp',  
            'AbstractSystemMatrix.cpp',  
            'DataAbstract.cpp',  
            'DataArray.cpp',  
            'DataArrayView.cpp',  
            'DataBlocks2D.cpp',  
            'DataCached.cpp',  
            'DataC.cpp',  
            'DataConstant.cpp',  
            'Data.cpp',  
            'DataEmpty.cpp',  
            'DataExpanded.cpp',  
            'DataFactory.cpp',  
            'DataProf.cpp',  
            'DataTagged.cpp',  
            'DataVariable.cpp',  
            'DataVector.cpp',  
            'FunctionSpace.cpp',  
            'FunctionSpaceFactory.cpp',  
            'NullDomain.cpp',  
            'Taipan.cpp',  
            'Utils.cpp',  
            'escriptcpp.cpp']  
   
 lib_path = [esysUtils_lib_path,  
             boost_lib_path]  
   
 libs = ['esysUtils',  
         str(boost_lib)]  
   
 libs.extend(sys_libs)  
   
 escript_env = Environment(ENV = os.environ)  
   
 escript_env.Replace(CXX = cxx)  
 escript_env.Replace(SHOBJSUFFIX = '.lo')  
 escript_env.Replace(CXXFLAGS = cxx_flags)  
 escript_env.Replace(CPPPATH = cpp_path)  
 escript_env.Replace(LIBPATH = lib_path)  
 escript_env.Replace(LIBS = libs)  
   
 escript_lib = escript_env.SharedLibrary(libname, sources)  
   
 Depends(escript_lib, esysUtils_lib)  
   
 Default(escript_env.Install(libdir, escript_lib))  
 Default(escript_env.Install(libdir2, escript_lib))  
 if libinstall != None:  
   Default(escript_env.Install(libinstall, escript_lib))  

Legend:
Removed from v.392  
changed lines
  Added in v.2032

  ViewVC Help
Powered by ViewVC 1.1.26