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

Contents of /trunk/finley/src/SConscript

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1133 - (show annotations)
Tue May 8 07:19:33 2007 UTC (11 years, 5 months ago) by gross
File size: 3519 byte(s)
Changes needed for windows. This still does not work on and has not run on linux and the altix. 
 
There are a few changes in names in the scons script, in particular _libs is used rather than _lib and _libs is always a list. By default on windows MSVC is used. The location of python is at C:\Program Files\python<version>, boost at C:\Program Files\boost and netcdf at C:\Program Files\netcdf. 

 
1 # Copyright 2006 by ACcESS MNRF
2 #
3 # http://www.access.edu.au
4 # Primary Business: Queensland, Australia
5 # Licensed under the Open Software License version 3.0
6 # http://www.opensource.org/licenses/osl-3.0.php
7 #
8 import os
9 Import('*')
10
11 local_env=env.Copy()
12 py_wrapper_local_env=env.Copy()
13 # Remove the sharedlibrary prefix on all platform - we don't want 'lib' mucking with our python modules
14 del py_wrapper_local_env['SHLIBPREFIX']
15
16 lib_name = 'finley'
17 py_wrapper_name = lib_name+'cpp'
18 py_wrapper_source = 'CPPAdapter/'+py_wrapper_name+'.cpp' # FIXME: In need of a source tree refactor
19 py_wrapper_lib_name = py_wrapper_name
20
21 src_dir = local_env.Dir('.').srcnode().abspath
22 filenames = [ x for x in os.listdir(src_dir) if os.path.splitext(x)[1] in [".h", ".c", ".cpp"] ]
23
24 sources = [x for x in filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]
25 headers = [x for x in filenames if os.path.splitext(x)[1] in ['.h']]
26
27
28 # finleycpp has additional source in the CPPAdapter sub-directory. Append these to the list
29 cppadapter_filenames = [ 'CPPAdapter/'+x for x in os.listdir(src_dir+'/CPPAdapter') if os.path.splitext(x)[1] in [".h", ".c", ".cpp"] ]
30 sources += [ x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]
31 cppadapter_headers = [x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.h']]
32
33 sources.remove(py_wrapper_source) # FIXME: should probably refactor the source tree so the python wrapper isn't colocated with c++ sources
34 local_env.Append(LIBS = boost_libs + python_libs + sys_libs + ['escript', 'esysUtils', 'paso'])
35 py_wrapper_local_env.Append(LIBS = boost_libs + python_libs + sys_libs + [lib_name, 'escript', 'esysUtils', 'paso'])
36
37 if mkl_libs:
38 local_env.Append(CPPDEFINES=['MKL',])
39 local_env.Append(LIBS = mkl_libs)
40 if scsl_libs:
41 local_env.Append(CPPDEFINES=['SCSL',])
42 local_env.Append(LIBS = scsl_libs)
43 if umf_libs and amd_libs:
44 local_env.Append(CPPDEFINES=['UMFPACK',])
45 local_env.Append(LIBS = umf_libs)
46 local_env.Append(LIBS = amd_libs)
47
48 if blas_libs:
49 local_env.Append(LIBS = blas_libs)
50
51 if papi_libs:
52 local_env.Append(CPPDEFINES=['PAPI',])
53 local_env.Append(LIBS = papi_libs)
54
55 local_env.Append(CPPDEFINES = 'FINLEY_EXPORTS')
56
57 lib = local_env.SharedLibrary(lib_name, sources)
58 py_wrapper_lib = py_wrapper_local_env.SharedLibrary( py_wrapper_lib_name, py_wrapper_source)
59
60 include_path = Dir(lib_name, incinstall)
61 cppadapter_include_path = Dir('CppAdapter', include_path)
62
63 local_env.Install(include_path, headers )
64 local_env.Install(cppadapter_include_path, cppadapter_headers )
65 local_env.Install(libinstall, lib)
66 py_wrapper_local_env.Install(pyinstall+'/finley', py_wrapper_lib)
67
68 # export the lib target since tests will depend on it
69 # the lib target is a list of file nodes (why? win32 produces more than one output file: .lib, .dll, .pdb)
70 # FIXME: This list handling produces the desired result but can this be done directly with scons File nodes?
71 dep_lib = [libinstall+'/'+str(x) for x in lib]
72 Export('dep_lib')
73
74 # add source files to release
75 release_srcfiles = [ env.File(x) for x in filenames + cppadapter_filenames ] + [env.File("SConscript"), ]
76 env.Zip(src_zipfile, release_srcfiles)
77 try:
78 env.Tar(src_tarfile, release_srcfiles)
79 except AttributeError:
80 pass
81 # Call the python sconscript
82 env.SConscript(dirs = ['#/finley/py_src'], build_dir='py', duplicate=0)
83
84 # Call the unit tests SConscript
85 local_env.SConscript(dirs = ['#/finley/test'], build_dir='#/build/$PLATFORM/finley/test', duplicate=0)
86

  ViewVC Help
Powered by ViewVC 1.1.26