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

Contents of /trunk/finley/src/SConscript

Parent Directory Parent Directory | Revision Log Revision Log


Revision 682 - (show annotations)
Mon Mar 27 02:43:09 2006 UTC (13 years, 7 months ago) by robwdcock
File size: 2857 byte(s)
+ NEW BUILD SYSTEM

This commit contains the new build system with cross-platform support.
Most things work are before though you can have more control.

ENVIRONMENT settings have changed:
+ You no longer require LD_LIBRARY_PATH or PYTHONPATH to point to the
esysroot for building and testing performed via scons
+ ACcESS altix users: It is recommended you change your modules to load
the latest intel compiler and other libraries required by boost to match
the setup in svn (you can override). The correct modules are as follows

module load intel_cc.9.0.026
export
MODULEPATH=${MODULEPATH}:/data/raid2/toolspp4/modulefiles/gcc-3.3.6
module load boost/1.33.0/python-2.4.1
module load python/2.4.1
module load numarray/1.3.3


1 Import('*')
2
3 local_env=env.Copy()
4 py_wrapper_local_env=env.Copy()
5 # Remove the sharedlibrary prefix on all platform - we don't want 'lib' mucking with our python modules
6 del py_wrapper_local_env['SHLIBPREFIX']
7
8 lib_name = 'finley'
9 py_wrapper_name = lib_name+'cpp'
10 py_wrapper_source = 'CPPAdapter/'+py_wrapper_name+'.cpp' # FIXME: In need of a source tree refactor
11 py_wrapper_lib_name = py_wrapper_name
12
13 src_dir = local_env.Dir('.').srcnode().abspath
14
15 import os
16 filenames = os.listdir(src_dir)
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 # Filter unused sources
20 sources.remove('ElementFile_borrowLocalVolume.c') # FIXME: Should this file be removed?
21
22
23 # finleycpp has additional source in the CPPAdapter sub-directory. Append these to the list
24 cppadapter_filenames = os.listdir(src_dir+'/CPPAdapter');
25 sources += ['CPPAdapter/'+x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.cpp', '.c']]
26 cppadapter_headers = ['CPPAdapter/'+x for x in cppadapter_filenames if os.path.splitext(x)[1] in ['.h']]
27
28 sources.remove(py_wrapper_source) # FIXME: should probably refactor the source tree so the python wrapper isn't colocated with c++ sources
29 local_env.Append(LIBS = [boost_lib, python_lib, sys_libs, 'escript', 'esysUtils', 'paso'])
30 py_wrapper_local_env.Append(LIBS = [boost_lib, python_lib, sys_libs, lib_name, 'escript', 'esysUtils', 'paso'])
31
32 if mkl_libs:
33 local_env.Append(CPPDEFINES=['MKL',])
34 local_env.Append(LIBS = mkl_libs)
35 if scsl_libs:
36 local_env.Append(CPPDEFINES=['SCSL',])
37 local_env.Append(LIBS = scsl_libs)
38 if umf_libs:
39 local_env.Append(CPPDEFINES=['UMFPACK',])
40 local_env.Append(LIBS = umf_libs)
41 if papi_libs:
42 local_env.Append(CPPDEFINES=['PAPI',])
43 local_env.Append(LIBS = papi_libs)
44
45
46 lib = local_env.SharedLibrary(lib_name, sources)
47 py_wrapper_lib = py_wrapper_local_env.SharedLibrary( py_wrapper_lib_name, py_wrapper_source)
48
49 include_path = Dir(lib_name, incinstall)
50 cppadapter_include_path = Dir('CppAdapter', include_path)
51
52 local_env.Install(include_path, headers )
53 local_env.Install(cppadapter_include_path, cppadapter_headers )
54 local_env.Install(libinstall, lib)
55 py_wrapper_local_env.Install(pyinstall+'/finley', py_wrapper_lib)
56
57 # export the lib target since tests will depend on it
58 # the lib target is a list of file nodes (why? win32 produces more than one output file: .lib, .dll, .pdb)
59 # FIXME: This list handling produces the desired result but can this be done directly with scons File nodes?
60 dep_lib = [libinstall+'/'+str(x) for x in lib]
61 Export('dep_lib')
62
63 # Call the python sconscript
64 env.SConscript(dirs = ['#/finley/py_src'], build_dir='py', duplicate=0)
65
66 # Call the unit tests SConscript
67 local_env.SConscript(dirs = ['#/finley/test'], build_dir='#/build/$PLATFORM/finley/test', duplicate=0)
68

  ViewVC Help
Powered by ViewVC 1.1.26