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

Annotation of /trunk/finley/src/SConscript

Parent Directory Parent Directory | Revision Log Revision Log


Revision 682 - (hide annotations)
Mon Mar 27 02:43:09 2006 UTC (13 years, 2 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 jgs 182 Import('*')
2    
3 robwdcock 682 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 jgs 182
8 robwdcock 682 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 jgs 277
13 robwdcock 682 src_dir = local_env.Dir('.').srcnode().abspath
14 jgs 182
15 robwdcock 682 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 jgs 277
22    
23 robwdcock 682 # 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 jgs 190
28 robwdcock 682 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 jgs 481
32 robwdcock 682 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 jgs 182
45 jgs 277
46 robwdcock 682 lib = local_env.SharedLibrary(lib_name, sources)
47     py_wrapper_lib = py_wrapper_local_env.SharedLibrary( py_wrapper_lib_name, py_wrapper_source)
48 jgs 277
49 robwdcock 682 include_path = Dir(lib_name, incinstall)
50     cppadapter_include_path = Dir('CppAdapter', include_path)
51 jgs 182
52 robwdcock 682 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 jgs 182
57 robwdcock 682 # 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 jgs 277
63 robwdcock 682 # Call the python sconscript
64     env.SConscript(dirs = ['#/finley/py_src'], build_dir='py', duplicate=0)
65 jgs 277
66 robwdcock 682 # Call the unit tests SConscript
67     local_env.SConscript(dirs = ['#/finley/test'], build_dir='#/build/$PLATFORM/finley/test', duplicate=0)
68 jgs 481

  ViewVC Help
Powered by ViewVC 1.1.26