/[escript]/branches/diaplayground/SConstruct
ViewVC logotype

Diff of /branches/diaplayground/SConstruct

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

revision 2423 by gross, Thu May 14 05:02:20 2009 UTC revision 2820 by artak, Thu Dec 10 05:03:11 2009 UTC
# Line 1  Line 1 
1    
2  ########################################################  ########################################################
3  #  #
4  # Copyright (c) 2003-2008 by University of Queensland  # Copyright (c) 2003-2009 by University of Queensland
5  # Earth Systems Science Computational Center (ESSCC)  # Earth Systems Science Computational Center (ESSCC)
6  # http://www.uq.edu.au/esscc  # http://www.uq.edu.au/esscc
7  #  #
# Line 16  EnsureSConsVersion(0,96,91) Line 16  EnsureSConsVersion(0,96,91)
16  EnsurePythonVersion(2,3)  EnsurePythonVersion(2,3)
17    
18  import sys, os, re, socket, platform, stat  import sys, os, re, socket, platform, stat
19    # For copy()
20    import shutil
21    
22  # Add our extensions  # Add our extensions
23  if os.path.isdir('scons'): sys.path.append('scons')  if os.path.isdir('scons'): sys.path.append('scons')
# Line 33  IS_WINDOWS_PLATFORM = (os.name== "nt") Line 35  IS_WINDOWS_PLATFORM = (os.name== "nt")
35    
36  prefix = ARGUMENTS.get('prefix', Dir('#.').abspath)  prefix = ARGUMENTS.get('prefix', Dir('#.').abspath)
37    
38    #Holds names of variables from the calling environment which need to be passed
39    #to tools
40    env_export=[]
41    
42  #Determine where to read options from use:  #Determine where to read options from use:
43  #1. command line  #1. command line
44  #2. scons/<hostname>_options.py  #2. scons/<hostname>_options.py
45  #3. name as part of a cluster  #3. name as part of a cluster
46  options_file=ARGUMENTS.get('options_file', None)  options_file=ARGUMENTS.get('options_file', None)
47    effective_hostname=socket.gethostname().split('.')[0]
48  if not options_file:  if not options_file:
49    hostname = re.sub("[^0-9a-zA-Z]", "_", socket.gethostname().split('.')[0])    mangledhostname = re.sub("[^0-9a-zA-Z]", "_", effective_hostname)
50    options_file = os.path.join("scons",hostname+"_options.py")    options_file = os.path.join("scons",mangledhostname+"_options.py")
51    #If there is no options file with that name see if there is a substitute    #If there is no options file with that name see if there is a substitute
52    if not os.path.isfile(options_file):    if not os.path.isfile(options_file):
53      tmp = scons_extensions.effectiveName(hostname)      effective_hostname = scons_extensions.effectiveName(effective_hostname)
54      options_file = os.path.join("scons",tmp+"_options.py")      mangledhostname = re.sub("[^0-9a-zA-Z]", "_", effective_hostname)
55        options_file = os.path.join("scons",mangledhostname+"_options.py")
56    
57  if not os.path.isfile(options_file):  if not os.path.isfile(options_file):
58    print "Options file not found (expected '%s')" % options_file    print "Options file not found (expected '%s')" % options_file
# Line 52  if not os.path.isfile(options_file): Line 60  if not os.path.isfile(options_file):
60  else:  else:
61    print "Options file is", options_file    print "Options file is", options_file
62    
63  # Load options file and command-line arguments  #Does our scons support the newer Variables class or do we need to use Options?
64  opts = Options(options_file, ARGUMENTS)  
65    try:
66       dummyvar=Variables
67       opts = Variables(options_file, ARGUMENTS)
68       adder = opts.AddVariables
69    except:
70       opts = Options(options_file, ARGUMENTS)
71       adder = opts.AddOptions
72       BoolVariable = BoolOption
73    
74  ############ Load build options ################################  ############ Load build options ################################
75    
76  opts.AddOptions(  adder(
77    #opts.AddOptions(
78  # Where to install esys stuff  # Where to install esys stuff
79    ('prefix', 'where everything will be installed',                       Dir('#.').abspath),    ('prefix', 'where everything will be installed',                       Dir('#.').abspath),
80    ('incinstall', 'where the esys headers will be installed',             os.path.join(Dir('#.').abspath,'include')),    ('incinstall', 'where the esys headers will be installed',             os.path.join(Dir('#.').abspath,'include')),
# Line 65  opts.AddOptions( Line 82  opts.AddOptions(
82    ('libinstall', 'where the esys libraries will be installed',           os.path.join(prefix,'lib')),    ('libinstall', 'where the esys libraries will be installed',           os.path.join(prefix,'lib')),
83    ('pyinstall', 'where the esys python modules will be installed',       os.path.join(prefix,'esys')),    ('pyinstall', 'where the esys python modules will be installed',       os.path.join(prefix,'esys')),
84  # Compilation options  # Compilation options
85    BoolOption('dodebug', 'For backwards compatibility', 'no'),    BoolVariable('dodebug', 'For backwards compatibility', 'no'),
86    BoolOption('usedebug', 'Do you want a debug build?', 'no'),    BoolVariable('usedebug', 'Do you want a debug build?', 'no'),
87    BoolOption('usevtk', 'Do you want to use VTK?', 'yes'),    BoolVariable('usevtk', 'Do you want to use VTK?', 'yes'),
88    ('options_file', 'File of paths/options. Default: scons/<hostname>_options.py', options_file),    ('options_file', 'File of paths/options. Default: scons/<hostname>_options.py', options_file),
89    ('win_cc_name', 'windows C compiler name if needed', 'msvc'),    ('win_cc_name', 'windows C compiler name if needed', 'msvc'),
90    # The strings -DDEFAULT_ get replaced by scons/<hostname>_options.py or by defaults below    # The strings -DDEFAULT_ get replaced by scons/<hostname>_options.py or by defaults below
# Line 81  opts.AddOptions( Line 98  opts.AddOptions(
98    ('ld_extra', 'Extra linker flags', ''),    ('ld_extra', 'Extra linker flags', ''),
99    ('sys_libs', 'System libraries to link with', []),    ('sys_libs', 'System libraries to link with', []),
100    ('ar_flags', 'Static library archiver flags to use', ''),    ('ar_flags', 'Static library archiver flags to use', ''),
101    BoolOption('useopenmp', 'Compile parallel version using OpenMP', 'no'),    BoolVariable('useopenmp', 'Compile parallel version using OpenMP', 'no'),
102    BoolOption('usepedantic', 'Compile with -pedantic if using gcc', 'no'),    BoolVariable('usepedantic', 'Compile with -pedantic if using gcc', 'no'),
103    BoolOption('usewarnings','Compile with warnings as errors if using gcc','yes'),    BoolVariable('usewarnings','Compile with warnings as errors if using gcc','yes'),
104    ('forcelazy','for testing use only - set the default value for autolazy','leave_alone'),    ('forcelazy','for testing use only - set the default value for autolazy','leave_alone'),
105      ('forcecollres','for testing use only - set the default value for force resolving collective ops','leave_alone'),
106  # Python  # Python
107    ('python_path', 'Path to Python includes', '/usr/include/'+python_version),    ('python_path', 'Path to Python includes', '/usr/include/'+python_version),
108    ('python_lib_path', 'Path to Python libs', usr_lib),    ('python_lib_path', 'Path to Python libs', usr_lib),
# Line 95  opts.AddOptions( Line 113  opts.AddOptions(
113    ('boost_lib_path', 'Path to Boost libs', usr_lib),    ('boost_lib_path', 'Path to Boost libs', usr_lib),
114    ('boost_libs', 'Boost libraries to link with', ['boost_python']),    ('boost_libs', 'Boost libraries to link with', ['boost_python']),
115  # NetCDF  # NetCDF
116    BoolOption('usenetcdf', 'switch on/off the usage of netCDF', 'yes'),    BoolVariable('usenetcdf', 'switch on/off the usage of netCDF', 'yes'),
117    ('netCDF_path', 'Path to netCDF includes', '/usr/include'),    ('netCDF_path', 'Path to netCDF includes', '/usr/include'),
118    ('netCDF_lib_path', 'Path to netCDF libs', usr_lib),    ('netCDF_lib_path', 'Path to netCDF libs', usr_lib),
119    ('netCDF_libs', 'netCDF C++ libraries to link with', ['netcdf_c++', 'netcdf']),    ('netCDF_libs', 'netCDF C++ libraries to link with', ['netcdf_c++', 'netcdf']),
120  # MPI  # MPI
121    BoolOption('useMPI', 'For backwards compatibility', 'no'),    BoolVariable('useMPI', 'For backwards compatibility', 'no'),
122    BoolOption('usempi', 'Compile parallel version using MPI', 'no'),    BoolVariable('usempi', 'Compile parallel version using MPI', 'no'),
123    ('MPICH_IGNORE_CXX_SEEK', 'name of macro to ignore MPI settings of C++ SEEK macro (for MPICH)' , 'MPICH_IGNORE_CXX_SEEK'),    ('MPICH_IGNORE_CXX_SEEK', 'name of macro to ignore MPI settings of C++ SEEK macro (for MPICH)' , 'MPICH_IGNORE_CXX_SEEK'),
124    ('mpi_path', 'Path to MPI includes', '/usr/include'),    ('mpi_path', 'Path to MPI includes', '/usr/include'),
125    ('mpi_run', 'mpirun name' , 'mpiexec -np 1'),    ('mpi_run', 'mpirun name' , 'mpiexec -np 1'),
126    ('mpi_lib_path', 'Path to MPI libs (needs to be added to the LD_LIBRARY_PATH)', usr_lib),    ('mpi_lib_path', 'Path to MPI libs (needs to be added to the LD_LIBRARY_PATH)', usr_lib),
127    ('mpi_libs', 'MPI libraries to link with (needs to be shared!)', ['mpich' , 'pthread', 'rt']),    ('mpi_libs', 'MPI libraries to link with (needs to be shared!)', []),
128    ('mpi_flavour','Type of MPI execution environment','none'),    ('mpi_flavour','Type of MPI execution environment','none'),
129  # ParMETIS  # ParMETIS
130    BoolOption('useparmetis', 'Compile parallel version using ParMETIS', 'yes'),    BoolVariable('useparmetis', 'Compile parallel version using ParMETIS', 'yes'),
131    ('parmetis_path', 'Path to ParMETIS includes', '/usr/include'),    ('parmetis_path', 'Path to ParMETIS includes', '/usr/include'),
132    ('parmetis_lib_path', 'Path to ParMETIS library', usr_lib),    ('parmetis_lib_path', 'Path to ParMETIS library', usr_lib),
133    ('parmetis_libs', 'ParMETIS library to link with', ['parmetis', 'metis']),    ('parmetis_libs', 'ParMETIS library to link with', ['parmetis', 'metis']),
134  # PAPI  # PAPI
135    BoolOption('usepapi', 'switch on/off the usage of PAPI', 'no'),    BoolVariable('usepapi', 'switch on/off the usage of PAPI', 'no'),
136    ('papi_path', 'Path to PAPI includes', '/usr/include'),    ('papi_path', 'Path to PAPI includes', '/usr/include'),
137    ('papi_lib_path', 'Path to PAPI libs', usr_lib),    ('papi_lib_path', 'Path to PAPI libs', usr_lib),
138    ('papi_libs', 'PAPI libraries to link with', ['papi']),    ('papi_libs', 'PAPI libraries to link with', ['papi']),
139    BoolOption('papi_instrument_solver', 'use PAPI in Solver.c to instrument each iteration of the solver', False),    BoolVariable('papi_instrument_solver', 'use PAPI in Solver.c to instrument each iteration of the solver', False),
140  # MKL  # MKL
141    BoolOption('usemkl', 'switch on/off the usage of MKL', 'no'),    BoolVariable('usemkl', 'switch on/off the usage of MKL', 'no'),
142    ('mkl_path', 'Path to MKL includes', '/sw/sdev/cmkl/10.0.2.18/include'),    ('mkl_path', 'Path to MKL includes', '/sw/sdev/cmkl/10.0.2.18/include'),
143    ('mkl_lib_path', 'Path to MKL libs', '/sw/sdev/cmkl/10.0.2.18/lib/em64t'),    ('mkl_lib_path', 'Path to MKL libs', '/sw/sdev/cmkl/10.0.2.18/lib/em64t'),
144    ('mkl_libs', 'MKL libraries to link with', ['mkl_solver', 'mkl_em64t', 'guide', 'pthread']),    ('mkl_libs', 'MKL libraries to link with', ['mkl_solver', 'mkl_em64t', 'guide', 'pthread']),
145  # UMFPACK  # UMFPACK
146    BoolOption('useumfpack', 'switch on/off the usage of UMFPACK', 'no'),    BoolVariable('useumfpack', 'switch on/off the usage of UMFPACK', 'no'),
147    ('ufc_path', 'Path to UFconfig includes', '/usr/include/suitesparse'),    ('ufc_path', 'Path to UFconfig includes', '/usr/include/suitesparse'),
148    ('umf_path', 'Path to UMFPACK includes', '/usr/include/suitesparse'),    ('umf_path', 'Path to UMFPACK includes', '/usr/include/suitesparse'),
149    ('umf_lib_path', 'Path to UMFPACK libs', usr_lib),    ('umf_lib_path', 'Path to UMFPACK libs', usr_lib),
150    ('umf_libs', 'UMFPACK libraries to link with', ['umfpack']),    ('umf_libs', 'UMFPACK libraries to link with', ['umfpack']),
151  # Silo  # Silo
152    BoolOption('usesilo', 'switch on/off the usage of Silo', 'yes'),    BoolVariable('usesilo', 'switch on/off the usage of Silo', 'yes'),
153    ('silo_path', 'Path to Silo includes', '/usr/include'),    ('silo_path', 'Path to Silo includes', '/usr/include'),
154    ('silo_lib_path', 'Path to Silo libs', usr_lib),    ('silo_lib_path', 'Path to Silo libs', usr_lib),
155    ('silo_libs', 'Silo libraries to link with', ['siloh5', 'hdf5']),    ('silo_libs', 'Silo libraries to link with', ['siloh5', 'hdf5']),
# Line 143  opts.AddOptions( Line 161  opts.AddOptions(
161    ('blas_path', 'Path to BLAS includes', '/usr/include/suitesparse'),    ('blas_path', 'Path to BLAS includes', '/usr/include/suitesparse'),
162    ('blas_lib_path', 'Path to BLAS libs', usr_lib),    ('blas_lib_path', 'Path to BLAS libs', usr_lib),
163    ('blas_libs', 'BLAS libraries to link with', ['blas']),    ('blas_libs', 'BLAS libraries to link with', ['blas']),
164    #Lapack options
165      BoolVariable('uselapack','switch on/off use of Lapack','no'),
166      ('lapack_path', 'Path to Lapack includes','/usr/include'),
167      ('lapack_lib_path', 'Path to Lapack libs', usr_lib),
168      ('lapack_libs', 'Lapack libraries to link with', []),
169      ('lapack_type', '{clapack,mkl}','clapack'),
170  # An option for specifying the compiler tools set (see windows branch).  # An option for specifying the compiler tools set (see windows branch).
171    ('tools_names', 'allow control over the tools in the env setup', ['intelc']),    ('tools_names', 'allow control over the tools in the env setup', ['intelc']),
172  # finer control over library building, intel aggressive global optimisation  # finer control over library building, intel aggressive global optimisation
173  # works with dynamic libraries on windows.  # works with dynamic libraries on windows.
174    ('share_esysUtils', 'control static or dynamic esysUtils lib', False),    ('share_esysUtils', 'control static or dynamic esysUtils lib', False),
175    ('share_paso', 'control static or dynamic paso lib', False)    ('share_paso', 'control static or dynamic paso lib', False),
176      ('env_export','Environment variables to be passed to children',[])
177  )  )
178    
179    
180    
181  ############ Specify which compilers to use ####################  ############ Specify which compilers to use ####################
182    
183  # intelc uses regular expressions improperly and emits a warning about  # intelc uses regular expressions improperly and emits a warning about
# Line 161  if IS_WINDOWS_PLATFORM: Line 188  if IS_WINDOWS_PLATFORM:
188        env = Environment(tools = ['default'] + env['tools_names'],        env = Environment(tools = ['default'] + env['tools_names'],
189                          options = opts)                          options = opts)
190  else:  else:
191     if socket.gethostname().split('.')[0] == 'service0':     if effective_hostname == 'service0':
192        env = Environment(tools = ['default', 'intelc'], options = opts)        env = Environment(tools = ['default', 'intelc'], options = opts)
193     elif os.uname()[4]=='ia64':     elif os.uname()[4]=='ia64':
194        env = Environment(tools = ['default', 'intelc'], options = opts)        env = Environment(tools = ['default', 'intelc'], options = opts)
# Line 171  else: Line 198  else:
198        env = Environment(tools = ['default'], options = opts)        env = Environment(tools = ['default'], options = opts)
199  Help(opts.GenerateHelpText(env))  Help(opts.GenerateHelpText(env))
200    
201    
202    ############ Make sure target directories exist ################
203    
204    if not os.path.isdir(env['bininstall']):
205        os.makedirs(env['bininstall'])
206    if not os.path.isdir(env['libinstall']):
207        os.makedirs(env['libinstall'])
208    if not os.path.isdir(env['pyinstall']):
209        os.makedirs(env['pyinstall'])
210    
211    ########## Copy required environment vars ######################
212    
213    for i in env['env_export']:
214       env.Append(ENV = {i:os.environ[i]})
215    
216  ############ Fill in compiler options if not set above #########  ############ Fill in compiler options if not set above #########
217    
218  # Backwards compatibility: allow dodebug=yes and useMPI=yes  # Backwards compatibility: allow dodebug=yes and useMPI=yes
# Line 201  elif env["CC"] == "gcc": Line 243  elif env["CC"] == "gcc":
243    cc_debug      = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"    cc_debug      = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"
244    omp_optim     = "-fopenmp"    omp_optim     = "-fopenmp"
245    omp_debug     = "-fopenmp"    omp_debug     = "-fopenmp"
246    omp_libs      = ['gomp']    omp_libs      = []
247    pedantic      = "-pedantic-errors -Wno-long-long"    pedantic      = "-pedantic-errors -Wno-long-long"
248    fatalwarning      = "-Werror"    fatalwarning      = "-Werror"
249    sysheaderopt      = "-isystem "    sysheaderopt      = "-isystem "
# Line 234  if env["omp_libs"] == "-DEFAULT_6": env[ Line 276  if env["omp_libs"] == "-DEFAULT_6": env[
276  #set up the autolazy values  #set up the autolazy values
277  if env['forcelazy']    != "leave_alone":  if env['forcelazy']    != "leave_alone":
278    if env['forcelazy'] == 'on':    if env['forcelazy'] == 'on':
279      env.Append(CPPDEFINES='FAUTOLAZYON')      env.Append(CPPDEFINES=['FAUTOLAZYON'])
280    else:    else:
281       if env['forcelazy'] == 'off':       if env['forcelazy'] == 'off':
282      env.Append(CPPDEFINES='FAUTOLAZYOFF')      env.Append(CPPDEFINES=['FAUTOLAZYOFF'])
283    
284    #set up the colective resolve values
285    if env['forcecollres']    != "leave_alone":
286      print env['forcecollres']
287      if env['forcecollres'] == 'on':
288        env.Append(CPPDEFINES=['FRESCOLLECTON'])
289      else:
290         if env['forcecollres'] == 'off':
291        env.Append(CPPDEFINES=['FRESCOLLECTOFF'])
292    
293    
294  # OpenMP is disabled if useopenmp=no or both variables omp_optim and omp_debug are empty  # OpenMP is disabled if useopenmp=no or both variables omp_optim and omp_debug are empty
295  if not env["useopenmp"]:  if not env["useopenmp"]:
# Line 282  except KeyError: pass Line 334  except KeyError: pass
334  try: env['ENV']['CPLUS_INCLUDE_PATH'] = os.environ['CPLUS_INCLUDE_PATH']  try: env['ENV']['CPLUS_INCLUDE_PATH'] = os.environ['CPLUS_INCLUDE_PATH']
335  except KeyError: pass  except KeyError: pass
336    
337  try: PrependENVPath['ENV'][LD_LIBRARY_PATH_KEY] = os.environ['LD_LIBRARY_PATH']  try: env.PrependENVPath(LD_LIBRARY_PATH_KEY,os.environ['LD_LIBRARY_PATH'])
338  except KeyError: pass  except KeyError: pass
339    
340  try: env['ENV']['LIBRARY_PATH'] = os.environ['LIBRARY_PATH']  try: env['ENV']['LIBRARY_PATH'] = os.environ['LIBRARY_PATH']
# Line 347  except: Line 399  except:
399  if global_revision == "": global_revision="-2"  if global_revision == "": global_revision="-2"
400  env.Append(CPPDEFINES = ["SVN_VERSION="+global_revision])  env.Append(CPPDEFINES = ["SVN_VERSION="+global_revision])
401    
402  ############ numarray (required) ###############################  ############ numpy (required) ###############################
403    
404  try:  try:
405    from numarray import identity    from numpy import identity
406  except ImportError:  except ImportError:
407    print "Cannot import numarray, you need to set your PYTHONPATH"    print "Cannot import numpy, you need to set your PYTHONPATH"
408    sys.exit(1)    sys.exit(1)
409    
410  ############ C compiler (required) #############################  ############ C compiler (required) #############################
# Line 497  if env['usemkl']: Line 549  if env['usemkl']:
549  if env['usemkl'] and not conf.CheckCHeader('mkl_solver.h'): env['usemkl'] = 0  if env['usemkl'] and not conf.CheckCHeader('mkl_solver.h'): env['usemkl'] = 0
550  if env['usemkl'] and not conf.CheckFunc('pardiso'): env['usemkl'] = 0  if env['usemkl'] and not conf.CheckFunc('pardiso'): env['usemkl'] = 0
551    
552    
553  # Add MKL to environment env if it was found  # Add MKL to environment env if it was found
554  if env['usemkl']:  if env['usemkl']:
555    env = conf.Finish()    env = conf.Finish()
# Line 527  if env['useumfpack']: Line 580  if env['useumfpack']:
580    conf.env.PrependENVPath('PYTHONPATH', prefix)    conf.env.PrependENVPath('PYTHONPATH', prefix)
581    conf.env.PrependENVPath(LD_LIBRARY_PATH_KEY, env['libinstall'])    conf.env.PrependENVPath(LD_LIBRARY_PATH_KEY, env['libinstall'])
582    
 if env['useumfpack'] and not conf.CheckFunc('umfpack_di_symbolic'): env['useumfpack'] = 0  
583  if env['useumfpack'] and not conf.CheckCHeader('umfpack.h'): env['useumfpack'] = 0  if env['useumfpack'] and not conf.CheckCHeader('umfpack.h'): env['useumfpack'] = 0
584    if env['useumfpack'] and not conf.CheckFunc('umfpack_di_symbolic'): env['useumfpack'] = 0
585  # if env['useumfpack'] and not conf.CheckFunc('daxpy'): env['useumfpack'] = 0 # this does not work on shake73?  # if env['useumfpack'] and not conf.CheckFunc('daxpy'): env['useumfpack'] = 0 # this does not work on shake73?
586    
587  # Add UMFPACK to environment env if it was found  # Add UMFPACK to environment env if it was found
# Line 551  if env['usesilo']: Line 604  if env['usesilo']:
604    
605  # Add the path to Silo to environment env if it was found.  # Add the path to Silo to environment env if it was found.
606  # Note that we do not add the libs since they are only needed for the  # Note that we do not add the libs since they are only needed for the
607  # escriptreader library and tools.  # escriptexport library and tools.
608  if env['usesilo']:  if env['usesilo']:
609    env.AppendUnique(CPPPATH = [env['silo_path']])    env.AppendUnique(CPPPATH = [env['silo_path']])
610    env.AppendUnique(LIBPATH = [env['silo_lib_path']])    env.AppendUnique(LIBPATH = [env['silo_lib_path']])
611    env.Append(CPPDEFINES = ['HAVE_SILO'])    env.Append(CPPDEFINES = ['USE_SILO'])
612    
613    ########### Lapack (optional) ##################################
614    
615    
616    if env['uselapack']:
617        env.AppendUnique(CPPDEFINES='USE_LAPACK')
618        env.AppendUnique(CPPPATH = [env['lapack_path']])
619        env.AppendUnique(LIBPATH =[env['lapack_lib_path']])
620    
621        env.Append(LIBPATH = '/usr/lib/atlas')
622        env.Append(LIBS = [env['lapack_libs']])
623        if env['lapack_type']=='mkl':
624           if not env['usemkl']:
625            env['uselapack']=0
626            print "mkl_lapack requires mkl"
627           else:
628            env.AppendUnique(CPPDEFINES='MKL_LAPACK')
629          
630    
631    
632  ############ Add the compiler flags ############################  ############ Add the compiler flags ############################
633    
# Line 660  if ((fatalwarning != "") and (env['usewa Line 732  if ((fatalwarning != "") and (env['usewa
732  print ""  print ""
733  print "Summary of configuration (see ./config.log for information)"  print "Summary of configuration (see ./config.log for information)"
734  print " Using python libraries"  print " Using python libraries"
735  print " Using numarray"  print " Using numpy"
736  print " Using boost"  print " Using boost"
737  if env['usenetcdf']: print "    Using NetCDF"  if env['usenetcdf']: print "    Using NetCDF"
738  else: print "   Not using NetCDF"  else: print "   Not using NetCDF"
# Line 680  if env['useparmetis']: print " Using Par Line 752  if env['useparmetis']: print " Using Par
752  else: print "   Not using ParMETIS (requires MPI)"  else: print "   Not using ParMETIS (requires MPI)"
753  if env['usepapi']: print "  Using PAPI"  if env['usepapi']: print "  Using PAPI"
754  else: print "   Not using PAPI"  else: print "   Not using PAPI"
755    if env['uselapack']: print "    Using Lapack"
756    else: print "   Not using Lapack"
757  if env['usedebug']: print " Compiling for debug"  if env['usedebug']: print " Compiling for debug"
758  else: print "   Not compiling for debug"  else: print "   Not compiling for debug"
759  print " Installing in", prefix  print " Installing in", prefix
# Line 713  Export( Line 787  Export(
787    )    )
788    
789  env.SConscript(dirs = ['tools/CppUnitTest/src'], build_dir='build/$PLATFORM/tools/CppUnitTest', duplicate=0)  env.SConscript(dirs = ['tools/CppUnitTest/src'], build_dir='build/$PLATFORM/tools/CppUnitTest', duplicate=0)
790  env.SConscript(dirs = ['tools/libescriptreader/src'], build_dir='build/$PLATFORM/tools/libescriptreader', duplicate=0)  env.SConscript(dirs = ['tools/escriptconvert'], build_dir='build/$PLATFORM/tools/escriptconvert', duplicate=0)
791  env.SConscript(dirs = ['paso/src'], build_dir='build/$PLATFORM/paso', duplicate=0)  env.SConscript(dirs = ['paso/src'], build_dir='build/$PLATFORM/paso', duplicate=0)
792    env.SConscript(dirs = ['dataexporter/src'], build_dir='build/$PLATFORM/dataexporter', duplicate=0)
793  env.SConscript(dirs = ['escript/src'], build_dir='build/$PLATFORM/escript', duplicate=0)  env.SConscript(dirs = ['escript/src'], build_dir='build/$PLATFORM/escript', duplicate=0)
794  env.SConscript(dirs = ['esysUtils/src'], build_dir='build/$PLATFORM/esysUtils', duplicate=0)  env.SConscript(dirs = ['esysUtils/src'], build_dir='build/$PLATFORM/esysUtils', duplicate=0)
795  env.SConscript(dirs = ['finley/src'], build_dir='build/$PLATFORM/finley', duplicate=0)  env.SConscript(dirs = ['finley/src'], build_dir='build/$PLATFORM/finley', duplicate=0)
# Line 746  env.Alias('remember_options', remember_l Line 821  env.Alias('remember_options', remember_l
821  ############### Record python interpreter version ##############  ############### Record python interpreter version ##############
822    
823  if not IS_WINDOWS_PLATFORM:  if not IS_WINDOWS_PLATFORM:
824    
825    versionstring="Python "+str(sys.version_info[0])+"."+str(sys.version_info[1])+"."+str(sys.version_info[2])    versionstring="Python "+str(sys.version_info[0])+"."+str(sys.version_info[1])+"."+str(sys.version_info[2])
826      if sys.version_info[4] >0 : versionstring+="rc%s"%sys.version_info[4]
827    os.system("echo "+versionstring+" > "+os.path.join(env['libinstall'],"pyversion"))    os.system("echo "+versionstring+" > "+os.path.join(env['libinstall'],"pyversion"))
828    
829  ############## Populate the buildvars file #####################  ############## Populate the buildvars file #####################
# Line 783  else: Line 860  else:
860      out+="n"      out+="n"
861  buildvars.write(out+"\n")  buildvars.write(out+"\n")
862  buildvars.write("mpi_flavour="+env['mpi_flavour']+'\n')  buildvars.write("mpi_flavour="+env['mpi_flavour']+'\n')
863    out="lapack="
864    if env['uselapack']:
865       out+="y"
866    else:
867       out+="n"
868    out+="\nsilo="
869    if env['usesilo']:
870       out+="y"
871    else:
872       out+="n"
873    buildvars.write(out+"\n")
874  buildvars.close()  buildvars.close()
875    
876    
# Line 799  env.Alias('install_esysUtils', ['build_e Line 886  env.Alias('install_esysUtils', ['build_e
886  env.Alias('build_paso', ['target_install_paso_headers', 'target_paso_a'])  env.Alias('build_paso', ['target_install_paso_headers', 'target_paso_a'])
887  env.Alias('install_paso', ['build_paso', 'target_install_paso_a'])  env.Alias('install_paso', ['build_paso', 'target_install_paso_a'])
888    
889    env.Alias('build_dataexporter', ['target_install_escriptexport_headers', 'target_escriptexport_so', 'target_escriptexportcpp_so'])
890    env.Alias('install_dataexporter', ['build_dataexporter', 'target_install_escriptexport_so', 'target_install_escriptexportcpp_so', 'target_install_dataexporter_py'])
891    
892  env.Alias('build_escript', ['target_install_escript_headers', 'target_escript_so', 'target_escriptcpp_so'])  env.Alias('build_escript', ['target_install_escript_headers', 'target_escript_so', 'target_escriptcpp_so'])
893  env.Alias('install_escript', ['build_escript', 'target_install_escript_so', 'target_install_escriptcpp_so', 'target_install_escript_py'])  env.Alias('install_escript', ['build_escript', 'target_install_escript_so', 'target_install_escriptcpp_so', 'target_install_escript_py'])
894    
# Line 809  env.Alias('install_finley', ['build_finl Line 899  env.Alias('install_finley', ['build_finl
899  build_all_list = []  build_all_list = []
900  build_all_list += ['build_esysUtils']  build_all_list += ['build_esysUtils']
901  build_all_list += ['build_paso']  build_all_list += ['build_paso']
902    build_all_list += ['build_dataexporter']
903  build_all_list += ['build_escript']  build_all_list += ['build_escript']
904  build_all_list += ['build_finley']  build_all_list += ['build_finley']
905  if env['usempi']:       build_all_list += ['target_pythonMPI_exe']  if env['usempi']:       build_all_list += ['target_pythonMPI_exe']
906  #if not IS_WINDOWS_PLATFORM:    build_all_list += ['target_escript_wrapper']  #if not IS_WINDOWS_PLATFORM:    build_all_list += ['target_escript_wrapper']
907  if env['usesilo']:  build_all_list += ['target_escript2silo']  if env['usesilo']:  build_all_list += ['target_escriptconvert']
908  env.Alias('build_all', build_all_list)  env.Alias('build_all', build_all_list)
909    
910  install_all_list = []  install_all_list = []
911  install_all_list += ['target_init']  install_all_list += ['target_init']
912  install_all_list += ['install_esysUtils']  install_all_list += ['install_esysUtils']
913  install_all_list += ['install_paso']  install_all_list += ['install_paso']
914    install_all_list += ['install_dataexporter']
915  install_all_list += ['install_escript']  install_all_list += ['install_escript']
916  install_all_list += ['install_finley']  install_all_list += ['install_finley']
917  install_all_list += ['target_install_pyvisi_py']  install_all_list += ['target_install_pyvisi_py']
# Line 827  install_all_list += ['target_install_mod Line 919  install_all_list += ['target_install_mod
919  install_all_list += ['target_install_pycad_py']  install_all_list += ['target_install_pycad_py']
920  if env['usempi']:       install_all_list += ['target_install_pythonMPI_exe']  if env['usempi']:       install_all_list += ['target_install_pythonMPI_exe']
921  #if not IS_WINDOWS_PLATFORM:    install_all_list += ['target_install_escript_wrapper']  #if not IS_WINDOWS_PLATFORM:    install_all_list += ['target_install_escript_wrapper']
922  if env['usesilo']:  install_all_list += ['target_install_escript2silo']  if env['usesilo']:  install_all_list += ['target_install_escriptconvert']
923  install_all_list += ['remember_options']  install_all_list += ['remember_options']
924  env.Alias('install_all', install_all_list)  env.Alias('install_all', install_all_list)
925    
# Line 842  env.Alias('run_tests', ['install_all', ' Line 934  env.Alias('run_tests', ['install_all', '
934  env.Alias('all_tests', ['install_all', 'target_install_cppunittest_a', 'run_tests', 'py_tests'])  env.Alias('all_tests', ['install_all', 'target_install_cppunittest_a', 'run_tests', 'py_tests'])
935  env.Alias('build_full',['install_all','build_tests','build_py_tests'])  env.Alias('build_full',['install_all','build_tests','build_py_tests'])
936    
937    
938  ############ Targets to build the documentation ################  ############ Targets to build the documentation ################
939    
940    env.Alias('api_epydoc','install_all')
941    
942  env.Alias('docs', ['examples_tarfile', 'examples_zipfile', 'api_epydoc', 'api_doxygen', 'guide_pdf', 'guide_html','install_pdf'])  env.Alias('docs', ['examples_tarfile', 'examples_zipfile', 'api_epydoc', 'api_doxygen', 'guide_pdf', 'guide_html','install_pdf'])
943    
944  if not IS_WINDOWS_PLATFORM:  if not IS_WINDOWS_PLATFORM:
# Line 862  if not IS_WINDOWS_PLATFORM: Line 957  if not IS_WINDOWS_PLATFORM:
957      print "Error attempting to write unittests file."      print "Error attempting to write unittests file."
958      sys.exit(1)      sys.exit(1)
959    
960       #Make sure that the escript wrapper is in place
961       if not os.path.isfile(os.path.join(env['bininstall'],'escript')):
962           print "Copying escript wrapper"
963           shutil.copy("bin/escript",os.path.join(env['bininstall'],'escript'))
964    
965    ############ Targets to build PasoTests suite ################
966    
967    env.Alias('build_PasoTests','build/'+build_platform+'/paso/profiling/PasoTests')

Legend:
Removed from v.2423  
changed lines
  Added in v.2820

  ViewVC Help
Powered by ViewVC 1.1.26