/[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 5448 by jfenwick, Fri Feb 6 05:31:37 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('longindices', 'use long indices (for very large matrices)', False),
140    BoolVariable('BADPYTHONMACROS','Extra \#include to get around a python bug.', True),    BoolVariable('BADPYTHONMACROS','Extra \#include to get around a python bug.', True),
141      BoolVariable('compressed_files','Enables reading from compressed binary files', True),
142      ('compression_libs', 'Compression libraries to link with', ['boost_iostreams']),
143      BoolVariable('papi', 'Enable PAPI', False),
144      ('papi_prefix', 'Prefix/Paths to PAPI installation', default_prefix),
145      ('papi_libs', 'PAPI libraries to link with', ['papi']),
146      BoolVariable('papi_instrument_solver', 'Use PAPI to instrument each iteration of the solver', False)
147  )  )
148    
149  ##################### Create environment and help text #######################  ##################### Create environment and help text #######################
# Line 151  env = Environment(tools = ['default'], o Line 160  env = Environment(tools = ['default'], o
160  def mkclang(env):  def mkclang(env):
161      env['CXX']='clang++'      env['CXX']='clang++'
162    
163  if env['tools_names'] != 'default':  if env['tools_names'] != ['default']:
164      zz=env['tools_names']      zz=env['tools_names']
165      if 'clang' in zz:      if 'clang' in zz:
166          zz.remove('clang')          zz.remove('clang')
# Line 181  if len(vars.UnknownVariables())>0: Line 190  if len(vars.UnknownVariables())>0:
190          print("Unknown option '%s'" % k)          print("Unknown option '%s'" % k)
191      Exit(1)      Exit(1)
192    
193    if env['cuda']:
194        if env['nvcc'] != 'default':
195            env['NVCC'] = env['nvcc']
196        env.Tool('nvcc')
197    
198    if 'dudley' in env['domains']:
199        env['domains'].append('finley')
200    
201  # create dictionary which will be populated with info for buildvars file  # create dictionary which will be populated with info for buildvars file
202  env['buildvars']={}  env['buildvars']={}
203  # 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 247  if cc_name == 'icpc':
247      # Intel compiler      # Intel compiler
248      # #1875: offsetof applied to non-POD types is nonstandard (in boost)      # #1875: offsetof applied to non-POD types is nonstandard (in boost)
249      # 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
250      cc_flags    = "-fPIC -w2 -wd1875 -Wno-unknown-pragmas -DBLOCKTIMER -DCORE_ID1"      cc_flags    = "-fPIC -w2 -wd1875 -Wno-unknown-pragmas"
251      cc_optim    = "-O3 -ftz -fno-alias -ipo -xHost"      cc_optim    = "-O3 -ftz -fno-alias -inline-level=2 -ipo -xHost"
252      cc_debug    = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"      cc_debug    = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"
253      omp_flags   = "-openmp"      omp_flags   = "-openmp"
254      omp_ldflags = "-openmp -openmp_report=1"      omp_ldflags = "-openmp -openmp_report=1"
255      fatalwarning = "-Werror"      fatalwarning = "-Werror"
256  elif cc_name[:3] == 'g++':  elif cc_name[:3] == 'g++':
257      # GNU C on any system      # GNU C++ on any system
258      # note that -ffast-math is not used because it breaks isnan(),      # note that -ffast-math is not used because it breaks isnan(),
259      # see mantis #691      # see mantis #691
260      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"
261      cc_optim     = "-O3"      cc_optim     = "-O3"
262      cc_debug     = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"      #max-vartrack-size: avoid vartrack limit being exceeded with escriptcpp.cpp
263        cc_debug     = "-g3 -O0 -D_GLIBCXX_DEBUG -DDOASSERT -DDOPROF -DBOUNDS_CHECK --param=max-vartrack-size=100000000"
264      omp_flags    = "-fopenmp"      omp_flags    = "-fopenmp"
265      omp_ldflags  = "-fopenmp"      omp_ldflags  = "-fopenmp"
266      fatalwarning = "-Werror"      fatalwarning = "-Werror"
# Line 272  if env['omp_ldflags'] == 'default': env[ Line 290  if env['omp_ldflags'] == 'default': env[
290  if env['cxx_extra'] != '': env.Append(CXXFLAGS = env['cxx_extra'])  if env['cxx_extra'] != '': env.Append(CXXFLAGS = env['cxx_extra'])
291  if env['ld_extra']  != '': env.Append(LINKFLAGS = env['ld_extra'])  if env['ld_extra']  != '': env.Append(LINKFLAGS = env['ld_extra'])
292    
293  if env['BADPYTHONMACROS']: env.Append(CXXFLAGS = ' -DBADPYTHONMACROS')  if env['nvccflags'] != 'default':
294        env['NVCCFLAGS'] = env['nvccflags']
295        env['SHNVCCFLAGS'] = env['nvccflags'] + ' -shared'
296    
297    if env['BADPYTHONMACROS']:
298        env.Append(CPPDEFINES = ['BADPYTHONMACROS'])
299    
300    if env['longindices']:
301        env.Append(CPPDEFINES = ['ESYS_INDEXTYPE_LONG'])
302    
303  if env['usepython3']:  if env['usepython3']:
304      env.Append(CPPDEFINES=['ESPYTHON3'])      env.Append(CPPDEFINES=['ESPYTHON3'])
# Line 320  env.Append(CCFLAGS = env['cc_flags']) Line 346  env.Append(CCFLAGS = env['cc_flags'])
346  # add system libraries  # add system libraries
347  env.AppendUnique(LIBS = env['sys_libs'])  env.AppendUnique(LIBS = env['sys_libs'])
348    
349    # set defaults for launchers if not otherwise specified
350    if env['prelaunch'] == 'default':
351        if env['mpi'] == 'INTELMPI' and env['openmp']:
352            env['prelaunch'] = "export I_MPI_PIN_DOMAIN=omp"
353        elif env['mpi'] == 'OPENMPI':
354            # transform comma-separated list to '-x a -x b -x c ...'
355            env['prelaunch'] = "EE=$(echo -x %e|sed -e 's/,/ -x /g')"
356        elif env['mpi'] == 'MPT':
357            env['prelaunch'] = "export MPI_NUM_MEMORY_REGIONS=0"
358        elif env['mpi'] == 'MPICH2':
359            env['prelaunch'] = "mpdboot -n %n -r ssh -f %f"
360        else:
361            env['prelaunch'] = ""
362    
363    if env['launcher'] == 'default':
364        if env['mpi'] == 'INTELMPI':
365            env['launcher'] = "mpirun -hostfile %f -n %N -ppn %p %b"
366        elif env['mpi'] == 'OPENMPI':
367            env['launcher'] = "mpirun --gmca mpi_warn_on_fork 0 ${EE} --host %h -bynode -bind-to-core --cpus-per-rank %t -np %N %b"
368        elif env['mpi'] == 'MPT':
369            env['launcher'] = "mpirun %h -np %p %b"
370        elif env['mpi'] == 'MPICH':
371            env['launcher'] = "mpirun -machinefile %f -np %N %b"
372        elif env['mpi'] == 'MPICH2':
373            env['launcher'] = "mpiexec -genvlist %e -np %N %b"
374        else:
375            env['launcher'] = "%b"
376    
377    if env['postlaunch'] == 'default':
378        if env['mpi'] == 'MPICH2':
379            env['postlaunch'] = "mpdallexit"
380        else:
381            env['postlaunch'] = ""
382    
383  # determine svn revision  # determine svn revision
384  global_revision=ARGUMENTS.get('SVN_VERSION', None)  global_revision=ARGUMENTS.get('SVN_VERSION', None)
385  if global_revision:  if global_revision:
# Line 344  if IS_WINDOWS: Line 404  if IS_WINDOWS:
404          env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])          env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])
405          env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])          env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])
406    
 # VSL random numbers  
 env['buildvars']['vsl_random']=int(env['vsl_random'])  
 if env['vsl_random']:  
     env.Append(CPPDEFINES = ['MKLRANDOM'])  
   
407  env['IS_WINDOWS']=IS_WINDOWS  env['IS_WINDOWS']=IS_WINDOWS
408    env['IS_OSX']=IS_OSX
409    
410  ###################### Copy required environment vars ########################  ###################### Copy required environment vars ########################
411    
# Line 368  for key in 'OMP_NUM_THREADS', 'ESCRIPT_N Line 424  for key in 'OMP_NUM_THREADS', 'ESCRIPT_N
424      try:      try:
425          env['ENV'][key] = os.environ[key]          env['ENV'][key] = os.environ[key]
426      except KeyError:      except KeyError:
427          env['ENV'][key] = 1          env['ENV'][key] = '1'
428    
429  env_export=env['env_export']  env_export=env['env_export']
430  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'])
431    
432  for key in set(env_export):  for key in set(env_export):
433      try:      try:
# Line 379  for key in set(env_export): Line 435  for key in set(env_export):
435      except KeyError:      except KeyError:
436          pass          pass
437    
438    for key in os.environ.keys():
439        if key.startswith("SLURM_"):
440            env['ENV'][key] = os.environ[key]
441    
442  try:  try:
443      env.PrependENVPath(LD_LIBRARY_PATH_KEY, os.environ[LD_LIBRARY_PATH_KEY])      env.PrependENVPath(LD_LIBRARY_PATH_KEY, os.environ[LD_LIBRARY_PATH_KEY])
444  except KeyError:  except KeyError:
# Line 417  env.Append(BUILDERS = {'RunUnitTest' : r Line 477  env.Append(BUILDERS = {'RunUnitTest' : r
477  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)
478  env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});  env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});
479    
480    runPyExample_builder = Builder(action = runPyExample, suffix = '.passed', src_suffic='.py', single_source=True)
481    env.Append(BUILDERS = {'RunPyExample' : runPyExample_builder});
482    
483  epstopdfbuilder = Builder(action = eps2pdf, suffix='.pdf', src_suffix='.eps', single_source=True)  epstopdfbuilder = Builder(action = eps2pdf, suffix='.pdf', src_suffix='.eps', single_source=True)
484  env.Append(BUILDERS = {'EpsToPDF' : epstopdfbuilder});  env.Append(BUILDERS = {'EpsToPDF' : epstopdfbuilder});
485    
# Line 431  env=checkPython(env) Line 494  env=checkPython(env)
494  ######## boost & boost-python (required)  ######## boost & boost-python (required)
495  env=checkBoost(env)  env=checkBoost(env)
496    
497    ######## NVCC version (optional)
498    if env['cuda']:
499        env=checkCudaVersion(env)
500        env=checkCUDA(env)
501    
502  ######## numpy (required) and numpy headers (optional)  ######## numpy (required) and numpy headers (optional)
503  env=checkNumpy(env)  env=checkNumpy(env)
504    
# Line 443  env=checkOptionalModules(env) Line 511  env=checkOptionalModules(env)
511  ######## optional dependencies (netCDF, PAPI, MKL, UMFPACK, Lapack, Silo, ...)  ######## optional dependencies (netCDF, PAPI, MKL, UMFPACK, Lapack, Silo, ...)
512  env=checkOptionalLibraries(env)  env=checkOptionalLibraries(env)
513    
514    #use gmsh info to set some defines
515    if env['gmsh'] == 's':
516        env.Append(CPPDEFINES=['GMSH'])
517    elif env['gmsh'] == 'm':
518        env.Append(CPPDEFINES=['GMSH','GMSH_MPI'])
519    
520  ######## PDFLaTeX (for documentation)  ######## PDFLaTeX (for documentation)
521  env=checkPDFLatex(env)  env=checkPDFLatex(env)
522    
# Line 489  Export( Line 563  Export(
563    ]    ]
564  )  )
565    
566    #do not auto build
567  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)
568  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)
569  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)
570  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)
571    
572    env.SConscript(dirs = ['cusplibrary'])
573    
574  #This will pull in the escriptcore/py_src and escriptcore/test  #This will pull in the escriptcore/py_src and escriptcore/test
575  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)  
576  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)
577  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)
578  env.SConscript(dirs = ['dudley/src'], variant_dir='$BUILD_DIR/$PLATFORM/dudley', duplicate=0)  if 'dudley' in env['domains']:
579  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)
580  env.SConscript(dirs = ['ripley/src'], variant_dir='$BUILD_DIR/$PLATFORM/ripley', duplicate=0)  if 'finley' in env['domains']:
581        env.SConscript(dirs = ['finley/src'], variant_dir='$BUILD_DIR/$PLATFORM/finley', duplicate=0)
582    if 'ripley' in env['domains']:
583        env.SConscript(dirs = ['ripley/src'], variant_dir='$BUILD_DIR/$PLATFORM/ripley', duplicate=0)
584    if 'speckley' in env['domains']:
585        env.SConscript(dirs = ['speckley/src'], variant_dir='$BUILD_DIR/$PLATFORM/speckley', duplicate=0)
586  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)
587  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)
588  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 595  env.SConscript(dirs = ['paso/profiling']
595    
596  write_buildvars(env)  write_buildvars(env)
597    
598    write_launcher(env)
599    
600  ################### Targets to build and install libraries ###################  ################### Targets to build and install libraries ###################
601    
602  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 618  env.Alias('install_escript', ['build_esc
618  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'])
619  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'])
620    
621  env.Alias('build_dudley', ['install_dudley_headers', 'build_dudley_lib', 'build_dudleycpp_lib'])  if 'dudley' in env['domains']:
622  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'])
623        env.Alias('install_dudley', ['build_dudley', 'install_dudley_lib', 'install_dudleycpp_lib', 'install_dudley_py'])
624  env.Alias('build_finley', ['install_finley_headers', 'build_finley_lib', 'build_finleycpp_lib'])  
625  env.Alias('install_finley', ['build_finley', 'install_finley_lib', 'install_finleycpp_lib', 'install_finley_py'])  if 'finley' in env['domains']:
626        env.Alias('build_finley', ['install_finley_headers', 'build_finley_lib', 'build_finleycpp_lib'])
627  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'])
628  env.Alias('install_ripley', ['build_ripley', 'install_ripley_lib', 'install_ripleycpp_lib', 'install_ripley_py'])  
629    if 'ripley' in env['domains']:
630        env.Alias('build_ripley', ['install_cusp_headers', 'install_ripley_headers', 'build_ripley_lib', 'build_ripleycpp_lib'])
631        env.Alias('install_ripley', ['build_ripley', 'install_ripley_lib', 'install_ripleycpp_lib', 'install_ripley_py'])
632    
633    if 'speckley' in env['domains']:
634        env.Alias('build_speckley', ['install_speckley_headers', 'build_speckley_lib', 'build_speckleycpp_lib'])
635        env.Alias('install_speckley', ['build_speckley', 'install_speckley_lib', 'install_speckleycpp_lib', 'install_speckley_py'])
636    
637  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'])
638  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 646  build_all_list += ['build_esysUtils']
646  build_all_list += ['build_paso']  build_all_list += ['build_paso']
647  build_all_list += ['build_escript']  build_all_list += ['build_escript']
648  build_all_list += ['build_pasowrap']  build_all_list += ['build_pasowrap']
649  build_all_list += ['build_dudley']  if 'dudley' in env['domains']: build_all_list += ['build_dudley']
650  build_all_list += ['build_finley']  if 'finley' in env['domains']: build_all_list += ['build_finley']
651  build_all_list += ['build_ripley']  if 'ripley' in env['domains']: build_all_list += ['build_ripley']
652    if 'speckley' in env['domains']: build_all_list += ['build_speckley']
653  build_all_list += ['build_weipa']  build_all_list += ['build_weipa']
654  if not IS_WINDOWS: build_all_list += ['build_escriptreader']  if not IS_WINDOWS and 'finley' in env['domains']:
655        build_all_list += ['build_escriptreader']
656  if env['usempi']:   build_all_list += ['build_pythonMPI']  if env['usempi']:   build_all_list += ['build_pythonMPI']
 build_all_list += ['build_escriptconvert']  
657  env.Alias('build_all', build_all_list)  env.Alias('build_all', build_all_list)
658    
659  install_all_list = []  install_all_list = []
# Line 571  install_all_list += ['install_esysUtils' Line 662  install_all_list += ['install_esysUtils'
662  install_all_list += ['install_paso']  install_all_list += ['install_paso']
663  install_all_list += ['install_escript']  install_all_list += ['install_escript']
664  install_all_list += ['install_pasowrap']  install_all_list += ['install_pasowrap']
665  install_all_list += ['install_dudley']  if 'dudley' in env['domains']: install_all_list += ['install_dudley']
666  install_all_list += ['install_finley']  if 'finley' in env['domains']: install_all_list += ['install_finley']
667  install_all_list += ['install_ripley']  if 'ripley' in env['domains']: install_all_list += ['install_ripley']
668    if 'speckley' in env['domains']: install_all_list += ['install_speckley']
669  install_all_list += ['install_weipa']  install_all_list += ['install_weipa']
670  if not IS_WINDOWS: install_all_list += ['install_escriptreader']  if not IS_WINDOWS and 'finley' in env['domains']:
671        install_all_list += ['install_escriptreader']
672  install_all_list += ['install_downunder_py']  install_all_list += ['install_downunder_py']
673  install_all_list += ['install_modellib_py']  install_all_list += ['install_modellib_py']
674  install_all_list += ['install_pycad_py']  install_all_list += ['install_pycad_py']
675  if env['usempi']:   install_all_list += ['install_pythonMPI']  if env['usempi']:   install_all_list += ['install_pythonMPI']
 install_all_list += ['install_escriptconvert']  
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 613  if not IS_WINDOWS: Line 705  if not IS_WINDOWS:
705      generateTestScripts(env, TestGroups)      generateTestScripts(env, TestGroups)
706    
707    
   
708  ######################## Summarize our environment ###########################  ######################## Summarize our environment ###########################
709  def print_summary():  def print_summary():
710      print("")      print("")
# Line 629  def print_summary(): Line 720  def print_summary():
720      if env['usempi']:      if env['usempi']:
721          print("             MPI:  YES (flavour: %s)"%env['mpi'])          print("             MPI:  YES (flavour: %s)"%env['mpi'])
722      else:      else:
723          print("             MPI:  DISABLED")          print("             MPI:  NO")
724      if env['uselapack']:      if env['uselapack']:
725          print("          LAPACK:  YES (flavour: %s)"%env['lapack'])          print("          LAPACK:  YES (flavour: %s)"%env['lapack'])
726      else:      else:
727          print("          LAPACK:  DISABLED")          print("          LAPACK:  NO")
728        if env['cuda']:
729            print("            CUDA:  YES (nvcc: %s)"%env['nvcc_version'])
730        else:
731            print("            CUDA:  NO")
732      d_list=[]      d_list=[]
733      e_list=[]      e_list=[]
734      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':
735          if env[i]: e_list.append(i)          if env[i]: e_list.append(i)
736          else: d_list.append(i)          else: d_list.append(i)
737      for i in e_list:      for i in e_list:
738          print("%16s:  YES"%i)          print("%16s:  YES"%i)
739      for i in d_list:      for i in d_list:
740          print("%16s:  DISABLED"%i)          print("%16s:  NO"%i)
741      if env['cppunit']:      if env['cppunit']:
742          print("         CppUnit:  FOUND")          print("         CppUnit:  YES")
743        else:
744            print("         CppUnit:  NO")
745        if env['gmshpy']:
746            gmshpy=" + python module"
747      else:      else:
748          print("         CppUnit:  NOT FOUND")          gmshpy=""
749      if env['gmsh']=='m':      if env['gmsh']=='m':
750          print("            gmsh:  FOUND, MPI-ENABLED")          print("            gmsh:  YES, MPI-ENABLED"+gmshpy)
751      elif env['gmsh']=='s':      elif env['gmsh']=='s':
752          print("            gmsh:  FOUND")          print("            gmsh:  YES"+gmshpy)
753      else:      else:
754          print("            gmsh:  NOT FOUND")          if env['gmshpy']:
755                print("            gmsh:  python module only")
756            else:
757                print("            gmsh:  NO")
758        print(    "            gzip:  " + ("YES" if env['compressed_files'] else "NO"))
759    
760      if ((fatalwarning != '') and (env['werror'])):      if ((fatalwarning != '') and (env['werror'])):
761          print("  Treating warnings as errors")          print("  Treating warnings as errors")

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

  ViewVC Help
Powered by ViewVC 1.1.26