/[escript]/trunk/SConstruct
ViewVC logotype

Diff of /trunk/SConstruct

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

revision 3597 by caltinay, Thu Sep 15 06:03:17 2011 UTC revision 3961 by jfenwick, Tue Sep 11 07:21:41 2012 UTC
# Line 1  Line 1 
1  ########################################################  ########################################################
2  #  #
3  # Copyright (c) 2003-2010 by University of Queensland  # Copyright (c) 2003-2012 by University of Queensland
4  # Earth Systems Science Computational Center (ESSCC)  # Earth Systems Science Computational Center (ESSCC)
5  # http://www.uq.edu.au/esscc  # http://www.uq.edu.au/esscc
6  #  #
# Line 16  EnsurePythonVersion(2,5) Line 16  EnsurePythonVersion(2,5)
16  import sys, os, platform, re  import sys, os, platform, re
17  from distutils import sysconfig  from distutils import sysconfig
18  from site_init import *  from site_init import *
19    import subprocess
20    from subprocess import PIPE, Popen
21    
22  # 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
23  # added or existing options changed.  # added or existing options changed.
# Line 47  if not os.path.isfile(options_file): Line 49  if not os.path.isfile(options_file):
49  ############################### Build options ################################  ############################### Build options ################################
50    
51  default_prefix='/usr'  default_prefix='/usr'
52  mpi_flavours=('none', 'MPT', 'MPICH', 'MPICH2', 'OPENMPI', 'INTELMPI')  mpi_flavours=('no', 'none', 'MPT', 'MPICH', 'MPICH2', 'OPENMPI', 'INTELMPI')
53  lapack_flavours=('none', 'clapack', 'mkl')  lapack_flavours=('none', 'clapack', 'mkl')
54    
55  vars = Variables(options_file, ARGUMENTS)  vars = Variables(options_file, ARGUMENTS)
# Line 108  vars.AddVariables( Line 110  vars.AddVariables(
110    BoolVariable('visit', 'Enable the VisIt simulation interface', False),    BoolVariable('visit', 'Enable the VisIt simulation interface', False),
111    ('visit_prefix', 'Prefix/Paths to VisIt installation', default_prefix),    ('visit_prefix', 'Prefix/Paths to VisIt installation', default_prefix),
112    ('visit_libs', 'VisIt libraries to link with', ['simV2']),    ('visit_libs', 'VisIt libraries to link with', ['simV2']),
   BoolVariable('pyvisi', 'Enable pyvisi (deprecated, requires VTK module)', False),  
113    BoolVariable('vsl_random', 'Use VSL from intel for random data', False),    BoolVariable('vsl_random', 'Use VSL from intel for random data', False),
114  # Advanced settings  # Advanced settings
115    #dudley_assemble_flags = -funroll-loops      to actually do something    #dudley_assemble_flags = -funroll-loops      to actually do something
# Line 122  vars.AddVariables( Line 123  vars.AddVariables(
123    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')),
124    # finer control over library building, intel aggressive global optimisation    # finer control over library building, intel aggressive global optimisation
125    # works with dynamic libraries on windows.    # works with dynamic libraries on windows.
126    ('share_esysutils', 'Build a dynamic esysUtils library', False),    ('build_shared', 'Build dynamic libraries only', False),
   ('share_paso', 'Build a dynamic paso library', False),  
127    ('sys_libs', 'Extra libraries to link with', []),    ('sys_libs', 'Extra libraries to link with', []),
128    ('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)'),
129      ('SVN_VERSION', 'Do not use from options file', -2),
130      ('pythoncmd', 'which python to compile with','python'),
131      ('usepython3', 'Is this a python3 build? (experimental)', False),
132      ('pythonlibname', 'Name of the python library to link. (This is found automatically for python2.X.)', ''),
133      ('pythonlibpath', 'Path to the python library. (You should not need to set this unless your python has moved)',''),
134      ('pythonincpath','Path to python include files. (You should not need to set this unless your python has moved',''),
135      BoolVariable('BADPYTHONMACROS','Extra \#include to get around a python bug.', True),
136  )  )
137    
138  ##################### Create environment and help text #######################  ##################### Create environment and help text #######################
# Line 209  if cc_name == 'icc': Line 216  if cc_name == 'icc':
216      cc_optim    = "-O3 -ftz -IPF_ftlacc- -IPF_fma -fno-alias -ip"      cc_optim    = "-O3 -ftz -IPF_ftlacc- -IPF_fma -fno-alias -ip"
217      cc_debug    = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"      cc_debug    = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"
218      omp_flags   = "-openmp -openmp_report0"      omp_flags   = "-openmp -openmp_report0"
219      omp_ldflags = "-openmp -openmp_report0 -lguide -lpthread"      omp_ldflags = "-openmp -openmp_report0 -lpthread"
220      fatalwarning = "-Werror"      fatalwarning = "-Werror"
221  elif cc_name[:3] == 'gcc':  elif cc_name[:3] == 'gcc':
222      # GNU C on any system      # GNU C on any system
# Line 244  if env['cc_extra']  != '': env.Append(CF Line 251  if env['cc_extra']  != '': env.Append(CF
251  if env['cxx_extra'] != '': env.Append(CXXFLAGS = env['cxx_extra'])  if env['cxx_extra'] != '': env.Append(CXXFLAGS = env['cxx_extra'])
252  if env['ld_extra']  != '': env.Append(LINKFLAGS = env['ld_extra'])  if env['ld_extra']  != '': env.Append(LINKFLAGS = env['ld_extra'])
253    
254    if env['BADPYTHONMACROS']: env.Append(CXXFLAGS = ' -DBADPYTHONMACROS')
255    
256    if env['usepython3']:
257        env.Append(CPPDEFINES=['ESPYTHON3'])
258    
259  # set up the autolazy values  # set up the autolazy values
260  if env['forcelazy'] == 'on':  if env['forcelazy'] == 'on':
261      env.Append(CPPDEFINES=['FAUTOLAZYON'])      env.Append(CPPDEFINES=['FAUTOLAZYON'])
# Line 284  env.Append(CCFLAGS = env['cc_flags']) Line 296  env.Append(CCFLAGS = env['cc_flags'])
296  # add system libraries  # add system libraries
297  env.AppendUnique(LIBS = env['sys_libs'])  env.AppendUnique(LIBS = env['sys_libs'])
298    
299  # Get the global Subversion revision number for the getVersion() method  
300  try:  global_revision=ARGUMENTS.get('SVN_VERSION', None)
301    if global_revision:
302        global_revision = re.sub(':.*', '', global_revision)
303        global_revision = re.sub('[^0-9]', '', global_revision)
304        if global_revision == '': global_revision='-2'
305    else:
306      # Get the global Subversion revision number for the getVersion() method
307      try:
308      global_revision = os.popen('svnversion -n .').read()      global_revision = os.popen('svnversion -n .').read()
309      global_revision = re.sub(':.*', '', global_revision)      global_revision = re.sub(':.*', '', global_revision)
310      global_revision = re.sub('[^0-9]', '', global_revision)      global_revision = re.sub('[^0-9]', '', global_revision)
311      if global_revision == '': global_revision='-2'      if global_revision == '': global_revision='-2'
312  except:    except:
313      global_revision = '-1'      global_revision = '-1'
314  env['svn_revision']=global_revision  env['svn_revision']=global_revision
315  env.Append(CPPDEFINES=['SVN_VERSION='+global_revision])  env.Append(CPPDEFINES=['SVN_VERSION='+global_revision])
316    
317  if IS_WINDOWS:  if IS_WINDOWS:
318      if not env['share_esysutils']:      if not env['build_shared']:
319          env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])          env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])
     if not env['share_paso']:  
320          env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])          env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])
321    
322  ###################### Copy required environment vars ########################  ###################### Copy required environment vars ########################
# Line 346  except KeyError: Line 364  except KeyError:
364    
365  ######################## Add some custom builders ############################  ######################## Add some custom builders ############################
366    
367  py_builder = Builder(action = build_py, suffix = '.pyc', src_suffix = '.py', single_source=True)  if env['pythoncmd']=='python':
368        py_builder = Builder(action = build_py, suffix = '.pyc', src_suffix = '.py', single_source=True)
369    else:
370        py_builder = Builder(action = env['pythoncmd']+" scripts/py_comp.py $SOURCE $TARGET", suffix = '.pyc', src_suffix = '.py', single_source=True)
371  env.Append(BUILDERS = {'PyCompile' : py_builder});  env.Append(BUILDERS = {'PyCompile' : py_builder});
372    
373  runUnitTest_builder = Builder(action = runUnitTest, suffix = '.passed', src_suffix=env['PROGSUFFIX'], single_source=True)  runUnitTest_builder = Builder(action = runUnitTest, suffix = '.passed', src_suffix=env['PROGSUFFIX'], single_source=True)
# Line 385  if conf.CheckFunc('gethostname'): Line 406  if conf.CheckFunc('gethostname'):
406    
407  ######## Python headers & library (required)  ######## Python headers & library (required)
408    
409  python_inc_path=sysconfig.get_python_inc()  #First we check to see if the config file has specified
410  if IS_WINDOWS:  ##Where to find the filae. Ideally, this should be automatic
411      python_lib_path=os.path.join(sysconfig.get_config_var('prefix'), 'libs')  #But we need to deal with the case where python is not in its INSTALL
412  elif env['PLATFORM']=='darwin':  #Directory
413      python_lib_path=sysconfig.get_config_var('LIBPL')  # Use the python scons is running
414  else:  if env['pythoncmd']=='python':
415      python_lib_path=sysconfig.get_config_var('LIBDIR')      python_inc_path=sysconfig.get_python_inc()
416  #python_libs=[sysconfig.get_config_var('LDLIBRARY')] # only on linux      if IS_WINDOWS:
417  if IS_WINDOWS:          python_lib_path=os.path.join(sysconfig.get_config_var('prefix'), 'libs')
418      python_libs=['python%s%s'%(sys.version_info[0], sys.version_info[1])]      elif env['PLATFORM']=='darwin':
419            python_lib_path=sysconfig.get_config_var('LIBPL')
420        else:
421            python_lib_path=sysconfig.get_config_var('LIBDIR')
422    
423        #python_libs=[sysconfig.get_config_var('LDLIBRARY')] # only on linux
424        if IS_WINDOWS:
425            python_libs=['python%s%s'%(sys.version_info[0], sys.version_info[1])]
426        else:
427            python_libs=['python'+sysconfig.get_python_version()]
428    
429    #if we want to use a python other than the one scons is running
430  else:  else:
431      python_libs=['python'+sysconfig.get_python_version()]      initstring='from __future__ import print_function;from distutils import sysconfig;'
432        if env['pythonlibname']!='':
433            python_libs=env['pythonlibname']
434        else:   # work it out by calling python    
435            if IS_WINDOWS:
436                cmd='print("python%s%s"%(sys.version_info[0], sys.version_info[1]))'
437            else:
438                cmd='print("python"+sysconfig.get_python_version())'
439            p=Popen([env['pythoncmd'], '-c', initstring+cmd], stdout=PIPE)
440            python_libs=p.stdout.readline()
441            if env['usepython3']:       # This is to convert unicode str into py2 string
442                python_libs=python_libs.encode() # If scons runs on py3 then this must be rethought
443            p.wait()
444            python_libs=python_libs.strip()
445    
446      
447        # Now we know whether we are using python3 or not
448        p=Popen([env['pythoncmd'], '-c',  initstring+'print(sysconfig.get_python_inc())'], stdout=PIPE)
449        python_inc_path=p.stdout.readline()
450        if env['usepython3']:
451             python_inc_path=python_inc_path.encode()
452        p.wait()  
453        python_inc_path=python_inc_path.strip()
454        if IS_WINDOWS:
455            cmd="os.path.join(sysconfig.get_config_var('prefix'), 'libs')"
456        elif env['PLATFORM']=='darwin':
457            cmd="sysconfig.get_config_var(\"LIBPL\")"
458        else:
459            cmd="sysconfig.get_config_var(\"LIBDIR\")"
460    
461        p=Popen([env['pythoncmd'], '-c', initstring+'print('+cmd+')'], stdout=PIPE)
462        python_lib_path=p.stdout.readline()
463        if env['usepython3']:
464            python_lib_path=python_lib_path.decode()
465        p.wait()
466        python_lib_path=python_lib_path.strip()
467    
468    #Check for an override from the config file.
469    #Ideally, this should be automatic
470    #But we need to deal with the case where python is not in its INSTALL
471    #Directory
472    if env['pythonlibpath']!='':
473        python_lib_path=env['pythonlibpath']
474    
475    if env['pythonincpath']!='':
476        python_inc_path=env['pythonincpath']
477    
478    
479  if sysheaderopt == '':  if sysheaderopt == '':
480      conf.env.AppendUnique(CPPPATH = [python_inc_path])      conf.env.AppendUnique(CPPPATH = [python_inc_path])
# Line 415  if not conf.CheckFunc('Py_Exit'): Line 493  if not conf.CheckFunc('Py_Exit'):
493      print("Cannot find python library method Py_Main (tried %s in directory %s)" % (python_libs, python_lib_path))      print("Cannot find python library method Py_Main (tried %s in directory %s)" % (python_libs, python_lib_path))
494      Exit(1)      Exit(1)
495    
496    ## reuse conf to check for numpy header (optional)
497    if env['usepython3']:
498        # FIXME: This is until we can work out how to make the checks in python 3
499        conf.env['numpy_h']=False
500    else:
501        if conf.CheckCXXHeader(['Python.h','numpy/ndarrayobject.h']):
502            conf.env.Append(CPPDEFINES = ['HAVE_NUMPY_H'])
503            conf.env['numpy_h']=True
504        else:
505            conf.env['numpy_h']=False
506    
507  # Commit changes to environment  # Commit changes to environment
508  env = conf.Finish()  env = conf.Finish()
509    
# Line 437  env.PrependENVPath(LD_LIBRARY_PATH_KEY, Line 526  env.PrependENVPath(LD_LIBRARY_PATH_KEY,
526    
527  ######## numpy (required)  ######## numpy (required)
528    
529  try:  if env['pythoncmd']=='python':
530      from numpy import identity      try:
531  except ImportError:        from numpy import identity
532      print("Cannot import numpy, you need to set your PYTHONPATH and probably %s"%LD_LIBRARY_PATH_KEY)      except ImportError:
533      Exit(1)        print("Cannot import numpy, you need to set your PYTHONPATH and probably %s"%LD_LIBRARY_PATH_KEY)
534          Exit(1)
535    else:
536        p=subprocess.call([env['pythoncmd'],'-c','import numpy'])
537        if p!=0:
538          print("Cannot import numpy, you need to set your PYTHONPATH and probably %s"%LD_LIBRARY_PATH_KEY)
539          Exit(1)
540    
541  ######## CppUnit (required for tests)  ######## CppUnit (required for tests)
542    
# Line 454  try: Line 549  try:
549  except:  except:
550      env['cppunit']=False      env['cppunit']=False
551    
 ######## VTK (optional)  
   
 if env['pyvisi']:  
     try:  
         import vtk  
         env['pyvisi'] = True  
     except ImportError:  
         print("Cannot import vtk, disabling pyvisi.")  
         env['pyvisi'] = False  
   
552  ######## netCDF (optional)  ######## netCDF (optional)
553    
554  netcdf_inc_path=''  netcdf_inc_path=''
# Line 559  if env['visit']: Line 644  if env['visit']:
644    
645  ######## MPI (optional)  ######## MPI (optional)
646    
647    if env['mpi']=='no':
648        env['mpi']='none'
649    
650  env['usempi'] = env['mpi']!='none'  env['usempi'] = env['mpi']!='none'
651  mpi_inc_path=''  mpi_inc_path=''
652  mpi_lib_path=''  mpi_lib_path=''
# Line 616  try: Line 704  try:
704  except OSError:  except OSError:
705      env['gmsh']=False      env['gmsh']=False
706    
707    ######## PDFLaTeX (for documentation)
708    if 'PDF' in dir(env) and '.tex' in env.PDF.builder.src_suffixes(env):
709        env['pdflatex']=True
710    else:
711        env['pdflatex']=False
712    
713  ######################## Summarize our environment ###########################  ######################## Summarize our environment ###########################
714    
715  # keep some of our install paths first in the list for the unit tests  # keep some of our install paths first in the list for the unit tests
# Line 654  else: Line 748  else:
748      print("          LAPACK:  DISABLED")      print("          LAPACK:  DISABLED")
749  d_list=[]  d_list=[]
750  e_list=[]  e_list=[]
751  for i in 'debug','openmp','netcdf','parmetis','papi','mkl','umfpack','boomeramg','silo','visit':  for i in 'debug','openmp','netcdf','parmetis','papi','mkl','umfpack','boomeramg','silo','visit','vsl_random':
752      if env[i]: e_list.append(i)      if env[i]: e_list.append(i)
753      else: d_list.append(i)      else: d_list.append(i)
754  for i in e_list:  for i in e_list:
# Line 671  elif env['gmsh']=='s': Line 765  elif env['gmsh']=='s':
765      print("            gmsh:  FOUND")      print("            gmsh:  FOUND")
766  else:  else:
767      print("            gmsh:  NOT FOUND")      print("            gmsh:  NOT FOUND")
768  print("      vsl_random:  %s"%env['vsl_random'])  if env['numpy_h']:
769        print("   numpy headers:  FOUND")
770    else:
771        print("   numpy headers:  NOT FOUND")
772    print("   vsl_random:  %s"%env['vsl_random'])
773            
774  if ((fatalwarning != '') and (env['werror'])):  if ((fatalwarning != '') and (env['werror'])):
775      print("  Treating warnings as errors")      print("  Treating warnings as errors")
# Line 706  env.SConscript(dirs = ['paso/src'], vari Line 804  env.SConscript(dirs = ['paso/src'], vari
804  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)
805  env.SConscript(dirs = ['escript/src'], variant_dir='$BUILD_DIR/$PLATFORM/escript', duplicate=0)  env.SConscript(dirs = ['escript/src'], variant_dir='$BUILD_DIR/$PLATFORM/escript', duplicate=0)
806  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)
807    env.SConscript(dirs = ['pasowrap/src'], variant_dir='$BUILD_DIR/$PLATFORM/pasowrap', duplicate=0)
808  env.SConscript(dirs = ['dudley/src'], variant_dir='$BUILD_DIR/$PLATFORM/dudley', duplicate=0)  env.SConscript(dirs = ['dudley/src'], variant_dir='$BUILD_DIR/$PLATFORM/dudley', duplicate=0)
809  env.SConscript(dirs = ['finley/src'], variant_dir='$BUILD_DIR/$PLATFORM/finley', duplicate=0)  env.SConscript(dirs = ['finley/src'], variant_dir='$BUILD_DIR/$PLATFORM/finley', duplicate=0)
810    env.SConscript(dirs = ['ripley/src'], variant_dir='$BUILD_DIR/$PLATFORM/ripley', duplicate=0)
811    env.SConscript(dirs = ['downunder/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/downunder', duplicate=0)
812  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)
 env.SConscript(dirs = ['doc'], variant_dir='$BUILD_DIR/$PLATFORM/doc', duplicate=0)  
 env.SConscript(dirs = ['pyvisi/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/pyvisi', duplicate=0)  
813  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)
814  env.SConscript(dirs = ['pythonMPI/src'], variant_dir='$BUILD_DIR/$PLATFORM/pythonMPI', duplicate=0)  env.SConscript(dirs = ['pythonMPI/src'], variant_dir='$BUILD_DIR/$PLATFORM/pythonMPI', duplicate=0)
815    env.SConscript(dirs = ['doc'], variant_dir='$BUILD_DIR/$PLATFORM/doc', duplicate=0)
816  env.SConscript(dirs = ['paso/profiling'], variant_dir='$BUILD_DIR/$PLATFORM/paso/profiling', duplicate=0)  env.SConscript(dirs = ['paso/profiling'], variant_dir='$BUILD_DIR/$PLATFORM/paso/profiling', duplicate=0)
817    
818    
819  ######################## Populate the buildvars file #########################  ######################## Populate the buildvars file #########################
820    
821  # remove obsolete file  # remove obsolete file
# Line 734  except StopIteration: Line 835  except StopIteration:
835      pass      pass
836  boosthpp.close()  boosthpp.close()
837    
838    
839  buildvars=open(os.path.join(env['libinstall'], 'buildvars'), 'w')  buildvars=open(os.path.join(env['libinstall'], 'buildvars'), 'w')
840  buildvars.write("svn_revision="+str(global_revision)+"\n")  buildvars.write("svn_revision="+str(global_revision)+"\n")
841  buildvars.write("prefix="+prefix+"\n")  buildvars.write("prefix="+prefix+"\n")
842  buildvars.write("cc="+env['CC']+"\n")  buildvars.write("cc="+env['CC']+"\n")
843  buildvars.write("cxx="+env['CXX']+"\n")  buildvars.write("cxx="+env['CXX']+"\n")
844  buildvars.write("python="+sys.executable+"\n")  if env['pythoncmd']=='python':
845  buildvars.write("python_version="+str(sys.version_info[0])+"."+str(sys.version_info[1])+"."+str(sys.version_info[2])+"\n")      buildvars.write("python="+sys.executable+"\n")
846        buildvars.write("python_version="+str(sys.version_info[0])+"."+str(sys.version_info[1])+"."+str(sys.version_info[2])+"\n")
847    else:
848        buildvars.write("python="+env['pythoncmd']+"\n")
849        p=Popen([env['pythoncmd'], '-c', 'from __future__ import print_function;import sys;print(str(sys.version_info[0])+"."+str(sys.version_info[1])+"."+str(sys.version_info[2]))'], stdout=PIPE)
850        verstring=p.stdout.readline().strip()
851        p.wait()
852        buildvars.write("python_version="+verstring+"\n")
853  buildvars.write("boost_inc_path="+boost_inc_path+"\n")  buildvars.write("boost_inc_path="+boost_inc_path+"\n")
854  buildvars.write("boost_lib_path="+boost_lib_path+"\n")  buildvars.write("boost_lib_path="+boost_lib_path+"\n")
855  buildvars.write("boost_version="+boostversion+"\n")  buildvars.write("boost_version="+boostversion+"\n")
# Line 750  buildvars.write("mpi=%s\n"%env['mpi']) Line 859  buildvars.write("mpi=%s\n"%env['mpi'])
859  buildvars.write("mpi_inc_path=%s\n"%mpi_inc_path)  buildvars.write("mpi_inc_path=%s\n"%mpi_inc_path)
860  buildvars.write("mpi_lib_path=%s\n"%mpi_lib_path)  buildvars.write("mpi_lib_path=%s\n"%mpi_lib_path)
861  buildvars.write("lapack=%s\n"%env['lapack'])  buildvars.write("lapack=%s\n"%env['lapack'])
 buildvars.write("pyvisi=%d\n"%env['pyvisi'])  
862  buildvars.write("vsl_random=%d\n"%int(env['vsl_random']))  buildvars.write("vsl_random=%d\n"%int(env['vsl_random']))
863  for i in 'netcdf','parmetis','papi','mkl','umfpack','boomeramg','silo','visit':  for i in 'netcdf','parmetis','papi','mkl','umfpack','boomeramg','silo','visit':
864      buildvars.write("%s=%d\n"%(i, int(env[i])))      buildvars.write("%s=%d\n"%(i, int(env[i])))
# Line 761  buildvars.close() Line 869  buildvars.close()
869    
870  ################### Targets to build and install libraries ###################  ################### Targets to build and install libraries ###################
871    
872  target_init = env.Command(env['pyinstall']+'/__init__.py', None, Touch('$TARGET'))  target_init = env.Command(os.path.join(env['pyinstall'],'__init__.py'), None, Touch('$TARGET'))
873  env.Alias('target_init', [target_init])  env.Alias('target_init', [target_init])
874    # delete buildvars upon cleanup
875    env.Clean('target_init', os.path.join(env['libinstall'], 'buildvars'))
876    
877  # The headers have to be installed prior to build in order to satisfy  # The headers have to be installed prior to build in order to satisfy
878  # #include <paso/Common.h>  # #include <paso/Common.h>
# Line 775  env.Alias('install_paso', ['build_paso', Line 885  env.Alias('install_paso', ['build_paso',
885  env.Alias('build_escript', ['install_escript_headers', 'build_escript_lib', 'build_escriptcpp_lib'])  env.Alias('build_escript', ['install_escript_headers', 'build_escript_lib', 'build_escriptcpp_lib'])
886  env.Alias('install_escript', ['build_escript', 'install_escript_lib', 'install_escriptcpp_lib', 'install_escript_py'])  env.Alias('install_escript', ['build_escript', 'install_escript_lib', 'install_escriptcpp_lib', 'install_escript_py'])
887    
888    env.Alias('build_pasowrap', ['install_pasowrap_headers', 'build_pasowrap_lib', 'build_pasowrapcpp_lib'])
889    env.Alias('install_pasowrap', ['build_pasowrap', 'install_pasowrap_lib', 'install_pasowrapcpp_lib', 'install_pasowrap_py'])
890    
891  env.Alias('build_dudley', ['install_dudley_headers', 'build_dudley_lib', 'build_dudleycpp_lib'])  env.Alias('build_dudley', ['install_dudley_headers', 'build_dudley_lib', 'build_dudleycpp_lib'])
892  env.Alias('install_dudley', ['build_dudley', 'install_dudley_lib', 'install_dudleycpp_lib', 'install_dudley_py'])  env.Alias('install_dudley', ['build_dudley', 'install_dudley_lib', 'install_dudleycpp_lib', 'install_dudley_py'])
893    
894  env.Alias('build_finley', ['install_finley_headers', 'build_finley_lib', 'build_finleycpp_lib'])  env.Alias('build_finley', ['install_finley_headers', 'build_finley_lib', 'build_finleycpp_lib'])
895  env.Alias('install_finley', ['build_finley', 'install_finley_lib', 'install_finleycpp_lib', 'install_finley_py'])  env.Alias('install_finley', ['build_finley', 'install_finley_lib', 'install_finleycpp_lib', 'install_finley_py'])
896    
897    env.Alias('build_ripley', ['install_ripley_headers', 'build_ripley_lib', 'build_ripleycpp_lib'])
898    env.Alias('install_ripley', ['build_ripley', 'install_ripley_lib', 'install_ripleycpp_lib', 'install_ripley_py'])
899    
900  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'])
901  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'])
902    
# Line 792  build_all_list = [] Line 908  build_all_list = []
908  build_all_list += ['build_esysUtils']  build_all_list += ['build_esysUtils']
909  build_all_list += ['build_paso']  build_all_list += ['build_paso']
910  build_all_list += ['build_escript']  build_all_list += ['build_escript']
911    build_all_list += ['build_pasowrap']
912  build_all_list += ['build_dudley']  build_all_list += ['build_dudley']
913  build_all_list += ['build_finley']  build_all_list += ['build_finley']
914    build_all_list += ['build_ripley']
915  build_all_list += ['build_weipa']  build_all_list += ['build_weipa']
916  if not IS_WINDOWS: build_all_list += ['build_escriptreader']  if not IS_WINDOWS: build_all_list += ['build_escriptreader']
917  if env['usempi']:   build_all_list += ['build_pythonMPI']  if env['usempi']:   build_all_list += ['build_pythonMPI']
# Line 805  install_all_list += ['target_init'] Line 923  install_all_list += ['target_init']
923  install_all_list += ['install_esysUtils']  install_all_list += ['install_esysUtils']
924  install_all_list += ['install_paso']  install_all_list += ['install_paso']
925  install_all_list += ['install_escript']  install_all_list += ['install_escript']
926    install_all_list += ['install_pasowrap']
927  install_all_list += ['install_dudley']  install_all_list += ['install_dudley']
928  install_all_list += ['install_finley']  install_all_list += ['install_finley']
929    install_all_list += ['install_ripley']
930  install_all_list += ['install_weipa']  install_all_list += ['install_weipa']
931  if not IS_WINDOWS: install_all_list += ['install_escriptreader']  if not IS_WINDOWS: install_all_list += ['install_escriptreader']
932  install_all_list += ['install_pyvisi_py']  install_all_list += ['install_downunder_py']
933  install_all_list += ['install_modellib_py']  install_all_list += ['install_modellib_py']
934  install_all_list += ['install_pycad_py']  install_all_list += ['install_pycad_py']
935  if env['usempi']:   install_all_list += ['install_pythonMPI']  if env['usempi']:   install_all_list += ['install_pythonMPI']
# Line 821  env.Default('install_all') Line 941  env.Default('install_all')
941    
942  ################## Targets to build and run the test suite ###################  ################## Targets to build and run the test suite ###################
943    
 test_msg = env.Command('.dummy.', None, '@echo "Cannot run C/C++ unit tests, CppUnit not found!";exit 1')  
944  if not env['cppunit']:  if not env['cppunit']:
945        test_msg = env.Command('.dummy.', None, '@echo "Cannot run C/C++ unit tests, CppUnit not found!";exit 1')
946      env.Alias('run_tests', test_msg)      env.Alias('run_tests', test_msg)
947  env.Alias('run_tests', ['install_all'])  env.Alias('run_tests', ['install_all'])
948  env.Alias('all_tests', ['install_all', 'run_tests', 'py_tests'])  env.Alias('all_tests', ['install_all', 'run_tests', 'py_tests'])
# Line 838  env.Alias('release_prep', ['docs', 'inst Line 958  env.Alias('release_prep', ['docs', 'inst
958  if not IS_WINDOWS:  if not IS_WINDOWS:
959      try:      try:
960          utest=open('utest.sh','w')          utest=open('utest.sh','w')
961          utest.write(GroupTest.makeHeader(env['PLATFORM']))          utest.write(GroupTest.makeHeader(env['PLATFORM'], prefix))
962          for tests in TestGroups:          for tests in TestGroups:
963              utest.write(tests.makeString())              utest.write(tests.makeString())
964          utest.close()          utest.close()
965          Execute(Chmod('utest.sh', 0755))          Execute(Chmod('utest.sh', 0o755))
966          print("Generated utest.sh.")          print("Generated utest.sh.")
967      except IOError:      except IOError:
968          print("Error attempting to write unittests file.")          print("Error attempting to write unittests file.")
969          Exit(1)          Exit(1)
970    
971        # delete utest.sh upon cleanup
972        env.Clean('target_init', 'utest.sh')
973    
974      # Make sure that the escript wrapper is in place      # Make sure that the escript wrapper is in place
975      if not os.path.isfile(os.path.join(env['bininstall'], 'run-escript')):      if not os.path.isfile(os.path.join(env['bininstall'], 'run-escript')):
976          print("Copying escript wrapper.")          print("Copying escript wrapper.")

Legend:
Removed from v.3597  
changed lines
  Added in v.3961

  ViewVC Help
Powered by ViewVC 1.1.26