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

Diff of /branches/inv2jf/SConstruct

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

revision 4726 by sshaw, Fri Mar 7 00:23:44 2014 UTC revision 5496 by sshaw, Thu Feb 26 00:36:29 2015 UTC
# Line 1  Line 1 
1  ##############################################################################  ##############################################################################
2  #  #
3  # Copyright (c) 2003-2014 by University of Queensland  # Copyright (c) 2003-2015 by University of Queensland
4  # http://www.uq.edu.au  # http://www.uq.edu.au
5  #  #
6  # Primary Business: Queensland, Australia  # Primary Business: Queensland, Australia
# Line 23  from site_init import * Line 23  from site_init import *
23    
24  # Version number to check for in options file. Increment when new features are  # Version number to check for in options file. Increment when new features are
25  # added or existing options changed.  # added or existing options changed.
26  REQUIRED_OPTS_VERSION=201  REQUIRED_OPTS_VERSION=202
27    
28  # MS Windows support, many thanks to PH  # MS Windows support, many thanks to PH
29  IS_WINDOWS = (os.name == 'nt')  IS_WINDOWS = (os.name == 'nt')
# Line 46  if not options_file: Line 46  if not options_file:
46  if not os.path.isfile(options_file):  if not os.path.isfile(options_file):
47      print("\nWARNING:\nOptions file %s" % options_file)      print("\nWARNING:\nOptions file %s" % options_file)
48      print("not found! Default options will be used which is most likely suboptimal.")      print("not found! Default options will be used which is most likely suboptimal.")
49      print("We recommend that you copy one of the TEMPLATE files in the scons/")      print("We recommend that you copy the most relavent options file in the scons/os/")
50      print("subdirectory and customize it to your needs.\n")      print("subdirectory and customize it to your needs.\n")
51      options_file = None      options_file = None
52    
# Line 69  vars.AddVariables( Line 69  vars.AddVariables(
69    ('cc_debug', 'Additional C++ flags for a debug build', 'default'),    ('cc_debug', 'Additional C++ flags for a debug build', 'default'),
70    ('cxx_extra', 'Extra C++ compiler flags', ''),    ('cxx_extra', 'Extra C++ compiler flags', ''),
71    ('ld_extra', 'Extra linker flags', ''),    ('ld_extra', 'Extra linker flags', ''),
72      ('nvcc', 'Path to CUDA compiler', 'default'),
73      ('nvccflags', 'Base CUDA compiler flags', 'default'),
74    BoolVariable('werror','Treat compiler warnings as errors', True),    BoolVariable('werror','Treat compiler warnings as errors', True),
75    BoolVariable('debug', 'Compile with debug flags', False),    BoolVariable('debug', 'Compile with debug flags', False),
76    BoolVariable('openmp', 'Compile parallel version using OpenMP', False),    BoolVariable('openmp', 'Compile parallel version using OpenMP', False),
# Line 84  vars.AddVariables( Line 86  vars.AddVariables(
86    EnumVariable('mpi', 'Compile parallel version using MPI flavour', 'none', allowed_values=mpi_flavours),    EnumVariable('mpi', 'Compile parallel version using MPI flavour', 'none', allowed_values=mpi_flavours),
87    ('mpi_prefix', 'Prefix/Paths of MPI installation', default_prefix),    ('mpi_prefix', 'Prefix/Paths of MPI installation', default_prefix),
88    ('mpi_libs', 'MPI shared libraries to link with', ['mpi']),    ('mpi_libs', 'MPI shared libraries to link with', ['mpi']),
89      BoolVariable('cuda', 'Enable GPU code with CUDA (requires thrust)', False),
90      ('cuda_prefix', 'Prefix/Paths to NVidia CUDA installation', default_prefix),
91    BoolVariable('netcdf', 'Enable netCDF file support', False),    BoolVariable('netcdf', 'Enable netCDF file support', False),
92    ('netcdf_prefix', 'Prefix/Paths of netCDF installation', default_prefix),    ('netcdf_prefix', 'Prefix/Paths of netCDF installation', default_prefix),
93    ('netcdf_libs', 'netCDF libraries to link with', ['netcdf_c++', 'netcdf']),    ('netcdf_libs', 'netCDF libraries to link with', ['netcdf_c++', 'netcdf']),
94    BoolVariable('parmetis', 'Enable ParMETIS (requires MPI)', False),    BoolVariable('parmetis', 'Enable ParMETIS (requires MPI)', False),
95    ('parmetis_prefix', 'Prefix/Paths of ParMETIS installation', default_prefix),    ('parmetis_prefix', 'Prefix/Paths of ParMETIS installation', default_prefix),
96    ('parmetis_libs', 'ParMETIS libraries to link with', ['parmetis', 'metis']),    ('parmetis_libs', 'ParMETIS libraries to link with', ['parmetis', 'metis']),
   BoolVariable('papi', 'Enable PAPI', False),  
   ('papi_prefix', 'Prefix/Paths to PAPI installation', default_prefix),  
   ('papi_libs', 'PAPI libraries to link with', ['papi']),  
   BoolVariable('papi_instrument_solver', 'Use PAPI to instrument each iteration of the solver', False),  
97    BoolVariable('mkl', 'Enable the Math Kernel Library', False),    BoolVariable('mkl', 'Enable the Math Kernel Library', False),
98    ('mkl_prefix', 'Prefix/Paths to MKL installation', default_prefix),    ('mkl_prefix', 'Prefix/Paths to MKL installation', default_prefix),
99    ('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']),
# Line 112  vars.AddVariables( Line 112  vars.AddVariables(
112    BoolVariable('visit', 'Enable the VisIt simulation interface', False),    BoolVariable('visit', 'Enable the VisIt simulation interface', False),
113    ('visit_prefix', 'Prefix/Paths to VisIt installation', default_prefix),    ('visit_prefix', 'Prefix/Paths to VisIt installation', default_prefix),
114    ('visit_libs', 'VisIt libraries to link with', ['simV2']),    ('visit_libs', 'VisIt libraries to link with', ['simV2']),
115    BoolVariable('vsl_random', 'Use VSL from intel for random data', False),    ListVariable('domains', 'Which domains to build', 'all',\
116                   ['dudley','finley','ripley','speckley']),
117  # Advanced settings  # Advanced settings
118      ('launcher', 'Launcher command (e.g. mpirun)', 'default'),
119      ('prelaunch', 'Command to execute before launcher (e.g. mpdboot)', 'default'),
120      ('postlaunch', 'Command to execute after launcher (e.g. mpdexit)', 'default'),
121    #dudley_assemble_flags = -funroll-loops      to actually do something    #dudley_assemble_flags = -funroll-loops      to actually do something
122    ('dudley_assemble_flags', 'compiler flags for some dudley optimisations', ''),    ('dudley_assemble_flags', 'compiler flags for some dudley optimisations', ''),
123    # To enable passing function pointers through python    # To enable passing function pointers through python
124    BoolVariable('iknowwhatimdoing', 'Allow non-standard C', False),    BoolVariable('iknowwhatimdoing', 'Allow non-standard C', False),
125    # An option for specifying the compiler tools (see windows branch)    # An option for specifying the compiler tools
126    ('tools_names', 'Compiler tools to use', ['default']),    ('tools_names', 'Compiler tools to use', ['default']),
127    ('env_export', 'Environment variables to be passed to tools',[]),    ('env_export', 'Environment variables to be passed to tools',[]),
128    EnumVariable('forcelazy', 'For testing use only - set the default value for autolazy', 'leave_alone', allowed_values=('leave_alone', 'on', 'off')),    EnumVariable('forcelazy', 'For testing use only - set the default value for autolazy', 'leave_alone', allowed_values=('leave_alone', 'on', 'off')),
129    EnumVariable('forcecollres', 'For testing use only - set the default value for force resolving collective ops', 'leave_alone', allowed_values=('leave_alone', 'on', 'off')),    EnumVariable('forcecollres', 'For testing use only - set the default value for force resolving collective ops', 'leave_alone', allowed_values=('leave_alone', 'on', 'off')),
   # finer control over library building, intel aggressive global optimisation  
   # works with dynamic libraries on windows.  
130    ('build_shared', 'Build dynamic libraries only', False),    ('build_shared', 'Build dynamic libraries only', False),
131    ('sys_libs', 'Extra libraries to link with', []),    ('sys_libs', 'Extra libraries to link with', []),
132    ('escript_opts_version', 'Version of options file (do not specify on command line)'),    ('escript_opts_version', 'Version of options file (do not specify on command line)'),
# Line 134  vars.AddVariables( Line 136  vars.AddVariables(
136    ('pythonlibname', 'Name of the python library to link. (This is found automatically for python2.X.)', ''),    ('pythonlibname', 'Name of the python library to link. (This is found automatically for python2.X.)', ''),
137    ('pythonlibpath', 'Path to the python library. (You should not need to set this unless your python has moved)',''),    ('pythonlibpath', 'Path to the python library. (You should not need to set this unless your python has moved)',''),
138    ('pythonincpath','Path to python include files. (You should not need to set this unless your python has moved',''),    ('pythonincpath','Path to python include files. (You should not need to set this unless your python has moved',''),
139    BoolVariable('BADPYTHONMACROS','Extra \#include to get around a python bug.', True),    BoolVariable('longindices', 'use long indices (for very large matrices)', False),
140      BoolVariable('compressed_files','Enables reading from compressed binary files', True),
141      ('compression_libs', 'Compression libraries to link with', ['boost_iostreams']),
142      BoolVariable('papi', 'Enable PAPI', False),
143      ('papi_prefix', 'Prefix/Paths to PAPI installation', default_prefix),
144      ('papi_libs', 'PAPI libraries to link with', ['papi']),
145      BoolVariable('papi_instrument_solver', 'Use PAPI to instrument each iteration of the solver', False)
146  )  )
147    
148  ##################### Create environment and help text #######################  ##################### Create environment and help text #######################
# Line 151  env = Environment(tools = ['default'], o Line 159  env = Environment(tools = ['default'], o
159  def mkclang(env):  def mkclang(env):
160      env['CXX']='clang++'      env['CXX']='clang++'
161    
162  if env['tools_names'] != 'default':  if env['tools_names'] != ['default']:
163      zz=env['tools_names']      zz=env['tools_names']
164      if 'clang' in zz:      if 'clang' in zz:
165          zz.remove('clang')          zz.remove('clang')
# Line 181  if len(vars.UnknownVariables())>0: Line 189  if len(vars.UnknownVariables())>0:
189          print("Unknown option '%s'" % k)          print("Unknown option '%s'" % k)
190      Exit(1)      Exit(1)
191    
192    if env['cuda']:
193        if env['nvcc'] != 'default':
194            env['NVCC'] = env['nvcc']
195        env.Tool('nvcc')
196    
197    if 'dudley' in env['domains']:
198        env['domains'].append('finley')
199    
200  # create dictionary which will be populated with info for buildvars file  # create dictionary which will be populated with info for buildvars file
201  env['buildvars']={}  env['buildvars']={}
202  # create list which will be populated with warnings if there are any  # create list which will be populated with warnings if there are any
# Line 230  if cc_name == 'icpc': Line 246  if cc_name == 'icpc':
246      # Intel compiler      # Intel compiler
247      # #1875: offsetof applied to non-POD types is nonstandard (in boost)      # #1875: offsetof applied to non-POD types is nonstandard (in boost)
248      # removed -std=c99 because icpc doesn't like it and we aren't using c anymore      # removed -std=c99 because icpc doesn't like it and we aren't using c anymore
249      cc_flags    = "-fPIC -w2 -wd1875 -Wno-unknown-pragmas -DBLOCKTIMER -DCORE_ID1"      cc_flags    = "-fPIC -w2 -wd1875 -Wno-unknown-pragmas"
250      cc_optim    = "-O3 -ftz -fno-alias -ipo -xHost"      cc_optim    = "-O3 -ftz -fno-alias -inline-level=2 -ipo -xHost"
251      cc_debug    = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"      cc_debug    = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"
252      omp_flags   = "-openmp"      omp_flags   = "-openmp"
253      omp_ldflags = "-openmp -openmp_report=1"      omp_ldflags = "-openmp -openmp_report=1"
254      fatalwarning = "-Werror"      fatalwarning = "-Werror"
255  elif cc_name[:3] == 'g++':  elif cc_name[:3] == 'g++':
256      # GNU C on any system      # GNU C++ on any system
257      # note that -ffast-math is not used because it breaks isnan(),      # note that -ffast-math is not used because it breaks isnan(),
258      # see mantis #691      # see mantis #691
259      cc_flags     = "-pedantic -Wall -fPIC -Wno-unknown-pragmas -DBLOCKTIMER  -Wno-sign-compare -Wno-system-headers -Wno-long-long -Wno-strict-aliasing -finline-functions"      cc_flags     = "-pedantic -Wall -fPIC -Wno-unknown-pragmas -Wno-sign-compare -Wno-system-headers -Wno-long-long -Wno-strict-aliasing -finline-functions"
260      cc_optim     = "-O3"      cc_optim     = "-O3"
261      cc_debug     = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"      #max-vartrack-size: avoid vartrack limit being exceeded with escriptcpp.cpp
262        cc_debug     = "-g3 -O0 -D_GLIBCXX_DEBUG -DDOASSERT -DDOPROF -DBOUNDS_CHECK --param=max-vartrack-size=100000000"
263      omp_flags    = "-fopenmp"      omp_flags    = "-fopenmp"
264      omp_ldflags  = "-fopenmp"      omp_ldflags  = "-fopenmp"
265      fatalwarning = "-Werror"      fatalwarning = "-Werror"
# Line 272  if env['omp_ldflags'] == 'default': env[ Line 289  if env['omp_ldflags'] == 'default': env[
289  if env['cxx_extra'] != '': env.Append(CXXFLAGS = env['cxx_extra'])  if env['cxx_extra'] != '': env.Append(CXXFLAGS = env['cxx_extra'])
290  if env['ld_extra']  != '': env.Append(LINKFLAGS = env['ld_extra'])  if env['ld_extra']  != '': env.Append(LINKFLAGS = env['ld_extra'])
291    
292  if env['BADPYTHONMACROS']: env.Append(CXXFLAGS = ' -DBADPYTHONMACROS')  if env['nvccflags'] != 'default':
293        env['NVCCFLAGS'] = env['nvccflags']
294        env['SHNVCCFLAGS'] = env['nvccflags'] + ' -shared'
295    
296    if env['longindices']:
297        env.Append(CPPDEFINES = ['ESYS_INDEXTYPE_LONG'])
298    
299  if env['usepython3']:  if env['usepython3']:
300      env.Append(CPPDEFINES=['ESPYTHON3'])      env.Append(CPPDEFINES=['ESPYTHON3'])
# Line 320  env.Append(CCFLAGS = env['cc_flags']) Line 342  env.Append(CCFLAGS = env['cc_flags'])
342  # add system libraries  # add system libraries
343  env.AppendUnique(LIBS = env['sys_libs'])  env.AppendUnique(LIBS = env['sys_libs'])
344    
345    # set defaults for launchers if not otherwise specified
346    if env['prelaunch'] == 'default':
347        if env['mpi'] == 'INTELMPI' and env['openmp']:
348            env['prelaunch'] = "export I_MPI_PIN_DOMAIN=omp"
349        elif env['mpi'] == 'OPENMPI':
350            # transform comma-separated list to '-x a -x b -x c ...'
351            env['prelaunch'] = "EE=$(echo -x %e|sed -e 's/,/ -x /g')"
352        elif env['mpi'] == 'MPT':
353            env['prelaunch'] = "export MPI_NUM_MEMORY_REGIONS=0"
354        elif env['mpi'] == 'MPICH2':
355            env['prelaunch'] = "mpdboot -n %n -r ssh -f %f"
356        else:
357            env['prelaunch'] = ""
358    
359    if env['launcher'] == 'default':
360        if env['mpi'] == 'INTELMPI':
361            env['launcher'] = "mpirun -hostfile %f -n %N -ppn %p %b"
362        elif env['mpi'] == 'OPENMPI':
363            env['launcher'] = "mpirun --gmca mpi_warn_on_fork 0 ${EE} --host %h -bynode -bind-to-core --cpus-per-rank %t -np %N %b"
364        elif env['mpi'] == 'MPT':
365            env['launcher'] = "mpirun %h -np %p %b"
366        elif env['mpi'] == 'MPICH':
367            env['launcher'] = "mpirun -machinefile %f -np %N %b"
368        elif env['mpi'] == 'MPICH2':
369            env['launcher'] = "mpiexec -genvlist %e -np %N %b"
370        else:
371            env['launcher'] = "%b"
372    
373    if env['postlaunch'] == 'default':
374        if env['mpi'] == 'MPICH2':
375            env['postlaunch'] = "mpdallexit"
376        else:
377            env['postlaunch'] = ""
378    
379  # determine svn revision  # determine svn revision
380  global_revision=ARGUMENTS.get('SVN_VERSION', None)  global_revision=ARGUMENTS.get('SVN_VERSION', None)
381  if global_revision:  if global_revision:
# Line 344  if IS_WINDOWS: Line 400  if IS_WINDOWS:
400          env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])          env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])
401          env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])          env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])
402    
 # VSL random numbers  
 env['buildvars']['vsl_random']=int(env['vsl_random'])  
 if env['vsl_random']:  
     env.Append(CPPDEFINES = ['MKLRANDOM'])  
   
403  env['IS_WINDOWS']=IS_WINDOWS  env['IS_WINDOWS']=IS_WINDOWS
404    env['IS_OSX']=IS_OSX
405    
406  ###################### Copy required environment vars ########################  ###################### Copy required environment vars ########################
407    
# Line 368  for key in 'OMP_NUM_THREADS', 'ESCRIPT_N Line 420  for key in 'OMP_NUM_THREADS', 'ESCRIPT_N
420      try:      try:
421          env['ENV'][key] = os.environ[key]          env['ENV'][key] = os.environ[key]
422      except KeyError:      except KeyError:
423          env['ENV'][key] = 1          env['ENV'][key] = '1'
424    
425  env_export=env['env_export']  env_export=env['env_export']
426  env_export.extend(['ESCRIPT_NUM_THREADS','ESCRIPT_HOSTFILE','DISPLAY','XAUTHORITY','PATH','HOME','KMP_MONITOR_STACKSIZE','TMPDIR','TEMP','TMP'])  env_export.extend(['ESCRIPT_NUM_THREADS','ESCRIPT_HOSTFILE','DISPLAY','XAUTHORITY','PATH','HOME','KMP_MONITOR_STACKSIZE','TMPDIR','TEMP','TMP','LD_PRELOAD'])
427    
428  for key in set(env_export):  for key in set(env_export):
429      try:      try:
# Line 379  for key in set(env_export): Line 431  for key in set(env_export):
431      except KeyError:      except KeyError:
432          pass          pass
433    
434    for key in os.environ.keys():
435        if key.startswith("SLURM_"):
436            env['ENV'][key] = os.environ[key]
437    
438  try:  try:
439      env.PrependENVPath(LD_LIBRARY_PATH_KEY, os.environ[LD_LIBRARY_PATH_KEY])      env.PrependENVPath(LD_LIBRARY_PATH_KEY, os.environ[LD_LIBRARY_PATH_KEY])
440  except KeyError:  except KeyError:
# Line 417  env.Append(BUILDERS = {'RunUnitTest' : r Line 473  env.Append(BUILDERS = {'RunUnitTest' : r
473  runPyUnitTest_builder = Builder(action = runPyUnitTest, suffix = '.passed', src_suffic='.py', single_source=True)  runPyUnitTest_builder = Builder(action = runPyUnitTest, suffix = '.passed', src_suffic='.py', single_source=True)
474  env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});  env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});
475    
476    runPyExample_builder = Builder(action = runPyExample, suffix = '.passed', src_suffic='.py', single_source=True)
477    env.Append(BUILDERS = {'RunPyExample' : runPyExample_builder});
478    
479  epstopdfbuilder = Builder(action = eps2pdf, suffix='.pdf', src_suffix='.eps', single_source=True)  epstopdfbuilder = Builder(action = eps2pdf, suffix='.pdf', src_suffix='.eps', single_source=True)
480  env.Append(BUILDERS = {'EpsToPDF' : epstopdfbuilder});  env.Append(BUILDERS = {'EpsToPDF' : epstopdfbuilder});
481    
# Line 431  env=checkPython(env) Line 490  env=checkPython(env)
490  ######## boost & boost-python (required)  ######## boost & boost-python (required)
491  env=checkBoost(env)  env=checkBoost(env)
492    
493    ######## NVCC version (optional)
494    if env['cuda']:
495        env=checkCudaVersion(env)
496        env=checkCUDA(env)
497    
498  ######## numpy (required) and numpy headers (optional)  ######## numpy (required) and numpy headers (optional)
499  env=checkNumpy(env)  env=checkNumpy(env)
500    
# Line 443  env=checkOptionalModules(env) Line 507  env=checkOptionalModules(env)
507  ######## optional dependencies (netCDF, PAPI, MKL, UMFPACK, Lapack, Silo, ...)  ######## optional dependencies (netCDF, PAPI, MKL, UMFPACK, Lapack, Silo, ...)
508  env=checkOptionalLibraries(env)  env=checkOptionalLibraries(env)
509    
510    #use gmsh info to set some defines
511    if env['gmsh'] == 's':
512        env.Append(CPPDEFINES=['GMSH'])
513    elif env['gmsh'] == 'm':
514        env.Append(CPPDEFINES=['GMSH','GMSH_MPI'])
515    
516  ######## PDFLaTeX (for documentation)  ######## PDFLaTeX (for documentation)
517  env=checkPDFLatex(env)  env=checkPDFLatex(env)
518    
# Line 468  if not env['verbose']: Line 538  if not env['verbose']:
538  # remove obsolete files  # remove obsolete files
539  if not env['usempi']:  if not env['usempi']:
540      Execute(Delete(os.path.join(env['libinstall'], 'pythonMPI')))      Execute(Delete(os.path.join(env['libinstall'], 'pythonMPI')))
541        Execute(Delete(os.path.join(env['bininstall'], 'escript-overlord')))
542      Execute(Delete(os.path.join(env['libinstall'], 'pythonMPIredirect')))      Execute(Delete(os.path.join(env['libinstall'], 'pythonMPIredirect')))
543    
544  from grouptest import *  from grouptest import *
# Line 489  Export( Line 560  Export(
560    ]    ]
561  )  )
562    
563    #do not auto build
564  env.SConscript(dirs = ['tools/escriptconvert'], variant_dir='$BUILD_DIR/$PLATFORM/tools/escriptconvert', duplicate=0)  env.SConscript(dirs = ['tools/escriptconvert'], variant_dir='$BUILD_DIR/$PLATFORM/tools/escriptconvert', duplicate=0)
565    env.SConscript(dirs = ['tools/overlord'], variant_dir='$BUILD_DIR/$PLATFORM/tools/overlord', duplicate=0)
566  env.SConscript(dirs = ['paso/src'], variant_dir='$BUILD_DIR/$PLATFORM/paso', duplicate=0)  env.SConscript(dirs = ['paso/src'], variant_dir='$BUILD_DIR/$PLATFORM/paso', duplicate=0)
567  env.SConscript(dirs = ['weipa/src'], variant_dir='$BUILD_DIR/$PLATFORM/weipa', duplicate=0)  env.SConscript(dirs = ['weipa/src'], variant_dir='$BUILD_DIR/$PLATFORM/weipa', duplicate=0)
568  env.SConscript(dirs = ['escript/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/escript', duplicate=0)  env.SConscript(dirs = ['escript/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/escript', duplicate=0)
569    
570    env.SConscript(dirs = ['cusplibrary'])
571    
572  #This will pull in the escriptcore/py_src and escriptcore/test  #This will pull in the escriptcore/py_src and escriptcore/test
573  env.SConscript(dirs = ['escriptcore/src'], variant_dir='$BUILD_DIR/$PLATFORM/escriptcore', duplicate=0)  env.SConscript(dirs = ['escriptcore/src'], variant_dir='$BUILD_DIR/$PLATFORM/escriptcore', duplicate=0)
 #env.SConscript(dirs = ['escript/test'], variant_dir='$BUILD_DIR/$PLATFORM/escript/test', duplicate=0)  
574  env.SConscript(dirs = ['esysUtils/src'], variant_dir='$BUILD_DIR/$PLATFORM/esysUtils', duplicate=0)  env.SConscript(dirs = ['esysUtils/src'], variant_dir='$BUILD_DIR/$PLATFORM/esysUtils', duplicate=0)
575  env.SConscript(dirs = ['pasowrap/src'], variant_dir='$BUILD_DIR/$PLATFORM/pasowrap', duplicate=0)  env.SConscript(dirs = ['pasowrap/src'], variant_dir='$BUILD_DIR/$PLATFORM/pasowrap', duplicate=0)
576  env.SConscript(dirs = ['dudley/src'], variant_dir='$BUILD_DIR/$PLATFORM/dudley', duplicate=0)  if 'dudley' in env['domains']:
577  env.SConscript(dirs = ['finley/src'], variant_dir='$BUILD_DIR/$PLATFORM/finley', duplicate=0)      env.SConscript(dirs = ['dudley/src'], variant_dir='$BUILD_DIR/$PLATFORM/dudley', duplicate=0)
578  env.SConscript(dirs = ['ripley/src'], variant_dir='$BUILD_DIR/$PLATFORM/ripley', duplicate=0)  if 'finley' in env['domains']:
579        env.SConscript(dirs = ['finley/src'], variant_dir='$BUILD_DIR/$PLATFORM/finley', duplicate=0)
580    if 'ripley' in env['domains']:
581        env.SConscript(dirs = ['ripley/src'], variant_dir='$BUILD_DIR/$PLATFORM/ripley', duplicate=0)
582    if 'speckley' in env['domains']:
583        env.SConscript(dirs = ['speckley/src'], variant_dir='$BUILD_DIR/$PLATFORM/speckley', duplicate=0)
584  env.SConscript(dirs = ['downunder/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/downunder', duplicate=0)  env.SConscript(dirs = ['downunder/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/downunder', duplicate=0)
585  env.SConscript(dirs = ['modellib/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/modellib', duplicate=0)  env.SConscript(dirs = ['modellib/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/modellib', duplicate=0)
586  env.SConscript(dirs = ['pycad/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/pycad', duplicate=0)  env.SConscript(dirs = ['pycad/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/pycad', duplicate=0)
# Line 514  env.SConscript(dirs = ['paso/profiling'] Line 593  env.SConscript(dirs = ['paso/profiling']
593    
594  write_buildvars(env)  write_buildvars(env)
595    
596    write_launcher(env)
597    
598  ################### Targets to build and install libraries ###################  ################### Targets to build and install libraries ###################
599    
600  target_init = env.Command(os.path.join(env['pyinstall'],'__init__.py'), None, Touch('$TARGET'))  target_init = env.Command(os.path.join(env['pyinstall'],'__init__.py'), None, Touch('$TARGET'))
# Line 535  env.Alias('install_escript', ['build_esc Line 616  env.Alias('install_escript', ['build_esc
616  env.Alias('build_pasowrap', ['install_pasowrap_headers', 'build_pasowrap_lib', 'build_pasowrapcpp_lib'])  env.Alias('build_pasowrap', ['install_pasowrap_headers', 'build_pasowrap_lib', 'build_pasowrapcpp_lib'])
617  env.Alias('install_pasowrap', ['build_pasowrap', 'install_pasowrap_lib', 'install_pasowrapcpp_lib', 'install_pasowrap_py'])  env.Alias('install_pasowrap', ['build_pasowrap', 'install_pasowrap_lib', 'install_pasowrapcpp_lib', 'install_pasowrap_py'])
618    
619  env.Alias('build_dudley', ['install_dudley_headers', 'build_dudley_lib', 'build_dudleycpp_lib'])  if 'dudley' in env['domains']:
620  env.Alias('install_dudley', ['build_dudley', 'install_dudley_lib', 'install_dudleycpp_lib', 'install_dudley_py'])      env.Alias('build_dudley', ['install_dudley_headers', 'build_dudley_lib', 'build_dudleycpp_lib'])
621        env.Alias('install_dudley', ['build_dudley', 'install_dudley_lib', 'install_dudleycpp_lib', 'install_dudley_py'])
622  env.Alias('build_finley', ['install_finley_headers', 'build_finley_lib', 'build_finleycpp_lib'])  
623  env.Alias('install_finley', ['build_finley', 'install_finley_lib', 'install_finleycpp_lib', 'install_finley_py'])  if 'finley' in env['domains']:
624        env.Alias('build_finley', ['install_finley_headers', 'build_finley_lib', 'build_finleycpp_lib'])
625  env.Alias('build_ripley', ['install_ripley_headers', 'build_ripley_lib', 'build_ripleycpp_lib'])      env.Alias('install_finley', ['build_finley', 'install_finley_lib', 'install_finleycpp_lib', 'install_finley_py'])
626  env.Alias('install_ripley', ['build_ripley', 'install_ripley_lib', 'install_ripleycpp_lib', 'install_ripley_py'])  
627    if 'ripley' in env['domains']:
628        env.Alias('build_ripley', ['install_cusp_headers', 'install_ripley_headers', 'build_ripley_lib', 'build_ripleycpp_lib'])
629        env.Alias('install_ripley', ['build_ripley', 'install_ripley_lib', 'install_ripleycpp_lib', 'install_ripley_py'])
630    
631    if 'speckley' in env['domains']:
632        env.Alias('build_speckley', ['install_speckley_headers', 'build_speckley_lib', 'build_speckleycpp_lib'])
633        env.Alias('install_speckley', ['build_speckley', 'install_speckley_lib', 'install_speckleycpp_lib', 'install_speckley_py'])
634    
635  env.Alias('build_weipa', ['install_weipa_headers', 'build_weipa_lib', 'build_weipacpp_lib'])  env.Alias('build_weipa', ['install_weipa_headers', 'build_weipa_lib', 'build_weipacpp_lib'])
636  env.Alias('install_weipa', ['build_weipa', 'install_weipa_lib', 'install_weipacpp_lib', 'install_weipa_py'])  env.Alias('install_weipa', ['build_weipa', 'install_weipa_lib', 'install_weipacpp_lib', 'install_weipa_py'])
# Line 556  build_all_list += ['build_esysUtils'] Line 644  build_all_list += ['build_esysUtils']
644  build_all_list += ['build_paso']  build_all_list += ['build_paso']
645  build_all_list += ['build_escript']  build_all_list += ['build_escript']
646  build_all_list += ['build_pasowrap']  build_all_list += ['build_pasowrap']
647  build_all_list += ['build_dudley']  if 'dudley' in env['domains']: build_all_list += ['build_dudley']
648  build_all_list += ['build_finley']  if 'finley' in env['domains']: build_all_list += ['build_finley']
649  build_all_list += ['build_ripley']  if 'ripley' in env['domains']: build_all_list += ['build_ripley']
650    if 'speckley' in env['domains']: build_all_list += ['build_speckley']
651  build_all_list += ['build_weipa']  build_all_list += ['build_weipa']
652  if not IS_WINDOWS: build_all_list += ['build_escriptreader']  if not IS_WINDOWS and 'finley' in env['domains']:
653  if env['usempi']:   build_all_list += ['build_pythonMPI']      build_all_list += ['build_escriptreader']
654  build_all_list += ['build_escriptconvert']  if env['usempi']:
655        build_all_list += ['build_pythonMPI', 'build_overlord']
656  env.Alias('build_all', build_all_list)  env.Alias('build_all', build_all_list)
657    
658  install_all_list = []  install_all_list = []
# Line 571  install_all_list += ['install_esysUtils' Line 661  install_all_list += ['install_esysUtils'
661  install_all_list += ['install_paso']  install_all_list += ['install_paso']
662  install_all_list += ['install_escript']  install_all_list += ['install_escript']
663  install_all_list += ['install_pasowrap']  install_all_list += ['install_pasowrap']
664  install_all_list += ['install_dudley']  if 'dudley' in env['domains']: install_all_list += ['install_dudley']
665  install_all_list += ['install_finley']  if 'finley' in env['domains']: install_all_list += ['install_finley']
666  install_all_list += ['install_ripley']  if 'ripley' in env['domains']: install_all_list += ['install_ripley']
667    if 'speckley' in env['domains']: install_all_list += ['install_speckley']
668  install_all_list += ['install_weipa']  install_all_list += ['install_weipa']
669  if not IS_WINDOWS: install_all_list += ['install_escriptreader']  if not IS_WINDOWS and 'finley' in env['domains']:
670        install_all_list += ['install_escriptreader']
671  install_all_list += ['install_downunder_py']  install_all_list += ['install_downunder_py']
672  install_all_list += ['install_modellib_py']  install_all_list += ['install_modellib_py']
673  install_all_list += ['install_pycad_py']  install_all_list += ['install_pycad_py']
674  if env['usempi']:   install_all_list += ['install_pythonMPI']  if env['usempi']:
675  install_all_list += ['install_escriptconvert']      install_all_list += ['install_pythonMPI', 'install_overlord']
676  env.Alias('install_all', install_all_list)  env.Alias('install_all', install_all_list)
677    
678  # Default target is install  # Default target is install
# Line 596  env.Alias('run_tests', ['install_all']) Line 688  env.Alias('run_tests', ['install_all'])
688  env.Alias('all_tests', ['install_all', 'run_tests', 'py_tests'])  env.Alias('all_tests', ['install_all', 'run_tests', 'py_tests'])
689  env.Alias('build_full',['install_all','build_tests','build_py_tests'])  env.Alias('build_full',['install_all','build_tests','build_py_tests'])
690  env.Alias('build_PasoTests','$BUILD_DIR/$PLATFORM/paso/profiling/PasoTests')  env.Alias('build_PasoTests','$BUILD_DIR/$PLATFORM/paso/profiling/PasoTests')
691    Requires('py_tests', 'install_all')
692    
693  ##################### Targets to build the documentation #####################  ##################### Targets to build the documentation #####################
694    
# Line 613  if not IS_WINDOWS: Line 706  if not IS_WINDOWS:
706      generateTestScripts(env, TestGroups)      generateTestScripts(env, TestGroups)
707    
708    
   
709  ######################## Summarize our environment ###########################  ######################## Summarize our environment ###########################
710  def print_summary():  def print_summary():
711      print("")      print("")
# Line 629  def print_summary(): Line 721  def print_summary():
721      if env['usempi']:      if env['usempi']:
722          print("             MPI:  YES (flavour: %s)"%env['mpi'])          print("             MPI:  YES (flavour: %s)"%env['mpi'])
723      else:      else:
724          print("             MPI:  DISABLED")          print("             MPI:  NO")
725      if env['uselapack']:      if env['uselapack']:
726          print("          LAPACK:  YES (flavour: %s)"%env['lapack'])          print("          LAPACK:  YES (flavour: %s)"%env['lapack'])
727      else:      else:
728          print("          LAPACK:  DISABLED")          print("          LAPACK:  NO")
729        if env['cuda']:
730            print("            CUDA:  YES (nvcc: %s)"%env['nvcc_version'])
731        else:
732            print("            CUDA:  NO")
733      d_list=[]      d_list=[]
734      e_list=[]      e_list=[]
735      for i in 'debug','openmp','boomeramg','gdal','mkl','netcdf','papi','parmetis','pyproj','scipy','silo','sympy','umfpack','visit','vsl_random':      for i in 'debug','openmp','boomeramg','gdal','mkl','netcdf','papi','parmetis','pyproj','scipy','silo','sympy','umfpack','visit':
736          if env[i]: e_list.append(i)          if env[i]: e_list.append(i)
737          else: d_list.append(i)          else: d_list.append(i)
738      for i in e_list:      for i in e_list:
739          print("%16s:  YES"%i)          print("%16s:  YES"%i)
740      for i in d_list:      for i in d_list:
741          print("%16s:  DISABLED"%i)          print("%16s:  NO"%i)
742      if env['cppunit']:      if env['cppunit']:
743          print("         CppUnit:  FOUND")          print("         CppUnit:  YES")
744        else:
745            print("         CppUnit:  NO")
746        if env['gmshpy']:
747            gmshpy=" + python module"
748      else:      else:
749          print("         CppUnit:  NOT FOUND")          gmshpy=""
750      if env['gmsh']=='m':      if env['gmsh']=='m':
751          print("            gmsh:  FOUND, MPI-ENABLED")          print("            gmsh:  YES, MPI-ENABLED"+gmshpy)
752      elif env['gmsh']=='s':      elif env['gmsh']=='s':
753          print("            gmsh:  FOUND")          print("            gmsh:  YES"+gmshpy)
754      else:      else:
755          print("            gmsh:  NOT FOUND")          if env['gmshpy']:
756                print("            gmsh:  python module only")
757            else:
758                print("            gmsh:  NO")
759        print(    "            gzip:  " + ("YES" if env['compressed_files'] else "NO"))
760    
761      if ((fatalwarning != '') and (env['werror'])):      if ((fatalwarning != '') and (env['werror'])):
762          print("  Treating warnings as errors")          print("  Treating warnings as errors")

Legend:
Removed from v.4726  
changed lines
  Added in v.5496

  ViewVC Help
Powered by ViewVC 1.1.26