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

Diff of /branches/inv2jf/SConstruct

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

revision 1708 by ksteube, Thu Aug 14 22:42:24 2008 UTC revision 2156 by gross, Mon Dec 15 05:09:02 2008 UTC
# Line 1  Line 1 
1  #         Copyright 2006 by ACcESS MNRF  
2    ########################################################
3    #
4    # Copyright (c) 2003-2008 by University of Queensland
5    # Earth Systems Science Computational Center (ESSCC)
6    # http://www.uq.edu.au/esscc
7  #  #
8  #              http://www.access.edu.au  # Primary Business: Queensland, Australia
9  #       Primary Business: Queensland, Australia  # Licensed under the Open Software License version 3.0
10  #  Licensed under the Open Software License version 3.0  # http://www.opensource.org/licenses/osl-3.0.php
11  #     http://www.opensource.org/licenses/osl-3.0.php  #
12    ########################################################
13    
14    
15  EnsureSConsVersion(0,96,91)  EnsureSConsVersion(0,96,91)
16  EnsurePythonVersion(2,3)  EnsurePythonVersion(2,3)
# Line 30  prefix = ARGUMENTS.get('prefix', Dir('#. Line 37  prefix = ARGUMENTS.get('prefix', Dir('#.
37  hostname = re.sub("[^0-9a-zA-Z]", "_", socket.gethostname().split('.')[0])  hostname = re.sub("[^0-9a-zA-Z]", "_", socket.gethostname().split('.')[0])
38  tmp = os.path.join("scons",hostname+"_options.py")  tmp = os.path.join("scons",hostname+"_options.py")
39  options_file = ARGUMENTS.get('options_file', tmp)  options_file = ARGUMENTS.get('options_file', tmp)
40  if not os.path.isfile(options_file): options_file = False  if not os.path.isfile(options_file):
41  else: print "Options file is", options_file    options_file = False
42      print "Options file not found (expected '%s')" % tmp
43    else:
44      print "Options file is", options_file
45    
46  # Load options file and command-line arguments  # Load options file and command-line arguments
47  opts = Options(options_file, ARGUMENTS)  opts = Options(options_file, ARGUMENTS)
# Line 42  opts.AddOptions( Line 52  opts.AddOptions(
52  # Where to install esys stuff  # Where to install esys stuff
53    ('prefix', 'where everything will be installed',                       Dir('#.').abspath),    ('prefix', 'where everything will be installed',                       Dir('#.').abspath),
54    ('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')),
55      ('bininstall', 'where the esys binaries will be installed',            os.path.join(prefix,'bin')),
56    ('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')),
57    ('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')),
58  # Compilation options  # Compilation options
# Line 49  opts.AddOptions( Line 60  opts.AddOptions(
60    BoolOption('usedebug', 'Do you want a debug build?', 'no'),    BoolOption('usedebug', 'Do you want a debug build?', 'no'),
61    BoolOption('usevtk', 'Do you want to use VTK?', 'yes'),    BoolOption('usevtk', 'Do you want to use VTK?', 'yes'),
62    ('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),
63      ('win_cc_name', 'windows C compiler name if needed', 'msvc'),
64    # 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
65    ('cc_flags', 'C compiler flags to use', '-DEFAULT_1'),    ('cc_flags', 'C compiler flags to use', '-DEFAULT_1'),
66    ('cc_optim', 'C compiler optimization flags to use', '-DEFAULT_2'),    ('cc_optim', 'C compiler optimization flags to use', '-DEFAULT_2'),
# Line 57  opts.AddOptions( Line 69  opts.AddOptions(
69    ('omp_debug', 'OpenMP compiler flags to use (Debug build)', '-DEFAULT_5'),    ('omp_debug', 'OpenMP compiler flags to use (Debug build)', '-DEFAULT_5'),
70    ('omp_libs', 'OpenMP compiler libraries to link with', '-DEFAULT_6'),    ('omp_libs', 'OpenMP compiler libraries to link with', '-DEFAULT_6'),
71    ('cc_extra', 'Extra C/C++ flags', ''),    ('cc_extra', 'Extra C/C++ flags', ''),
72      ('ld_extra', 'Extra linker flags', ''),
73    ('sys_libs', 'System libraries to link with', []),    ('sys_libs', 'System libraries to link with', []),
74    ('ar_flags', 'Static library archiver flags to use', ''),    ('ar_flags', 'Static library archiver flags to use', ''),
75    BoolOption('useopenmp', 'Compile parallel version using OpenMP', 'yes'),    BoolOption('useopenmp', 'Compile parallel version using OpenMP', 'yes'),
76    BoolOption('usepedantic', 'Compile with -pedantic if using gcc', 'yes'),    BoolOption('usepedantic', 'Compile with -pedantic if using gcc', 'no'),
77      BoolOption('usewarnings','Compile with warnings as errors if using gcc','yes'),
78  # Python  # Python
79    ('python_path', 'Path to Python includes', '/usr/include/'+python_version),    ('python_path', 'Path to Python includes', '/usr/include/'+python_version),
80    ('python_lib_path', 'Path to Python libs', usr_lib),    ('python_lib_path', 'Path to Python libs', usr_lib),
# Line 112  opts.AddOptions( Line 126  opts.AddOptions(
126  # BLAS (used by UMFPACK)  # BLAS (used by UMFPACK)
127    ('blas_path', 'Path to BLAS includes', '/usr/include/suitesparse'),    ('blas_path', 'Path to BLAS includes', '/usr/include/suitesparse'),
128    ('blas_lib_path', 'Path to BLAS libs', usr_lib),    ('blas_lib_path', 'Path to BLAS libs', usr_lib),
129    ('blas_libs', 'BLAS libraries to link with', ['blas'])    ('blas_libs', 'BLAS libraries to link with', ['blas']),
130    # An option for specifying the compiler tools set (see windows branch).
131      ('tools_names', 'allow control over the tools in the env setup', ['intelc']),
132    # finer control over library building, intel aggressive global optimisation
133    # works with dynamic libraries on windows.
134      ('share_esysUtils', 'control static or dynamic esysUtils lib', False),
135      ('share_paso', 'control static or dynamic paso lib', False)
136  )  )
137    
138  ############ Specify which compilers to use ####################  ############ Specify which compilers to use ####################
# Line 121  opts.AddOptions( Line 141  opts.AddOptions(
141  # failing to find the compilers.  This warning can be safely ignored.  # failing to find the compilers.  This warning can be safely ignored.
142    
143  if IS_WINDOWS_PLATFORM:  if IS_WINDOWS_PLATFORM:
144        env = Environment(tools = ['default', 'msvc'], options = opts)        env = Environment(options = opts)
145          env = Environment(tools = ['default'] + env['tools_names'],
146                            options = opts)
147  else:  else:
148     if socket.gethostname().split('.')[0] == 'service0':     if socket.gethostname().split('.')[0] == 'service0':
149        env = Environment(tools = ['default', 'intelc'], options = opts)        env = Environment(tools = ['default', 'intelc'], options = opts)
# Line 142  if env['useMPI']: env['usempi'] = 1 Line 164  if env['useMPI']: env['usempi'] = 1
164  # Default compiler options (override allowed in hostname_options.py, but should not be necessary)  # Default compiler options (override allowed in hostname_options.py, but should not be necessary)
165  # For both C and C++ you get: cc_flags and either the optim flags or debug flags  # For both C and C++ you get: cc_flags and either the optim flags or debug flags
166    
167    sysheaderopt = ""       # how do we indicate that a header is a system header. Use "" for no action.
168    
169  if env["CC"] == "icc":  if env["CC"] == "icc":
170    # Intel compilers    # Intel compilers
171    cc_flags      = "-fPIC -ansi -wd161 -w1 -vec-report0 -DBLOCKTIMER -DCORE_ID1"    cc_flags      = "-fPIC -ansi -wd161 -w1 -vec-report0 -DBLOCKTIMER -DCORE_ID1"
172    cc_optim      = "-O3 -ftz -IPF_ftlacc- -IPF_fma -fno-alias"    cc_optim      = "-O3 -ftz -IPF_ftlacc- -IPF_fma -fno-alias"
173    cc_debug      = "-g -O0 -UDOASSERT -DDOPROF -DBOUNDS_CHECK"    cc_debug      = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"
174    omp_optim     = "-openmp -openmp_report0"    omp_optim     = "-openmp -openmp_report0"
175    omp_debug     = "-openmp -openmp_report0"    omp_debug     = "-openmp -openmp_report0"
176    omp_libs      = ['guide', 'pthread']    omp_libs      = ['guide', 'pthread']
177    pedantic      = ""    pedantic      = ""
178      fatalwarning      = ""        # Switch to turn warnings into errors
179      sysheaderopt      = ""
180  elif env["CC"] == "gcc":  elif env["CC"] == "gcc":
181    # GNU C on any system    # GNU C on any system
182    cc_flags      = "-fPIC -ansi -ffast-math -Wno-unknown-pragmas -DBLOCKTIMER"    cc_flags      = "-pedantic -Wall -fPIC -ansi -ffast-math -Wno-unknown-pragmas -DBLOCKTIMER  -Wno-sign-compare -Wno-system-headers -Wno-long-long -Wno-strict-aliasing"
183    #The strict aliasing error occurs for some versions of boost
184    #the long long warning occurs on the Mac
185    cc_optim      = "-O3"    cc_optim      = "-O3"
186    cc_debug      = "-g -O0 -UDOASSERT -DDOPROF -DBOUNDS_CHECK"    cc_debug      = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"
187    omp_optim     = ""    omp_optim     = ""
188    omp_debug     = ""    omp_debug     = ""
189    omp_libs      = []    omp_libs      = []
190    pedantic      = "-pedantic-errors -Wno-long-long"    pedantic      = "-pedantic-errors -Wno-long-long"
191      fatalwarning      = "-Werror"
192      sysheaderopt      = "-isystem "
193  elif env["CC"] == "cl":  elif env["CC"] == "cl":
194    # Microsoft Visual C on Windows    # Microsoft Visual C on Windows
195    cc_flags      = "/FD /EHsc /GR /wd4068 -D_USE_MATH_DEFINES -DDLL_NETCDF"    cc_flags      = "/FD /EHsc /GR /wd4068 -D_USE_MATH_DEFINES -DDLL_NETCDF"
# Line 169  elif env["CC"] == "cl": Line 199  elif env["CC"] == "cl":
199    omp_debug     = ""    omp_debug     = ""
200    omp_libs      = []    omp_libs      = []
201    pedantic      = ""    pedantic      = ""
202      fatalwarning      = ""
203      sysheaderopt      = ""
204    elif env["CC"] == "icl":
205      # intel C on Windows, see windows_intelc_options.py for a start
206      pedantic      = ""
207      fatalwarning      = ""
208      sysheaderopt      = ""
209    
210    
211  # If not specified in hostname_options.py then set them here  # If not specified in hostname_options.py then set them here
212  if env["cc_flags"]  == "-DEFAULT_1": env['cc_flags'] = cc_flags  if env["cc_flags"]  == "-DEFAULT_1": env['cc_flags'] = cc_flags
# Line 222  except KeyError: pass Line 260  except KeyError: pass
260  env.PrependENVPath('PYTHONPATH', prefix)  env.PrependENVPath('PYTHONPATH', prefix)
261  env.PrependENVPath('LD_LIBRARY_PATH', env['libinstall'])  env.PrependENVPath('LD_LIBRARY_PATH', env['libinstall'])
262    
263    env['ENV']['ESCRIPT_ROOT'] = prefix
264    
265  ############ Set up paths for Configure() ######################  ############ Set up paths for Configure() ######################
266    
267  # Make a copy of an environment  # Make a copy of an environment
# Line 234  def clone_env(env): Line 274  def clone_env(env):
274  env.Append(CPPPATH      = [Dir('include')])  env.Append(CPPPATH      = [Dir('include')])
275    
276  # Add cc option -L<Escript>/trunk/lib  # Add cc option -L<Escript>/trunk/lib
277  env.Append(LIBPATH      = [Dir('lib')])  env.Append(LIBPATH      = [Dir(env['libinstall'])])
   
 env.Append(CPPDEFINES = ['ESCRIPT_EXPORTS', 'FINLEY_EXPORTS'])  
278    
279  if env['cc_extra'] != '': env.Append(CCFLAGS = env['cc_extra'])  if env['cc_extra'] != '': env.Append(CCFLAGS = env['cc_extra'])
280    if env['ld_extra'] != '': env.Append(LINKFLAGS = env['ld_extra'])
281    
282  if env['usepedantic']: env.Append(CCFLAGS = pedantic)  if env['usepedantic']: env.Append(CCFLAGS = pedantic)
283    
# Line 246  if env['usepedantic']: env.Append(CCFLAG Line 285  if env['usepedantic']: env.Append(CCFLAG
285  if IS_WINDOWS_PLATFORM:  if IS_WINDOWS_PLATFORM:
286    env.PrependENVPath('PATH',    [env['boost_lib_path']])    env.PrependENVPath('PATH',    [env['boost_lib_path']])
287    env.PrependENVPath('PATH',    [env['libinstall']])    env.PrependENVPath('PATH',    [env['libinstall']])
288      if not env['share_esysUtils'] :
289        env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])
290      if not env['share_paso'] :
291        env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])
292    
293    if env['usenetcdf']:    if env['usenetcdf']:
294      env.PrependENVPath('PATH',  [env['netCDF_lib_path']])      env.PrependENVPath('PATH',  [env['netCDF_lib_path']])
295    
# Line 279  if not conf.CheckFunc('printf'): Line 323  if not conf.CheckFunc('printf'):
323    print "Cannot run C compiler '%s' (or libc is missing)" % (env['CC'])    print "Cannot run C compiler '%s' (or libc is missing)" % (env['CC'])
324    sys.exit(1)    sys.exit(1)
325    
326  if not conf.CheckFunc('gethostname'):  if conf.CheckFunc('gethostname'):
327    env.Append(CPPDEFINES = ['HAVE_GETHOSTNAME'])    conf.env.Append(CPPDEFINES = ['HAVE_GETHOSTNAME'])
328    
329  ############ python libraries (required) #######################  ############ python libraries (required) #######################
330    
331  conf.env.AppendUnique(CPPPATH       = [env['python_path']])  
332    if not sysheaderopt =="":
333      conf.env.Append(CCFLAGS=sysheaderopt+env['python_path'])
334    else:
335      conf.env.AppendUnique(CPPPATH     = [env['python_path']])
336    
337  conf.env.AppendUnique(LIBPATH       = [env['python_lib_path']])  conf.env.AppendUnique(LIBPATH       = [env['python_lib_path']])
338  conf.env.AppendUnique(LIBS      = [env['python_libs']])  conf.env.AppendUnique(LIBS      = [env['python_libs']])
339    
340    conf.env.PrependENVPath('LD_LIBRARY_PATH', env['python_lib_path'])  # The wrapper script needs to find these libs
341    
342  if not conf.CheckCHeader('Python.h'):  if not conf.CheckCHeader('Python.h'):
343    print "Cannot find python include files (tried 'Python.h' in directory %s)" % (env['python_path'])    print "Cannot find python include files (tried 'Python.h' in directory %s)" % (env['python_path'])
344    sys.exit(1)    sys.exit(1)
# Line 297  if not conf.CheckFunc('Py_Main'): Line 348  if not conf.CheckFunc('Py_Main'):
348    
349  ############ boost (required) ##################################  ############ boost (required) ##################################
350    
351  conf.env.AppendUnique(CPPPATH       = [env['boost_path']])  if not sysheaderopt =="":
352      conf.env.Append(CCFLAGS=sysheaderopt+env['boost_path']+'boost')
353    else:
354      conf.env.AppendUnique(CPPPATH     = [env['boost_path']])
355    
356  conf.env.AppendUnique(LIBPATH       = [env['boost_lib_path']])  conf.env.AppendUnique(LIBPATH       = [env['boost_lib_path']])
357  conf.env.AppendUnique(LIBS      = [env['boost_libs']])  conf.env.AppendUnique(LIBS      = [env['boost_libs']])
358    
359    conf.env.PrependENVPath('LD_LIBRARY_PATH', env['boost_lib_path'])   # The wrapper script needs to find these libs
360    
361  if not conf.CheckCXXHeader('boost/python.hpp'):  if not conf.CheckCXXHeader('boost/python.hpp'):
362    print "Cannot find boost include files (tried boost/python.hpp in directory %s)" % (env['boost_path'])    print "Cannot find boost include files (tried boost/python.hpp in directory %s)" % (env['boost_path'])
363    sys.exit(1)    sys.exit(1)
# Line 332  if env['usenetcdf']: Line 389  if env['usenetcdf']:
389    conf.env.AppendUnique(CPPPATH = [env['netCDF_path']])    conf.env.AppendUnique(CPPPATH = [env['netCDF_path']])
390    conf.env.AppendUnique(LIBPATH = [env['netCDF_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['netCDF_lib_path']])
391    conf.env.AppendUnique(LIBS    = [env['netCDF_libs']])    conf.env.AppendUnique(LIBS    = [env['netCDF_libs']])
392      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['netCDF_lib_path'])    # The wrapper script needs to find these libs
393    
394  if env['usenetcdf'] and not conf.CheckCHeader('netcdf.h'): env['usenetcdf'] = 0  if env['usenetcdf'] and not conf.CheckCHeader('netcdf.h'): env['usenetcdf'] = 0
395  if env['usenetcdf'] and not conf.CheckFunc('nc_open'): env['usenetcdf'] = 0  if env['usenetcdf'] and not conf.CheckFunc('nc_open'): env['usenetcdf'] = 0
# Line 352  if env['usepapi']: Line 410  if env['usepapi']:
410    conf.env.AppendUnique(CPPPATH = [env['papi_path']])    conf.env.AppendUnique(CPPPATH = [env['papi_path']])
411    conf.env.AppendUnique(LIBPATH = [env['papi_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['papi_lib_path']])
412    conf.env.AppendUnique(LIBS    = [env['papi_libs']])    conf.env.AppendUnique(LIBS    = [env['papi_libs']])
413      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['papi_lib_path'])  # The wrapper script needs to find these libs
414    
415  if env['usepapi'] and not conf.CheckCHeader('papi.h'): env['usepapi'] = 0  if env['usepapi'] and not conf.CheckCHeader('papi.h'): env['usepapi'] = 0
416  if env['usepapi'] and not conf.CheckFunc('PAPI_start_counters'): env['usepapi'] = 0  if env['usepapi'] and not conf.CheckFunc('PAPI_start_counters'): env['usepapi'] = 0
# Line 372  if env['usemkl']: Line 431  if env['usemkl']:
431    conf.env.AppendUnique(CPPPATH = [env['mkl_path']])    conf.env.AppendUnique(CPPPATH = [env['mkl_path']])
432    conf.env.AppendUnique(LIBPATH = [env['mkl_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['mkl_lib_path']])
433    conf.env.AppendUnique(LIBS    = [env['mkl_libs']])    conf.env.AppendUnique(LIBS    = [env['mkl_libs']])
434      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['mkl_lib_path'])   # The wrapper script needs to find these libs
435    
436  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
437  if env['usemkl'] and not conf.CheckFunc('pardiso_'): env['usemkl'] = 0  if env['usemkl'] and not conf.CheckFunc('pardiso_'): env['usemkl'] = 0
# Line 399  if env['useumfpack']: Line 459  if env['useumfpack']:
459    conf.env.AppendUnique(CPPPATH = [env['blas_path']])    conf.env.AppendUnique(CPPPATH = [env['blas_path']])
460    conf.env.AppendUnique(LIBPATH = [env['blas_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['blas_lib_path']])
461    conf.env.AppendUnique(LIBS    = [env['blas_libs']])    conf.env.AppendUnique(LIBS    = [env['blas_libs']])
462      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['umf_lib_path'])   # The wrapper script needs to find these libs
463      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['amd_lib_path'])   # The wrapper script needs to find these libs
464      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['blas_lib_path'])  # The wrapper script needs to find these libs
465    
466  if env['useumfpack'] and not conf.CheckCHeader('umfpack.h'): env['useumfpack'] = 0  if env['useumfpack'] and not conf.CheckCHeader('umfpack.h'): env['useumfpack'] = 0
467  if env['useumfpack'] and not conf.CheckFunc('umfpack_di_symbolic'): env['useumfpack'] = 0  if env['useumfpack'] and not conf.CheckFunc('umfpack_di_symbolic'): env['useumfpack'] = 0
468    # if env['useumfpack'] and not conf.CheckFunc('daxpy'): env['useumfpack'] = 0 # this does not work on shake73?
469    
470  # Add UMFPACK to environment env if it was found  # Add UMFPACK to environment env if it was found
471  if env['useumfpack']:  if env['useumfpack']:
# Line 436  if env_mpi['usempi']: Line 500  if env_mpi['usempi']:
500    conf.env.AppendUnique(CPPPATH = [env_mpi['mpi_path']])    conf.env.AppendUnique(CPPPATH = [env_mpi['mpi_path']])
501    conf.env.AppendUnique(LIBPATH = [env_mpi['mpi_lib_path']])    conf.env.AppendUnique(LIBPATH = [env_mpi['mpi_lib_path']])
502    conf.env.AppendUnique(LIBS    = [env_mpi['mpi_libs']])    conf.env.AppendUnique(LIBS    = [env_mpi['mpi_libs']])
503      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['mpi_lib_path'])   # The wrapper script needs to find these libs
504    
505  if env_mpi['usempi'] and not conf.CheckCHeader('mpi.h'): env_mpi['usempi'] = 0  if env_mpi['usempi'] and not conf.CheckCHeader('mpi.h'): env_mpi['usempi'] = 0
506  if env_mpi['usempi'] and not conf.CheckFunc('MPI_Init'): env_mpi['usempi'] = 0  if env_mpi['usempi'] and not conf.CheckFunc('MPI_Init'): env_mpi['usempi'] = 0
# Line 460  if env_mpi['useparmetis']: Line 525  if env_mpi['useparmetis']:
525    conf.env.AppendUnique(CPPPATH = [env_mpi['parmetis_path']])    conf.env.AppendUnique(CPPPATH = [env_mpi['parmetis_path']])
526    conf.env.AppendUnique(LIBPATH = [env_mpi['parmetis_lib_path']])    conf.env.AppendUnique(LIBPATH = [env_mpi['parmetis_lib_path']])
527    conf.env.AppendUnique(LIBS    = [env_mpi['parmetis_libs']])    conf.env.AppendUnique(LIBS    = [env_mpi['parmetis_libs']])
528      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['parmetis_lib_path'])  # The wrapper script needs to find these libs
529    
530  if env_mpi['useparmetis'] and not conf.CheckCHeader('parmetis.h'): env_mpi['useparmetis'] = 0  if env_mpi['useparmetis'] and not conf.CheckCHeader('parmetis.h'): env_mpi['useparmetis'] = 0
531  if env_mpi['useparmetis'] and not conf.CheckFunc('ParMETIS_V3_PartGeomKway'): env_mpi['useparmetis'] = 0  if env_mpi['useparmetis'] and not conf.CheckFunc('ParMETIS_V3_PartGeomKway'): env_mpi['useparmetis'] = 0
# Line 473  else: Line 539  else:
539    
540  env['useparmetis'] = env_mpi['useparmetis']  env['useparmetis'] = env_mpi['useparmetis']
541    
542    ############ Now we switch on Warnings as errors ###############
543    
544    #this needs to be done after configuration because the scons test files have warnings in them
545    
546    if ((fatalwarning != "") and (env['usewarnings'])):
547      env.Append(CCFLAGS        = fatalwarning)
548      env_mpi.Append(CCFLAGS        = fatalwarning)
549    
550  ############ Summarize our environment #########################  ############ Summarize our environment #########################
551    
552  print ""  print ""
# Line 499  else: print "  Not using PAPI" Line 573  else: print "  Not using PAPI"
573  if env['usedebug']: print " Compiling for debug"  if env['usedebug']: print " Compiling for debug"
574  else: print "   Not compiling for debug"  else: print "   Not compiling for debug"
575  print " Installing in", prefix  print " Installing in", prefix
576    if ((fatalwarning != "") and (env['usewarnings'])): print " Treating warnings as errors"
577    else: print "   Not treating warnings as errors"
578  print ""  print ""
579    
580    ############ Delete option-dependent files #####################
581    
582    Execute(Delete(env['libinstall'] + "/Compiled.with.debug"))
583    Execute(Delete(env['libinstall'] + "/Compiled.with.mpi"))
584    Execute(Delete(env['libinstall'] + "/Compiled.with.openmp"))
585    if not env['usempi']: Execute(Delete(env['libinstall'] + "/pythonMPI"))
586    
587  ############ Add some custom builders ##########################  ############ Add some custom builders ##########################
588    
589  py_builder = Builder(action = scons_extensions.build_py, suffix = '.pyc', src_suffix = '.py', single_source=True)  py_builder = Builder(action = scons_extensions.build_py, suffix = '.pyc', src_suffix = '.py', single_source=True)
# Line 512  env.Append(BUILDERS = {'RunUnitTest' : r Line 595  env.Append(BUILDERS = {'RunUnitTest' : r
595  runPyUnitTest_builder = Builder(action = scons_extensions.runPyUnitTest, suffix = '.passed', src_suffic='.py', single_source=True)  runPyUnitTest_builder = Builder(action = scons_extensions.runPyUnitTest, suffix = '.passed', src_suffic='.py', single_source=True)
596  env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});  env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});
597    
598  ############ Build the desired subdirectories ##################  ############ Build the subdirectories ##########################
599    
600  Export(["env", "env_mpi", "clone_env"])  Export(
601      ["env",
602       "env_mpi",
603       "clone_env",
604       "IS_WINDOWS_PLATFORM"
605       ]
606      )
607    
608  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)
609  env.SConscript(dirs = ['paso/src'], build_dir='build/$PLATFORM/paso', duplicate=0)  env.SConscript(dirs = ['paso/src'], build_dir='build/$PLATFORM/paso', duplicate=0)
# Line 526  env.SConscript(dirs = ['doc'], build_dir Line 615  env.SConscript(dirs = ['doc'], build_dir
615  env.SConscript(dirs = ['pyvisi/py_src'], build_dir='build/$PLATFORM/pyvisi', duplicate=0)  env.SConscript(dirs = ['pyvisi/py_src'], build_dir='build/$PLATFORM/pyvisi', duplicate=0)
616  env.SConscript(dirs = ['pycad/py_src'], build_dir='build/$PLATFORM/pycad', duplicate=0)  env.SConscript(dirs = ['pycad/py_src'], build_dir='build/$PLATFORM/pycad', duplicate=0)
617  env.SConscript(dirs = ['pythonMPI/src'], build_dir='build/$PLATFORM/pythonMPI', duplicate=0)  env.SConscript(dirs = ['pythonMPI/src'], build_dir='build/$PLATFORM/pythonMPI', duplicate=0)
618    env.SConscript(dirs = ['scripts'], build_dir='build/$PLATFORM/scripts', duplicate=0)
619    
620  ############ Remember what optimizations we used ###############  ############ Remember what optimizations we used ###############
621    
# Line 533  remember_list = [] Line 623  remember_list = []
623    
624  if env['usedebug']:  if env['usedebug']:
625    remember_list += env.Command(env['libinstall'] + "/Compiled.with.debug", None, Touch('$TARGET'))    remember_list += env.Command(env['libinstall'] + "/Compiled.with.debug", None, Touch('$TARGET'))
 else:  
   remember_list += env.Command(env['libinstall'] + "/Compiled.with.debug", None, Delete('$TARGET'))  
626    
627  if env['usempi']:  if env['usempi']:
628    remember_list += env.Command(env['libinstall'] + "/Compiled.with.mpi", None, Touch('$TARGET'))    remember_list += env.Command(env['libinstall'] + "/Compiled.with.mpi", None, Touch('$TARGET'))
 else:  
   remember_list += env.Command(env['libinstall'] + "/Compiled.with.mpi", None, Delete('$TARGET'))  
629    
630  if env['omp_optim'] != '':  if env['omp_optim'] != '':
631    remember_list += env.Command(env['libinstall'] + "/Compiled.with.openmp", None, Touch('$TARGET'))    remember_list += env.Command(env['libinstall'] + "/Compiled.with.openmp", None, Touch('$TARGET'))
 else:  
   remember_list += env.Command(env['libinstall'] + "/Compiled.with.openmp", None, Delete('$TARGET'))  
632    
633  env.Alias('remember_options', remember_list)  env.Alias('remember_options', remember_list)
634    
# Line 572  build_all_list += ['build_esysUtils'] Line 656  build_all_list += ['build_esysUtils']
656  build_all_list += ['build_paso']  build_all_list += ['build_paso']
657  build_all_list += ['build_escript']  build_all_list += ['build_escript']
658  build_all_list += ['build_finley']  build_all_list += ['build_finley']
659  if env['usempi']: build_all_list += ['target_pythonMPI_exe']  if env['usempi']:       build_all_list += ['target_pythonMPI_exe']
660    if not IS_WINDOWS_PLATFORM: build_all_list += ['target_finley_wrapper']
661  env.Alias('build_all', build_all_list)  env.Alias('build_all', build_all_list)
662    
663  install_all_list = []  install_all_list = []
# Line 584  install_all_list += ['install_finley'] Line 669  install_all_list += ['install_finley']
669  install_all_list += ['target_install_pyvisi_py']  install_all_list += ['target_install_pyvisi_py']
670  install_all_list += ['target_install_modellib_py']  install_all_list += ['target_install_modellib_py']
671  install_all_list += ['target_install_pycad_py']  install_all_list += ['target_install_pycad_py']
672  if env['usempi']: install_all_list += ['target_install_pythonMPI_exe']  if env['usempi']:       install_all_list += ['target_install_pythonMPI_exe']
673    if not IS_WINDOWS_PLATFORM: install_all_list += ['target_install_finley_wrapper']
674  install_all_list += ['remember_options']  install_all_list += ['remember_options']
675  env.Alias('install_all', install_all_list)  env.Alias('install_all', install_all_list)
676    

Legend:
Removed from v.1708  
changed lines
  Added in v.2156

  ViewVC Help
Powered by ViewVC 1.1.26