/[escript]/trunk/SConstruct
ViewVC logotype

Diff of /trunk/SConstruct

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

revision 1753 by ksteube, Sun Sep 7 22:01:23 2008 UTC revision 2161 by artak, Tue Dec 16 03:31: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  #              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"
183    #the long long warning occurs on the Mac
184    cc_optim      = "-O3"    cc_optim      = "-O3"
185    cc_debug      = "-g -O0 -UDOASSERT -DDOPROF -DBOUNDS_CHECK"    cc_debug      = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"
186    omp_optim     = ""    omp_optim     = ""
187    omp_debug     = ""    omp_debug     = ""
188    omp_libs      = []    omp_libs      = []
189    pedantic      = "-pedantic-errors -Wno-long-long"    pedantic      = "-pedantic-errors -Wno-long-long"
190      fatalwarning      = "-Werror"
191      sysheaderopt      = "-isystem "
192  elif env["CC"] == "cl":  elif env["CC"] == "cl":
193    # Microsoft Visual C on Windows    # Microsoft Visual C on Windows
194    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 198  elif env["CC"] == "cl":
198    omp_debug     = ""    omp_debug     = ""
199    omp_libs      = []    omp_libs      = []
200    pedantic      = ""    pedantic      = ""
201      fatalwarning      = ""
202      sysheaderopt      = ""
203    elif env["CC"] == "icl":
204      # intel C on Windows, see windows_intelc_options.py for a start
205      pedantic      = ""
206      fatalwarning      = ""
207      sysheaderopt      = ""
208    
209    
210  # If not specified in hostname_options.py then set them here  # If not specified in hostname_options.py then set them here
211  if env["cc_flags"]  == "-DEFAULT_1": env['cc_flags'] = cc_flags  if env["cc_flags"]  == "-DEFAULT_1": env['cc_flags'] = cc_flags
# Line 186  if not env["useopenmp"]: Line 223  if not env["useopenmp"]:
223    
224  if env['omp_optim'] == "" and env['omp_debug'] == "": env["useopenmp"] = 0  if env['omp_optim'] == "" and env['omp_debug'] == "": env["useopenmp"] = 0
225    
 Execute(Delete(env['libinstall'] + "/Compiled.with.debug"))  
 Execute(Delete(env['libinstall'] + "/Compiled.with.mpi"))  
 Execute(Delete(env['libinstall'] + "/Compiled.with.openmp"))  
 if not env['useMPI']: Execute(Delete(env['libinstall'] + "/pythonMPI"))  
   
226  ############ Copy environment variables into scons env #########  ############ Copy environment variables into scons env #########
227    
228  try: env['ENV']['OMP_NUM_THREADS'] = os.environ['OMP_NUM_THREADS']  try: env['ENV']['OMP_NUM_THREADS'] = os.environ['OMP_NUM_THREADS']
# Line 227  except KeyError: pass Line 259  except KeyError: pass
259  env.PrependENVPath('PYTHONPATH', prefix)  env.PrependENVPath('PYTHONPATH', prefix)
260  env.PrependENVPath('LD_LIBRARY_PATH', env['libinstall'])  env.PrependENVPath('LD_LIBRARY_PATH', env['libinstall'])
261    
262    env['ENV']['ESCRIPT_ROOT'] = prefix
263    
264  ############ Set up paths for Configure() ######################  ############ Set up paths for Configure() ######################
265    
266  # Make a copy of an environment  # Make a copy of an environment
# Line 241  env.Append(CPPPATH     = [Dir('include')]) Line 275  env.Append(CPPPATH     = [Dir('include')])
275  # Add cc option -L<Escript>/trunk/lib  # Add cc option -L<Escript>/trunk/lib
276  env.Append(LIBPATH      = [Dir(env['libinstall'])])  env.Append(LIBPATH      = [Dir(env['libinstall'])])
277    
 env.Append(CPPDEFINES = ['ESCRIPT_EXPORTS', 'FINLEY_EXPORTS'])  
   
278  if env['cc_extra'] != '': env.Append(CCFLAGS = env['cc_extra'])  if env['cc_extra'] != '': env.Append(CCFLAGS = env['cc_extra'])
279    if env['ld_extra'] != '': env.Append(LINKFLAGS = env['ld_extra'])
280    
281  if env['usepedantic']: env.Append(CCFLAGS = pedantic)  if env['usepedantic']: env.Append(CCFLAGS = pedantic)
282    
# Line 251  if env['usepedantic']: env.Append(CCFLAG Line 284  if env['usepedantic']: env.Append(CCFLAG
284  if IS_WINDOWS_PLATFORM:  if IS_WINDOWS_PLATFORM:
285    env.PrependENVPath('PATH',    [env['boost_lib_path']])    env.PrependENVPath('PATH',    [env['boost_lib_path']])
286    env.PrependENVPath('PATH',    [env['libinstall']])    env.PrependENVPath('PATH',    [env['libinstall']])
287      if not env['share_esysUtils'] :
288        env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])
289      if not env['share_paso'] :
290        env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])
291    
292    if env['usenetcdf']:    if env['usenetcdf']:
293      env.PrependENVPath('PATH',  [env['netCDF_lib_path']])      env.PrependENVPath('PATH',  [env['netCDF_lib_path']])
294    
# Line 284  if not conf.CheckFunc('printf'): Line 322  if not conf.CheckFunc('printf'):
322    print "Cannot run C compiler '%s' (or libc is missing)" % (env['CC'])    print "Cannot run C compiler '%s' (or libc is missing)" % (env['CC'])
323    sys.exit(1)    sys.exit(1)
324    
325  if not conf.CheckFunc('gethostname'):  if conf.CheckFunc('gethostname'):
326    env.Append(CPPDEFINES = ['HAVE_GETHOSTNAME'])    conf.env.Append(CPPDEFINES = ['HAVE_GETHOSTNAME'])
327    
328  ############ python libraries (required) #######################  ############ python libraries (required) #######################
329    
330  conf.env.AppendUnique(CPPPATH       = [env['python_path']])  
331    if not sysheaderopt =="":
332      conf.env.Append(CCFLAGS=sysheaderopt+env['python_path'])
333    else:
334      conf.env.AppendUnique(CPPPATH     = [env['python_path']])
335    
336  conf.env.AppendUnique(LIBPATH       = [env['python_lib_path']])  conf.env.AppendUnique(LIBPATH       = [env['python_lib_path']])
337  conf.env.AppendUnique(LIBS      = [env['python_libs']])  conf.env.AppendUnique(LIBS      = [env['python_libs']])
338    
339    conf.env.PrependENVPath('LD_LIBRARY_PATH', env['python_lib_path'])  # The wrapper script needs to find these libs
340    
341  if not conf.CheckCHeader('Python.h'):  if not conf.CheckCHeader('Python.h'):
342    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'])
343    sys.exit(1)    sys.exit(1)
# Line 302  if not conf.CheckFunc('Py_Main'): Line 347  if not conf.CheckFunc('Py_Main'):
347    
348  ############ boost (required) ##################################  ############ boost (required) ##################################
349    
350  conf.env.AppendUnique(CPPPATH       = [env['boost_path']])  if not sysheaderopt =="":
351      conf.env.Append(CCFLAGS=sysheaderopt+env['boost_path']+'boost')
352    else:
353      conf.env.AppendUnique(CPPPATH     = [env['boost_path']])
354    
355  conf.env.AppendUnique(LIBPATH       = [env['boost_lib_path']])  conf.env.AppendUnique(LIBPATH       = [env['boost_lib_path']])
356  conf.env.AppendUnique(LIBS      = [env['boost_libs']])  conf.env.AppendUnique(LIBS      = [env['boost_libs']])
357    
358    conf.env.PrependENVPath('LD_LIBRARY_PATH', env['boost_lib_path'])   # The wrapper script needs to find these libs
359    
360  if not conf.CheckCXXHeader('boost/python.hpp'):  if not conf.CheckCXXHeader('boost/python.hpp'):
361    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'])
362    sys.exit(1)    sys.exit(1)
# Line 337  if env['usenetcdf']: Line 388  if env['usenetcdf']:
388    conf.env.AppendUnique(CPPPATH = [env['netCDF_path']])    conf.env.AppendUnique(CPPPATH = [env['netCDF_path']])
389    conf.env.AppendUnique(LIBPATH = [env['netCDF_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['netCDF_lib_path']])
390    conf.env.AppendUnique(LIBS    = [env['netCDF_libs']])    conf.env.AppendUnique(LIBS    = [env['netCDF_libs']])
391      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['netCDF_lib_path'])    # The wrapper script needs to find these libs
392    
393  if env['usenetcdf'] and not conf.CheckCHeader('netcdf.h'): env['usenetcdf'] = 0  if env['usenetcdf'] and not conf.CheckCHeader('netcdf.h'): env['usenetcdf'] = 0
394  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 357  if env['usepapi']: Line 409  if env['usepapi']:
409    conf.env.AppendUnique(CPPPATH = [env['papi_path']])    conf.env.AppendUnique(CPPPATH = [env['papi_path']])
410    conf.env.AppendUnique(LIBPATH = [env['papi_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['papi_lib_path']])
411    conf.env.AppendUnique(LIBS    = [env['papi_libs']])    conf.env.AppendUnique(LIBS    = [env['papi_libs']])
412      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['papi_lib_path'])  # The wrapper script needs to find these libs
413    
414  if env['usepapi'] and not conf.CheckCHeader('papi.h'): env['usepapi'] = 0  if env['usepapi'] and not conf.CheckCHeader('papi.h'): env['usepapi'] = 0
415  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 377  if env['usemkl']: Line 430  if env['usemkl']:
430    conf.env.AppendUnique(CPPPATH = [env['mkl_path']])    conf.env.AppendUnique(CPPPATH = [env['mkl_path']])
431    conf.env.AppendUnique(LIBPATH = [env['mkl_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['mkl_lib_path']])
432    conf.env.AppendUnique(LIBS    = [env['mkl_libs']])    conf.env.AppendUnique(LIBS    = [env['mkl_libs']])
433      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['mkl_lib_path'])   # The wrapper script needs to find these libs
434    
435  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
436  if env['usemkl'] and not conf.CheckFunc('pardiso_'): env['usemkl'] = 0  if env['usemkl'] and not conf.CheckFunc('pardiso_'): env['usemkl'] = 0
# Line 404  if env['useumfpack']: Line 458  if env['useumfpack']:
458    conf.env.AppendUnique(CPPPATH = [env['blas_path']])    conf.env.AppendUnique(CPPPATH = [env['blas_path']])
459    conf.env.AppendUnique(LIBPATH = [env['blas_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['blas_lib_path']])
460    conf.env.AppendUnique(LIBS    = [env['blas_libs']])    conf.env.AppendUnique(LIBS    = [env['blas_libs']])
461      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['umf_lib_path'])   # The wrapper script needs to find these libs
462      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['amd_lib_path'])   # The wrapper script needs to find these libs
463      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['blas_lib_path'])  # The wrapper script needs to find these libs
464    
465  if env['useumfpack'] and not conf.CheckCHeader('umfpack.h'): env['useumfpack'] = 0  if env['useumfpack'] and not conf.CheckCHeader('umfpack.h'): env['useumfpack'] = 0
466  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
467    if env['useumfpack'] and not conf.CheckFunc('daxpy'): env['useumfpack'] = 0 # this does not work on shake73?
468    
469  # Add UMFPACK to environment env if it was found  # Add UMFPACK to environment env if it was found
470  if env['useumfpack']:  if env['useumfpack']:
# Line 441  if env_mpi['usempi']: Line 499  if env_mpi['usempi']:
499    conf.env.AppendUnique(CPPPATH = [env_mpi['mpi_path']])    conf.env.AppendUnique(CPPPATH = [env_mpi['mpi_path']])
500    conf.env.AppendUnique(LIBPATH = [env_mpi['mpi_lib_path']])    conf.env.AppendUnique(LIBPATH = [env_mpi['mpi_lib_path']])
501    conf.env.AppendUnique(LIBS    = [env_mpi['mpi_libs']])    conf.env.AppendUnique(LIBS    = [env_mpi['mpi_libs']])
502      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['mpi_lib_path'])   # The wrapper script needs to find these libs
503    
504  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
505  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 465  if env_mpi['useparmetis']: Line 524  if env_mpi['useparmetis']:
524    conf.env.AppendUnique(CPPPATH = [env_mpi['parmetis_path']])    conf.env.AppendUnique(CPPPATH = [env_mpi['parmetis_path']])
525    conf.env.AppendUnique(LIBPATH = [env_mpi['parmetis_lib_path']])    conf.env.AppendUnique(LIBPATH = [env_mpi['parmetis_lib_path']])
526    conf.env.AppendUnique(LIBS    = [env_mpi['parmetis_libs']])    conf.env.AppendUnique(LIBS    = [env_mpi['parmetis_libs']])
527      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['parmetis_lib_path'])  # The wrapper script needs to find these libs
528    
529  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
530  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 478  else: Line 538  else:
538    
539  env['useparmetis'] = env_mpi['useparmetis']  env['useparmetis'] = env_mpi['useparmetis']
540    
541    ############ Now we switch on Warnings as errors ###############
542    
543    #this needs to be done after configuration because the scons test files have warnings in them
544    
545    if ((fatalwarning != "") and (env['usewarnings'])):
546      env.Append(CCFLAGS        = fatalwarning)
547      env_mpi.Append(CCFLAGS        = fatalwarning)
548    
549  ############ Summarize our environment #########################  ############ Summarize our environment #########################
550    
551  print ""  print ""
# Line 504  else: print "  Not using PAPI" Line 572  else: print "  Not using PAPI"
572  if env['usedebug']: print " Compiling for debug"  if env['usedebug']: print " Compiling for debug"
573  else: print "   Not compiling for debug"  else: print "   Not compiling for debug"
574  print " Installing in", prefix  print " Installing in", prefix
575    if ((fatalwarning != "") and (env['usewarnings'])): print " Treating warnings as errors"
576    else: print "   Not treating warnings as errors"
577  print ""  print ""
578    
579    ############ Delete option-dependent files #####################
580    
581    Execute(Delete(env['libinstall'] + "/Compiled.with.debug"))
582    Execute(Delete(env['libinstall'] + "/Compiled.with.mpi"))
583    Execute(Delete(env['libinstall'] + "/Compiled.with.openmp"))
584    if not env['usempi']: Execute(Delete(env['libinstall'] + "/pythonMPI"))
585    
586  ############ Add some custom builders ##########################  ############ Add some custom builders ##########################
587    
588  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 517  env.Append(BUILDERS = {'RunUnitTest' : r Line 594  env.Append(BUILDERS = {'RunUnitTest' : r
594  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)
595  env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});  env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});
596    
597  ############ Build the desired subdirectories ##################  ############ Build the subdirectories ##########################
598    
599  Export(["env", "env_mpi", "clone_env"])  Export(
600      ["env",
601       "env_mpi",
602       "clone_env",
603       "IS_WINDOWS_PLATFORM"
604       ]
605      )
606    
607  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)
608  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 531  env.SConscript(dirs = ['doc'], build_dir Line 614  env.SConscript(dirs = ['doc'], build_dir
614  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)
615  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)
616  env.SConscript(dirs = ['pythonMPI/src'], build_dir='build/$PLATFORM/pythonMPI', duplicate=0)  env.SConscript(dirs = ['pythonMPI/src'], build_dir='build/$PLATFORM/pythonMPI', duplicate=0)
617    env.SConscript(dirs = ['scripts'], build_dir='build/$PLATFORM/scripts', duplicate=0)
618    env.SConscript(dirs = ['paso/profiling'], build_dir='build/$PLATFORM/paso/profiling', duplicate=0)
619    
620  ############ Remember what optimizations we used ###############  ############ Remember what optimizations we used ###############
621    
# Line 571  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 583  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.1753  
changed lines
  Added in v.2161

  ViewVC Help
Powered by ViewVC 1.1.26