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

Diff of /branches/amg_from_3530/SConstruct

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

revision 1705 by ksteube, Thu Aug 14 05:56:40 2008 UTC revision 2100 by gross, Wed Nov 26 08:13:00 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    # Primary Business: Queensland, Australia
9    # Licensed under the Open Software License version 3.0
10    # http://www.opensource.org/licenses/osl-3.0.php
11  #  #
12  #              http://www.access.edu.au  ########################################################
13  #       Primary Business: Queensland, Australia  
 #  Licensed under the Open Software License version 3.0  
 #     http://www.opensource.org/licenses/osl-3.0.php  
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      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 41  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 48  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 56  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 99  opts.AddOptions( Line 114  opts.AddOptions(
114    ('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'),
115    ('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']),
116  # UMFPACK  # UMFPACK
117    BoolOption('useumfpack', 'switch on/off the usage of UMFPACK', 'yes'),    BoolOption('useumfpack', 'switch on/off the usage of UMFPACK', 'no'),
118    ('ufc_path', 'Path to UFconfig includes', '/usr/include/suitesparse'),    ('ufc_path', 'Path to UFconfig includes', '/usr/include/suitesparse'),
119    ('umf_path', 'Path to UMFPACK includes', '/usr/include/suitesparse'),    ('umf_path', 'Path to UMFPACK includes', '/usr/include/suitesparse'),
120    ('umf_lib_path', 'Path to UMFPACK libs', usr_lib),    ('umf_lib_path', 'Path to UMFPACK libs', usr_lib),
# Line 111  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 120  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 145  if env["CC"] == "icc": Line 168  if env["CC"] == "icc":
168    # Intel compilers    # Intel compilers
169    cc_flags      = "-fPIC -ansi -wd161 -w1 -vec-report0 -DBLOCKTIMER -DCORE_ID1"    cc_flags      = "-fPIC -ansi -wd161 -w1 -vec-report0 -DBLOCKTIMER -DCORE_ID1"
170    cc_optim      = "-O3 -ftz -IPF_ftlacc- -IPF_fma -fno-alias"    cc_optim      = "-O3 -ftz -IPF_ftlacc- -IPF_fma -fno-alias"
171    cc_debug      = "-g -O0 -UDOASSERT -DDOPROF -DBOUNDS_CHECK"    cc_debug      = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"
172    omp_optim     = "-openmp -openmp_report0"    omp_optim     = "-openmp -openmp_report0"
173    omp_debug     = "-openmp -openmp_report0"    omp_debug     = "-openmp -openmp_report0"
174    omp_libs      = ['guide', 'pthread']    omp_libs      = ['guide', 'pthread']
175    pedantic      = ""    pedantic      = ""
176      fatalwarning      = ""        # Switch to turn warnings into errors
177  elif env["CC"] == "gcc":  elif env["CC"] == "gcc":
178    # GNU C on any system    # GNU C on any system
179    cc_flags      = "-fPIC -ansi -ffast-math -Wno-unknown-pragmas -DBLOCKTIMER"    cc_flags      = "-pedantic -Wall -fPIC -ansi -ffast-math -Wno-unknown-pragmas -DBLOCKTIMER -isystem " + env['boost_path'] + "/boost -isystem " + env['python_path'] + " -Wno-sign-compare -Wno-system-headers -Wno-strict-aliasing -Wno-long-long"
180    #the strict aliasing warning is triggered by some type punning in the boost headers for version 1.34
181    #isystem does not seem to prevent this
182    #the long long warning occurs on the Mac
183    cc_optim      = "-O3"    cc_optim      = "-O3"
184    cc_debug      = "-g -O0 -UDOASSERT -DDOPROF -DBOUNDS_CHECK"    cc_debug      = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"
185    omp_optim     = ""    omp_optim     = ""
186    omp_debug     = ""    omp_debug     = ""
187    omp_libs      = []    omp_libs      = []
188    pedantic      = "-pedantic-errors -Wno-long-long"    pedantic      = "-pedantic-errors -Wno-long-long"
189      fatalwarning      = "-Werror"
190  elif env["CC"] == "cl":  elif env["CC"] == "cl":
191    # Microsoft Visual C on Windows    # Microsoft Visual C on Windows
192    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 168  elif env["CC"] == "cl": Line 196  elif env["CC"] == "cl":
196    omp_debug     = ""    omp_debug     = ""
197    omp_libs      = []    omp_libs      = []
198    pedantic      = ""    pedantic      = ""
199      fatalwarning      = ""
200    elif env["CC"] == "icl":
201      # intel C on Windows, see windows_intelc_options.py for a start
202      pedantic      = ""
203      fatalwarning      = ""
204    
205  # If not specified in hostname_options.py then set them here  # If not specified in hostname_options.py then set them here
206  if env["cc_flags"]  == "-DEFAULT_1": env['cc_flags'] = cc_flags  if env["cc_flags"]  == "-DEFAULT_1": env['cc_flags'] = cc_flags
# Line 221  except KeyError: pass Line 254  except KeyError: pass
254  env.PrependENVPath('PYTHONPATH', prefix)  env.PrependENVPath('PYTHONPATH', prefix)
255  env.PrependENVPath('LD_LIBRARY_PATH', env['libinstall'])  env.PrependENVPath('LD_LIBRARY_PATH', env['libinstall'])
256    
257    env['ENV']['ESCRIPT_ROOT'] = prefix
258    
259  ############ Set up paths for Configure() ######################  ############ Set up paths for Configure() ######################
260    
261  # Make a copy of an environment  # Make a copy of an environment
# Line 233  def clone_env(env): Line 268  def clone_env(env):
268  env.Append(CPPPATH      = [Dir('include')])  env.Append(CPPPATH      = [Dir('include')])
269    
270  # Add cc option -L<Escript>/trunk/lib  # Add cc option -L<Escript>/trunk/lib
271  env.Append(LIBPATH      = [Dir('lib')])  env.Append(LIBPATH      = [Dir(env['libinstall'])])
   
 env.Append(CPPDEFINES = ['ESCRIPT_EXPORTS', 'FINLEY_EXPORTS'])  
272    
273  if env['cc_extra'] != '': env.Append(CCFLAGS = env['cc_extra'])  if env['cc_extra'] != '': env.Append(CCFLAGS = env['cc_extra'])
274    if env['ld_extra'] != '': env.Append(LINKFLAGS = env['ld_extra'])
275    
276  if env['usepedantic']: env.Append(CCFLAGS = pedantic)  if env['usepedantic']: env.Append(CCFLAGS = pedantic)
277    
# Line 245  if env['usepedantic']: env.Append(CCFLAG Line 279  if env['usepedantic']: env.Append(CCFLAG
279  if IS_WINDOWS_PLATFORM:  if IS_WINDOWS_PLATFORM:
280    env.PrependENVPath('PATH',    [env['boost_lib_path']])    env.PrependENVPath('PATH',    [env['boost_lib_path']])
281    env.PrependENVPath('PATH',    [env['libinstall']])    env.PrependENVPath('PATH',    [env['libinstall']])
282      if not env['share_esysUtils'] :
283        env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])
284      if not env['share_paso'] :
285        env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])
286    
287    if env['usenetcdf']:    if env['usenetcdf']:
288      env.PrependENVPath('PATH',  [env['netCDF_lib_path']])      env.PrependENVPath('PATH',  [env['netCDF_lib_path']])
289    
# Line 278  if not conf.CheckFunc('printf'): Line 317  if not conf.CheckFunc('printf'):
317    print "Cannot run C compiler '%s' (or libc is missing)" % (env['CC'])    print "Cannot run C compiler '%s' (or libc is missing)" % (env['CC'])
318    sys.exit(1)    sys.exit(1)
319    
320  if not conf.CheckFunc('gethostname'):  if conf.CheckFunc('gethostname'):
321    env.Append(CPPDEFINES = ['HAVE_GETHOSTNAME'])    conf.env.Append(CPPDEFINES = ['HAVE_GETHOSTNAME'])
322    
323  ############ python libraries (required) #######################  ############ python libraries (required) #######################
324    
# Line 287  conf.env.AppendUnique(CPPPATH      = [env['p Line 326  conf.env.AppendUnique(CPPPATH      = [env['p
326  conf.env.AppendUnique(LIBPATH       = [env['python_lib_path']])  conf.env.AppendUnique(LIBPATH       = [env['python_lib_path']])
327  conf.env.AppendUnique(LIBS      = [env['python_libs']])  conf.env.AppendUnique(LIBS      = [env['python_libs']])
328    
329    conf.env.PrependENVPath('LD_LIBRARY_PATH', env['python_lib_path'])  # The wrapper script needs to find these libs
330    
331  if not conf.CheckCHeader('Python.h'):  if not conf.CheckCHeader('Python.h'):
332    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'])
333    sys.exit(1)    sys.exit(1)
# Line 300  conf.env.AppendUnique(CPPPATH      = [env['b Line 341  conf.env.AppendUnique(CPPPATH      = [env['b
341  conf.env.AppendUnique(LIBPATH       = [env['boost_lib_path']])  conf.env.AppendUnique(LIBPATH       = [env['boost_lib_path']])
342  conf.env.AppendUnique(LIBS      = [env['boost_libs']])  conf.env.AppendUnique(LIBS      = [env['boost_libs']])
343    
344    conf.env.PrependENVPath('LD_LIBRARY_PATH', env['boost_lib_path'])   # The wrapper script needs to find these libs
345    
346  if not conf.CheckCXXHeader('boost/python.hpp'):  if not conf.CheckCXXHeader('boost/python.hpp'):
347    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'])
348    sys.exit(1)    sys.exit(1)
# Line 331  if env['usenetcdf']: Line 374  if env['usenetcdf']:
374    conf.env.AppendUnique(CPPPATH = [env['netCDF_path']])    conf.env.AppendUnique(CPPPATH = [env['netCDF_path']])
375    conf.env.AppendUnique(LIBPATH = [env['netCDF_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['netCDF_lib_path']])
376    conf.env.AppendUnique(LIBS    = [env['netCDF_libs']])    conf.env.AppendUnique(LIBS    = [env['netCDF_libs']])
377      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['netCDF_lib_path'])    # The wrapper script needs to find these libs
378    
379  if env['usenetcdf'] and not conf.CheckCHeader('netcdf.h'): env['usenetcdf'] = 0  if env['usenetcdf'] and not conf.CheckCHeader('netcdf.h'): env['usenetcdf'] = 0
380  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 351  if env['usepapi']: Line 395  if env['usepapi']:
395    conf.env.AppendUnique(CPPPATH = [env['papi_path']])    conf.env.AppendUnique(CPPPATH = [env['papi_path']])
396    conf.env.AppendUnique(LIBPATH = [env['papi_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['papi_lib_path']])
397    conf.env.AppendUnique(LIBS    = [env['papi_libs']])    conf.env.AppendUnique(LIBS    = [env['papi_libs']])
398      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['papi_lib_path'])  # The wrapper script needs to find these libs
399    
400  if env['usepapi'] and not conf.CheckCHeader('papi.h'): env['usepapi'] = 0  if env['usepapi'] and not conf.CheckCHeader('papi.h'): env['usepapi'] = 0
401  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 371  if env['usemkl']: Line 416  if env['usemkl']:
416    conf.env.AppendUnique(CPPPATH = [env['mkl_path']])    conf.env.AppendUnique(CPPPATH = [env['mkl_path']])
417    conf.env.AppendUnique(LIBPATH = [env['mkl_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['mkl_lib_path']])
418    conf.env.AppendUnique(LIBS    = [env['mkl_libs']])    conf.env.AppendUnique(LIBS    = [env['mkl_libs']])
419      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['mkl_lib_path'])   # The wrapper script needs to find these libs
420    
421  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
422  if env['usemkl'] and not conf.CheckFunc('pardiso_'): env['usemkl'] = 0  if env['usemkl'] and not conf.CheckFunc('pardiso_'): env['usemkl'] = 0
# Line 398  if env['useumfpack']: Line 444  if env['useumfpack']:
444    conf.env.AppendUnique(CPPPATH = [env['blas_path']])    conf.env.AppendUnique(CPPPATH = [env['blas_path']])
445    conf.env.AppendUnique(LIBPATH = [env['blas_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['blas_lib_path']])
446    conf.env.AppendUnique(LIBS    = [env['blas_libs']])    conf.env.AppendUnique(LIBS    = [env['blas_libs']])
447      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['umf_lib_path'])   # The wrapper script needs to find these libs
448  if env['useumfpack'] and not conf.CheckCHeader('umfpack.h'): env['useumfpack'] = 0    conf.env.PrependENVPath('LD_LIBRARY_PATH', env['amd_lib_path'])   # The wrapper script needs to find these libs
449  if env['useumfpack'] and not conf.CheckFunc('umfpack_di_symbolic'): env['useumfpack'] = 0    conf.env.PrependENVPath('LD_LIBRARY_PATH', env['blas_lib_path'])  # The wrapper script needs to find these libs
450    
451    # if env['useumfpack'] and not conf.CheckCHeader('umfpack.h'): env['useumfpack'] = 0
452    # if env['useumfpack'] and not conf.CheckFunc('daxpy'): env['useumfpack'] = 0
453    # if env['useumfpack'] and not conf.CheckFunc('umfpack_di_symbolic'): env['useumfpack'] = 0
454    
455  # Add UMFPACK to environment env if it was found  # Add UMFPACK to environment env if it was found
456  if env['useumfpack']:  if env['useumfpack']:
# Line 435  if env_mpi['usempi']: Line 485  if env_mpi['usempi']:
485    conf.env.AppendUnique(CPPPATH = [env_mpi['mpi_path']])    conf.env.AppendUnique(CPPPATH = [env_mpi['mpi_path']])
486    conf.env.AppendUnique(LIBPATH = [env_mpi['mpi_lib_path']])    conf.env.AppendUnique(LIBPATH = [env_mpi['mpi_lib_path']])
487    conf.env.AppendUnique(LIBS    = [env_mpi['mpi_libs']])    conf.env.AppendUnique(LIBS    = [env_mpi['mpi_libs']])
488      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['mpi_lib_path'])   # The wrapper script needs to find these libs
489    
490  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
491  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 459  if env_mpi['useparmetis']: Line 510  if env_mpi['useparmetis']:
510    conf.env.AppendUnique(CPPPATH = [env_mpi['parmetis_path']])    conf.env.AppendUnique(CPPPATH = [env_mpi['parmetis_path']])
511    conf.env.AppendUnique(LIBPATH = [env_mpi['parmetis_lib_path']])    conf.env.AppendUnique(LIBPATH = [env_mpi['parmetis_lib_path']])
512    conf.env.AppendUnique(LIBS    = [env_mpi['parmetis_libs']])    conf.env.AppendUnique(LIBS    = [env_mpi['parmetis_libs']])
513      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['parmetis_lib_path'])  # The wrapper script needs to find these libs
514    
515  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
516  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 472  else: Line 524  else:
524    
525  env['useparmetis'] = env_mpi['useparmetis']  env['useparmetis'] = env_mpi['useparmetis']
526    
527    ############ Now we switch on Warnings as errors ###############
528    
529    #this needs to be done after configuration because the scons test files have warnings in them
530    
531    if ((fatalwarning != "") and (env['usewarnings'])):
532      env.Append(CCFLAGS        = fatalwarning)
533      env_mpi.Append(CCFLAGS        = fatalwarning)
534    
535  ############ Summarize our environment #########################  ############ Summarize our environment #########################
536    
537  print ""  print ""
# Line 498  else: print "  Not using PAPI" Line 558  else: print "  Not using PAPI"
558  if env['usedebug']: print " Compiling for debug"  if env['usedebug']: print " Compiling for debug"
559  else: print "   Not compiling for debug"  else: print "   Not compiling for debug"
560  print " Installing in", prefix  print " Installing in", prefix
561    if ((fatalwarning != "") and (env['usewarnings'])): print " Treating warnings as errors"
562    else: print "   Not treating warnings as errors"
563  print ""  print ""
564    
565    ############ Delete option-dependent files #####################
566    
567    Execute(Delete(env['libinstall'] + "/Compiled.with.debug"))
568    Execute(Delete(env['libinstall'] + "/Compiled.with.mpi"))
569    Execute(Delete(env['libinstall'] + "/Compiled.with.openmp"))
570    if not env['usempi']: Execute(Delete(env['libinstall'] + "/pythonMPI"))
571    
572  ############ Add some custom builders ##########################  ############ Add some custom builders ##########################
573    
574  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 511  env.Append(BUILDERS = {'RunUnitTest' : r Line 580  env.Append(BUILDERS = {'RunUnitTest' : r
580  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)
581  env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});  env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});
582    
583  ############ Build the desired subdirectories ##################  ############ Build the subdirectories ##########################
584    
585  Export(["env", "env_mpi", "clone_env"])  Export(
586      ["env",
587       "env_mpi",
588       "clone_env",
589       "IS_WINDOWS_PLATFORM"
590       ]
591      )
592    
593  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)
594  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 525  env.SConscript(dirs = ['doc'], build_dir Line 600  env.SConscript(dirs = ['doc'], build_dir
600  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)
601  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)
602  env.SConscript(dirs = ['pythonMPI/src'], build_dir='build/$PLATFORM/pythonMPI', duplicate=0)  env.SConscript(dirs = ['pythonMPI/src'], build_dir='build/$PLATFORM/pythonMPI', duplicate=0)
603    env.SConscript(dirs = ['scripts'], build_dir='build/$PLATFORM/scripts', duplicate=0)
604    
605  ############ Remember what optimizations we used ###############  ############ Remember what optimizations we used ###############
606    
# Line 532  remember_list = [] Line 608  remember_list = []
608    
609  if env['usedebug']:  if env['usedebug']:
610    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'))  
611    
612  if env['usempi']:  if env['usempi']:
613    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'))  
614    
615  if env['omp_optim'] != '':  if env['omp_optim'] != '':
616    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'))  
617    
618  env.Alias('remember_options', remember_list)  env.Alias('remember_options', remember_list)
619    
# Line 571  build_all_list += ['build_esysUtils'] Line 641  build_all_list += ['build_esysUtils']
641  build_all_list += ['build_paso']  build_all_list += ['build_paso']
642  build_all_list += ['build_escript']  build_all_list += ['build_escript']
643  build_all_list += ['build_finley']  build_all_list += ['build_finley']
644  if env['usempi']: build_all_list += ['target_pythonMPI_exe']  if env['usempi']:       build_all_list += ['target_pythonMPI_exe']
645    if not IS_WINDOWS_PLATFORM: build_all_list += ['target_finley_wrapper']
646  env.Alias('build_all', build_all_list)  env.Alias('build_all', build_all_list)
647    
648  install_all_list = []  install_all_list = []
# Line 583  install_all_list += ['install_finley'] Line 654  install_all_list += ['install_finley']
654  install_all_list += ['target_install_pyvisi_py']  install_all_list += ['target_install_pyvisi_py']
655  install_all_list += ['target_install_modellib_py']  install_all_list += ['target_install_modellib_py']
656  install_all_list += ['target_install_pycad_py']  install_all_list += ['target_install_pycad_py']
657  if env['usempi']: install_all_list += ['target_install_pythonMPI_exe']  if env['usempi']:       install_all_list += ['target_install_pythonMPI_exe']
658    if not IS_WINDOWS_PLATFORM: install_all_list += ['target_install_finley_wrapper']
659  install_all_list += ['remember_options']  install_all_list += ['remember_options']
660  env.Alias('install_all', install_all_list)  env.Alias('install_all', install_all_list)
661    

Legend:
Removed from v.1705  
changed lines
  Added in v.2100

  ViewVC Help
Powered by ViewVC 1.1.26