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

Diff of /branches/py3_attempt2/SConstruct

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

trunk/SConstruct revision 3338 by jfenwick, Fri Nov 5 03:50:51 2010 UTC branches/py3_attempt2/SConstruct revision 3880 by jfenwick, Wed Mar 21 10:21:26 2012 UTC
# 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.
24  REQUIRED_OPTS_VERSION=200  REQUIRED_OPTS_VERSION=201
25    
26  # MS Windows support, many thanks to PH  # MS Windows support, many thanks to PH
27  IS_WINDOWS = (os.name == 'nt')  IS_WINDOWS = (os.name == 'nt')
# 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)
56  vars.AddVariables(  vars.AddVariables(
57    PathVariable('options_file', 'Path to options file', options_file, PathVariable.PathIsFile),    PathVariable('options_file', 'Path to options file', options_file, PathVariable.PathIsFile),
58    PathVariable('prefix', 'Installation prefix', Dir('#.').abspath, PathVariable.PathIsDirCreate),    PathVariable('prefix', 'Installation prefix', Dir('#.').abspath, PathVariable.PathIsDirCreate),
59      PathVariable('build_dir', 'Top-level build directory', Dir('#/build').abspath, PathVariable.PathIsDirCreate),
60    BoolVariable('verbose', 'Output full compile/link lines', False),    BoolVariable('verbose', 'Output full compile/link lines', False),
61  # Compiler/Linker options  # Compiler/Linker options
62    ('cc', 'Path to C compiler', 'default'),    ('cc', 'Path to C compiler', 'default'),
# Line 72  vars.AddVariables( Line 75  vars.AddVariables(
75  # Mandatory libraries  # Mandatory libraries
76    ('boost_prefix', 'Prefix/Paths of boost installation', default_prefix),    ('boost_prefix', 'Prefix/Paths of boost installation', default_prefix),
77    ('boost_libs', 'Boost libraries to link with', ['boost_python-mt']),    ('boost_libs', 'Boost libraries to link with', ['boost_python-mt']),
78    # Mandatory for tests
79      ('cppunit_prefix', 'Prefix/Paths of CppUnit installation', default_prefix),
80      ('cppunit_libs', 'CppUnit libraries to link with', ['cppunit']),
81  # Optional libraries and options  # Optional libraries and options
82    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),
83    ('mpi_prefix', 'Prefix/Paths of MPI installation', default_prefix),    ('mpi_prefix', 'Prefix/Paths of MPI installation', default_prefix),
# Line 92  vars.AddVariables( Line 98  vars.AddVariables(
98    BoolVariable('umfpack', 'Enable UMFPACK', False),    BoolVariable('umfpack', 'Enable UMFPACK', False),
99    ('umfpack_prefix', 'Prefix/Paths to UMFPACK installation', default_prefix),    ('umfpack_prefix', 'Prefix/Paths to UMFPACK installation', default_prefix),
100    ('umfpack_libs', 'UMFPACK libraries to link with', ['umfpack']),    ('umfpack_libs', 'UMFPACK libraries to link with', ['umfpack']),
101      BoolVariable('boomeramg', 'Enable BoomerAMG', False),
102      ('boomeramg_prefix', 'Prefix/Paths to BoomerAMG installation', default_prefix),
103      ('boomeramg_libs', 'BoomerAMG libraries to link with', ['boomeramg']),
104    EnumVariable('lapack', 'Set LAPACK flavour', 'none', allowed_values=lapack_flavours),    EnumVariable('lapack', 'Set LAPACK flavour', 'none', allowed_values=lapack_flavours),
105    ('lapack_prefix', 'Prefix/Paths to LAPACK installation', default_prefix),    ('lapack_prefix', 'Prefix/Paths to LAPACK installation', default_prefix),
106    ('lapack_libs', 'LAPACK libraries to link with', []),    ('lapack_libs', 'LAPACK libraries to link with', []),
# Line 102  vars.AddVariables( Line 111  vars.AddVariables(
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']),
113    BoolVariable('pyvisi', 'Enable pyvisi (deprecated, requires VTK module)', False),    BoolVariable('pyvisi', 'Enable pyvisi (deprecated, requires VTK module)', False),
114      BoolVariable('vsl_random', 'Use VSL from intel for random data', False),
115  # Advanced settings  # Advanced settings
116    #dudley_assemble_flags = -funroll-loops      to actually do something    #dudley_assemble_flags = -funroll-loops      to actually do something
117    ('dudley_assemble_flags', 'compiler flags for some dudley optimisations', ''),    ('dudley_assemble_flags', 'compiler flags for some dudley optimisations', ''),
# Line 114  vars.AddVariables( Line 124  vars.AddVariables(
124    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')),
125    # finer control over library building, intel aggressive global optimisation    # finer control over library building, intel aggressive global optimisation
126    # works with dynamic libraries on windows.    # works with dynamic libraries on windows.
127    ('share_esysutils', 'Build a dynamic esysUtils library', False),    ('build_shared', 'Build dynamic libraries only', False),
   ('share_paso', 'Build a dynamic paso library', False),  
128    ('sys_libs', 'Extra libraries to link with', []),    ('sys_libs', 'Extra libraries to link with', []),
129    ('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)'),
130      ('SVN_VERSION', 'Do not use from options file', -2),
131      ('pythoncmd', 'which python to compile with','python'),
132  )  )
133    
134  ##################### Create environment and help text #######################  ##################### Create environment and help text #######################
# Line 157  if len(vars.UnknownVariables())>0: Line 168  if len(vars.UnknownVariables())>0:
168    
169  #################### Make sure install directories exist #####################  #################### Make sure install directories exist #####################
170    
171    env['BUILD_DIR']=env['build_dir']
172  prefix=Dir(env['prefix']).abspath  prefix=Dir(env['prefix']).abspath
173  env['incinstall'] = os.path.join(prefix, 'include')  env['incinstall'] = os.path.join(prefix, 'include')
174  env['bininstall'] = os.path.join(prefix, 'bin')  env['bininstall'] = os.path.join(prefix, 'bin')
# Line 200  if cc_name == 'icc': Line 212  if cc_name == 'icc':
212      cc_optim    = "-O3 -ftz -IPF_ftlacc- -IPF_fma -fno-alias -ip"      cc_optim    = "-O3 -ftz -IPF_ftlacc- -IPF_fma -fno-alias -ip"
213      cc_debug    = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"      cc_debug    = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"
214      omp_flags   = "-openmp -openmp_report0"      omp_flags   = "-openmp -openmp_report0"
215      omp_ldflags = "-openmp -openmp_report0 -lguide -lpthread"      omp_ldflags = "-openmp -openmp_report0 -lpthread"
216      fatalwarning = "-Werror"      fatalwarning = "-Werror"
217  elif cc_name[:3] == 'gcc':  elif cc_name[:3] == 'gcc':
218      # GNU C on any system      # GNU C on any system
# Line 235  if env['cc_extra']  != '': env.Append(CF Line 247  if env['cc_extra']  != '': env.Append(CF
247  if env['cxx_extra'] != '': env.Append(CXXFLAGS = env['cxx_extra'])  if env['cxx_extra'] != '': env.Append(CXXFLAGS = env['cxx_extra'])
248  if env['ld_extra']  != '': env.Append(LINKFLAGS = env['ld_extra'])  if env['ld_extra']  != '': env.Append(LINKFLAGS = env['ld_extra'])
249    
250    
251    env.Append(CPPDEFINES=['ESPYTHON3'])
252    
253  # set up the autolazy values  # set up the autolazy values
254  if env['forcelazy'] == 'on':  if env['forcelazy'] == 'on':
255      env.Append(CPPDEFINES=['FAUTOLAZYON'])      env.Append(CPPDEFINES=['FAUTOLAZYON'])
# Line 275  env.Append(CCFLAGS = env['cc_flags']) Line 290  env.Append(CCFLAGS = env['cc_flags'])
290  # add system libraries  # add system libraries
291  env.AppendUnique(LIBS = env['sys_libs'])  env.AppendUnique(LIBS = env['sys_libs'])
292    
293  # Get the global Subversion revision number for the getVersion() method  
294  try:  global_revision=ARGUMENTS.get('SVN_VERSION', None)
295    if global_revision:
296        global_revision = re.sub(':.*', '', global_revision)
297        global_revision = re.sub('[^0-9]', '', global_revision)
298        if global_revision == '': global_revision='-2'
299    else:
300      # Get the global Subversion revision number for the getVersion() method
301      try:
302      global_revision = os.popen('svnversion -n .').read()      global_revision = os.popen('svnversion -n .').read()
303      global_revision = re.sub(':.*', '', global_revision)      global_revision = re.sub(':.*', '', global_revision)
304      global_revision = re.sub('[^0-9]', '', global_revision)      global_revision = re.sub('[^0-9]', '', global_revision)
305      if global_revision == '': global_revision='-2'      if global_revision == '': global_revision='-2'
306  except:    except:
307      global_revision = '-1'      global_revision = '-1'
308  env['svn_revision']=global_revision  env['svn_revision']=global_revision
309  env.Append(CPPDEFINES=['SVN_VERSION='+global_revision])  env.Append(CPPDEFINES=['SVN_VERSION='+global_revision])
310    
311  if IS_WINDOWS:  if IS_WINDOWS:
312      if not env['share_esysutils']:      if not env['build_shared']:
313          env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])          env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])
     if not env['share_paso']:  
314          env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])          env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])
315    
316  ###################### Copy required environment vars ########################  ###################### Copy required environment vars ########################
# Line 310  for key in 'OMP_NUM_THREADS', 'ESCRIPT_N Line 331  for key in 'OMP_NUM_THREADS', 'ESCRIPT_N
331          env['ENV'][key] = 1          env['ENV'][key] = 1
332    
333  env_export=env['env_export']  env_export=env['env_export']
334  env_export.extend(['ESCRIPT_NUM_THREADS','ESCRIPT_HOSTFILE','DISPLAY','XAUTHORITY','PATH','HOME'])  env_export.extend(['ESCRIPT_NUM_THREADS','ESCRIPT_HOSTFILE','DISPLAY','XAUTHORITY','PATH','HOME','TMPDIR','TEMP','TMP'])
335    
336  for key in set(env_export):  for key in set(env_export):
337      try:      try:
# Line 337  except KeyError: Line 358  except KeyError:
358    
359  ######################## Add some custom builders ############################  ######################## Add some custom builders ############################
360    
361  py_builder = Builder(action = build_py, suffix = '.pyc', src_suffix = '.py', single_source=True)  if env['pythoncmd']=='python':
362        py_builder = Builder(action = build_py, suffix = '.pyc', src_suffix = '.py', single_source=True)
363    else:
364        py_builder = Builder(action = env['pythoncmd']+" scripts/py_comp.py $SOURCE $TARGET", suffix = '.pyc', src_suffix = '.py', single_source=True)
365  env.Append(BUILDERS = {'PyCompile' : py_builder});  env.Append(BUILDERS = {'PyCompile' : py_builder});
366    
367  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 379  if conf.CheckFunc('gethostname'): Line 403  if conf.CheckFunc('gethostname'):
403  python_inc_path=sysconfig.get_python_inc()  python_inc_path=sysconfig.get_python_inc()
404  if IS_WINDOWS:  if IS_WINDOWS:
405      python_lib_path=os.path.join(sysconfig.get_config_var('prefix'), 'libs')      python_lib_path=os.path.join(sysconfig.get_config_var('prefix'), 'libs')
406    elif env['PLATFORM']=='darwin':
407        python_lib_path=sysconfig.get_config_var('LIBPL')
408  else:  else:
409      python_lib_path=sysconfig.get_config_var('LIBDIR')      python_lib_path=sysconfig.get_config_var('LIBDIR')
410  #python_libs=[sysconfig.get_config_var('LDLIBRARY')] # only on linux  #python_libs=[sysconfig.get_config_var('LDLIBRARY')] # only on linux
# Line 387  if IS_WINDOWS: Line 413  if IS_WINDOWS:
413  else:  else:
414      python_libs=['python'+sysconfig.get_python_version()]      python_libs=['python'+sysconfig.get_python_version()]
415    
416    #if we want to use a python other than the one scons is running
417    if env['pythoncmd']!='python':
418       print "Need to try to use LDLIBRARY config variable to get real name of library if the setup fails ... may need to remove the old lib (or copy before adding)"
419       py3scons=False   # Is scons running on python3?
420       initstring='from __future__ import print_function;from distutils import sysconfig;'
421       if IS_WINDOWS:
422          cmd='print("python%s%s"%(sys.version_info[0], sys.version_info[1]))'
423       else:
424          cmd='print("python"+sysconfig.get_python_version())'
425       p=Popen([env['pythoncmd'], '-c', initstring+cmd], stdout=PIPE)
426       python_libs=p.stdout.readline()
427       if type(python_libs)!=str():
428          py3scons=True
429          python_libs=python_libs.encode()
430       p.wait()
431       python_libs=python_libs.strip()
432       python_libs="python3.2mu"
433      
434       # Now we know whether we are using python3 or not
435       p=Popen([env['pythoncmd'], '-c',  initstring+'print(sysconfig.get_python_inc())'], stdout=PIPE)
436       python_inc_path=p.stdout.readline()
437       if py3scons:
438             python_inc_path=python_inc_path.encode()
439       p.wait()  
440       python_inc_path=python_inc_path.strip()
441       if IS_WINDOWS:
442            cmd="os.path.join(sysconfig.get_config_var('prefix'), 'libs')"
443       elif env['PLATFORM']=='darwin':
444            cmd="sysconfig.get_config_var(\"LIBPL\")"
445       else:
446            cmd="sysconfig.get_config_var(\"LIBDIR\")"
447    
448       p=Popen([env['pythoncmd'], '-c', initstring+'print('+cmd+')'], stdout=PIPE)
449       python_lib_path=p.stdout.readline()
450       if py3scons:
451          python_lib_path=python_lib_path.decode()
452       p.wait()
453       python_lib_path=python_lib_path.strip()
454    
455  if sysheaderopt == '':  if sysheaderopt == '':
456      conf.env.AppendUnique(CPPPATH = [python_inc_path])      conf.env.AppendUnique(CPPPATH = [python_inc_path])
457  else:  else:
# Line 404  if not conf.CheckFunc('Py_Exit'): Line 469  if not conf.CheckFunc('Py_Exit'):
469      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))
470      Exit(1)      Exit(1)
471    
472    ## reuse conf to check for numpy header (optional)
473    #if conf.CheckCXXHeader(['Python.h','numpy/ndarrayobject.h']):
474    #    conf.env.Append(CPPDEFINES = ['HAVE_NUMPY_H'])
475    #    conf.env['numpy_h']=True
476    #else:
477    #    conf.env['numpy_h']=False
478    
479    
480    # This is until we can work out how to make the checks in python 3
481    conf.env['numpy_h']=False
482    
483    
484  # Commit changes to environment  # Commit changes to environment
485  env = conf.Finish()  env = conf.Finish()
486    
# Line 426  env.PrependENVPath(LD_LIBRARY_PATH_KEY, Line 503  env.PrependENVPath(LD_LIBRARY_PATH_KEY,
503    
504  ######## numpy (required)  ######## numpy (required)
505    
506    if env['pythoncmd']=='python':
507        try:
508          from numpy import identity
509        except ImportError:
510          print("Cannot import numpy, you need to set your PYTHONPATH and probably %s"%LD_LIBRARY_PATH_KEY)
511          Exit(1)
512    else:
513        p=subprocess.call([env['pythoncmd'],'-c','import numpy'])
514        if p!=0:
515          print("Cannot import numpy, you need to set your PYTHONPATH and probably %s"%LD_LIBRARY_PATH_KEY)
516          Exit(1)
517    
518    ######## CppUnit (required for tests)
519    
520  try:  try:
521      from numpy import identity      cppunit_inc_path,cppunit_lib_path=findLibWithHeader(env, env['cppunit_libs'], 'cppunit/TestFixture.h', env['cppunit_prefix'], lang='c++')
522  except ImportError:      env.AppendUnique(CPPPATH = [cppunit_inc_path])
523      print("Cannot import numpy, you need to set your PYTHONPATH and probably %s"%LD_LIBRARY_PATH_KEY)      env.AppendUnique(LIBPATH = [cppunit_lib_path])
524      Exit(1)      env.PrependENVPath(LD_LIBRARY_PATH_KEY, cppunit_lib_path)
525        env['cppunit']=True
526    except:
527        env['cppunit']=False
528    
529  ######## VTK (optional)  ######## VTK (optional)
530    
# Line 522  if env['silo']: Line 616  if env['silo']:
616      # weipa library and tools.      # weipa library and tools.
617      #env.AppendUnique(LIBS = [env['silo_libs']])      #env.AppendUnique(LIBS = [env['silo_libs']])
618    
619    ######## VSL random numbers (optional)
620    if env['vsl_random']:
621        env.Append(CPPDEFINES = ['MKLRANDOM'])
622    
623  ######## VisIt (optional)  ######## VisIt (optional)
624    
625  visit_inc_path=''  visit_inc_path=''
# Line 533  if env['visit']: Line 631  if env['visit']:
631    
632  ######## MPI (optional)  ######## MPI (optional)
633    
634    if env['mpi']=='no':
635        env['mpi']='none'
636    
637  env['usempi'] = env['mpi']!='none'  env['usempi'] = env['mpi']!='none'
638  mpi_inc_path=''  mpi_inc_path=''
639  mpi_lib_path=''  mpi_lib_path=''
# Line 549  if env['usempi']: Line 650  if env['usempi']:
650      if env['netcdf'] and env['mpi'] in ['MPT','OPENMPI']:      if env['netcdf'] and env['mpi'] in ['MPT','OPENMPI']:
651          env.Append(CPPDEFINES = ['MPI_INCLUDED'])          env.Append(CPPDEFINES = ['MPI_INCLUDED'])
652    
653    ######## BOOMERAMG (optional)
654    
655    if env['mpi'] == 'none': env['boomeramg'] = False
656    
657    boomeramg_inc_path=''
658    boomeramg_lib_path=''
659    if env['boomeramg']:
660        boomeramg_inc_path,boomeramg_lib_path=findLibWithHeader(env, env['boomeramg_libs'], 'HYPRE.h', env['boomeramg_prefix'], lang='c')
661        env.AppendUnique(CPPPATH = [boomeramg_inc_path])
662        env.AppendUnique(LIBPATH = [boomeramg_lib_path])
663        env.AppendUnique(LIBS = env['boomeramg_libs'])
664        env.PrependENVPath(LD_LIBRARY_PATH_KEY, boomeramg_lib_path)
665        env.Append(CPPDEFINES = ['BOOMERAMG'])
666    
667  ######## ParMETIS (optional)  ######## ParMETIS (optional)
668    
669  if not env['usempi']: env['parmetis'] = False  if not env['usempi']: env['parmetis'] = False
# Line 563  if env['parmetis']: Line 678  if env['parmetis']:
678      env.PrependENVPath(LD_LIBRARY_PATH_KEY, parmetis_lib_path)      env.PrependENVPath(LD_LIBRARY_PATH_KEY, parmetis_lib_path)
679      env.Append(CPPDEFINES = ['USE_PARMETIS'])      env.Append(CPPDEFINES = ['USE_PARMETIS'])
680    
681    ######## gmsh (optional, for tests)
682    
683    try:
684        import subprocess
685        p=subprocess.Popen(['gmsh', '-info'], stderr=subprocess.PIPE)
686        _,e=p.communicate()
687        if e.split().count("MPI"):
688            env['gmsh']='m'
689        else:
690            env['gmsh']='s'
691    except OSError:
692        env['gmsh']=False
693    
694    ######## PDFLaTeX (for documentation)
695    if 'PDF' in dir(env) and '.tex' in env.PDF.builder.src_suffixes(env):
696        env['pdflatex']=True
697    else:
698        env['pdflatex']=False
699    
700  ######################## Summarize our environment ###########################  ######################## Summarize our environment ###########################
701    
702  # 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 601  else: Line 735  else:
735      print("          LAPACK:  DISABLED")      print("          LAPACK:  DISABLED")
736  d_list=[]  d_list=[]
737  e_list=[]  e_list=[]
738  for i in 'debug','openmp','netcdf','parmetis','papi','mkl','umfpack','silo','visit','pyvisi':  for i in 'debug','openmp','netcdf','parmetis','papi','mkl','umfpack','boomeramg','silo','visit','vsl_random':
739      if env[i]: e_list.append(i)      if env[i]: e_list.append(i)
740      else: d_list.append(i)      else: d_list.append(i)
741  for i in e_list:  for i in e_list:
742      print("%16s:  YES"%i)      print("%16s:  YES"%i)
743  for i in d_list:  for i in d_list:
744      print("%16s:  DISABLED"%i)      print("%16s:  DISABLED"%i)
745    if env['cppunit']:
746        print("         CppUnit:  FOUND")
747    else:
748        print("         CppUnit:  NOT FOUND")
749    if env['gmsh']=='m':
750        print("            gmsh:  FOUND, MPI-ENABLED")
751    elif env['gmsh']=='s':
752        print("            gmsh:  FOUND")
753    else:
754        print("            gmsh:  NOT FOUND")
755    if env['numpy_h']:
756        print("   numpy headers:  FOUND")
757    else:
758        print("   numpy headers:  NOT FOUND")
759    print("   vsl_random:  %s"%env['vsl_random'])
760        
761  if ((fatalwarning != '') and (env['werror'])):  if ((fatalwarning != '') and (env['werror'])):
762      print("  Treating warnings as errors")      print("  Treating warnings as errors")
763  else:  else:
# Line 636  Export( Line 786  Export(
786    ]    ]
787  )  )
788    
789  env.SConscript(dirs = ['tools/CppUnitTest/src'], variant_dir='build/$PLATFORM/tools/CppUnitTest', duplicate=0)  print "William"
790  env.SConscript(dirs = ['tools/escriptconvert'], variant_dir='build/$PLATFORM/tools/escriptconvert', duplicate=0)  
791  env.SConscript(dirs = ['paso/src'], variant_dir='build/$PLATFORM/paso', duplicate=0)  
792  env.SConscript(dirs = ['weipa/src'], variant_dir='build/$PLATFORM/weipa', duplicate=0)  env.SConscript(dirs = ['tools/escriptconvert'], variant_dir='$BUILD_DIR/$PLATFORM/tools/escriptconvert', duplicate=0)
793  env.SConscript(dirs = ['escript/src'], variant_dir='build/$PLATFORM/escript', duplicate=0)  env.SConscript(dirs = ['paso/src'], variant_dir='$BUILD_DIR/$PLATFORM/paso', duplicate=0)
794  env.SConscript(dirs = ['esysUtils/src'], variant_dir='build/$PLATFORM/esysUtils', duplicate=0)  env.SConscript(dirs = ['weipa/src'], variant_dir='$BUILD_DIR/$PLATFORM/weipa', duplicate=0)
795  env.SConscript(dirs = ['dudley/src'], variant_dir='build/$PLATFORM/dudley', duplicate=0)  env.SConscript(dirs = ['escript/src'], variant_dir='$BUILD_DIR/$PLATFORM/escript', duplicate=0)
796  env.SConscript(dirs = ['finley/src'], variant_dir='build/$PLATFORM/finley', duplicate=0)  env.SConscript(dirs = ['esysUtils/src'], variant_dir='$BUILD_DIR/$PLATFORM/esysUtils', duplicate=0)
797  env.SConscript(dirs = ['modellib/py_src'], variant_dir='build/$PLATFORM/modellib', duplicate=0)  env.SConscript(dirs = ['pasowrap/src'], variant_dir='$BUILD_DIR/$PLATFORM/pasowrap', duplicate=0)
798  env.SConscript(dirs = ['doc'], variant_dir='build/$PLATFORM/doc', duplicate=0)  env.SConscript(dirs = ['dudley/src'], variant_dir='$BUILD_DIR/$PLATFORM/dudley', duplicate=0)
799  env.SConscript(dirs = ['pyvisi/py_src'], variant_dir='build/$PLATFORM/pyvisi', duplicate=0)  env.SConscript(dirs = ['finley/src'], variant_dir='$BUILD_DIR/$PLATFORM/finley', duplicate=0)
800  env.SConscript(dirs = ['pycad/py_src'], variant_dir='build/$PLATFORM/pycad', duplicate=0)  env.SConscript(dirs = ['ripley/src'], variant_dir='$BUILD_DIR/$PLATFORM/ripley', duplicate=0)
801  env.SConscript(dirs = ['pythonMPI/src'], variant_dir='build/$PLATFORM/pythonMPI', duplicate=0)  print "Terry"
802  env.SConscript(dirs = ['paso/profiling'], variant_dir='build/$PLATFORM/paso/profiling', duplicate=0)  env.SConscript(dirs = ['modellib/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/modellib', duplicate=0)
803    print "X1"
804    env.SConscript(dirs = ['doc'], variant_dir='$BUILD_DIR/$PLATFORM/doc', duplicate=0)
805    print "X2"
806    env.SConscript(dirs = ['pyvisi/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/pyvisi', duplicate=0)
807    print "X3"
808    env.SConscript(dirs = ['pycad/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/pycad', duplicate=0)
809    env.SConscript(dirs = ['pythonMPI/src'], variant_dir='$BUILD_DIR/$PLATFORM/pythonMPI', duplicate=0)
810    env.SConscript(dirs = ['paso/profiling'], variant_dir='$BUILD_DIR/$PLATFORM/paso/profiling', duplicate=0)
811    
812    print "Bob"
813    
814  ######################## Populate the buildvars file #########################  ######################## Populate the buildvars file #########################
815    
# Line 670  except StopIteration: Line 830  except StopIteration:
830      pass      pass
831  boosthpp.close()  boosthpp.close()
832    
833    print "Tim"
834    
835  buildvars=open(os.path.join(env['libinstall'], 'buildvars'), 'w')  buildvars=open(os.path.join(env['libinstall'], 'buildvars'), 'w')
836  buildvars.write("svn_revision="+str(global_revision)+"\n")  buildvars.write("svn_revision="+str(global_revision)+"\n")
837  buildvars.write("prefix="+prefix+"\n")  buildvars.write("prefix="+prefix+"\n")
838  buildvars.write("cc="+env['CC']+"\n")  buildvars.write("cc="+env['CC']+"\n")
839  buildvars.write("cxx="+env['CXX']+"\n")  buildvars.write("cxx="+env['CXX']+"\n")
840  buildvars.write("python="+sys.executable+"\n")  if env['pythoncmd']=='python':
841  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")
842        buildvars.write("python_version="+str(sys.version_info[0])+"."+str(sys.version_info[1])+"."+str(sys.version_info[2])+"\n")
843    else:
844        buildvars.write("python="+env['pythoncmd']+"\n")
845        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)
846        verstring=p.stdout.readline().strip()
847        p.wait()
848        buildvars.write("python_version="+verstring+"\n")
849  buildvars.write("boost_inc_path="+boost_inc_path+"\n")  buildvars.write("boost_inc_path="+boost_inc_path+"\n")
850  buildvars.write("boost_lib_path="+boost_lib_path+"\n")  buildvars.write("boost_lib_path="+boost_lib_path+"\n")
851  buildvars.write("boost_version="+boostversion+"\n")  buildvars.write("boost_version="+boostversion+"\n")
# Line 687  buildvars.write("mpi_inc_path=%s\n"%mpi_ Line 856  buildvars.write("mpi_inc_path=%s\n"%mpi_
856  buildvars.write("mpi_lib_path=%s\n"%mpi_lib_path)  buildvars.write("mpi_lib_path=%s\n"%mpi_lib_path)
857  buildvars.write("lapack=%s\n"%env['lapack'])  buildvars.write("lapack=%s\n"%env['lapack'])
858  buildvars.write("pyvisi=%d\n"%env['pyvisi'])  buildvars.write("pyvisi=%d\n"%env['pyvisi'])
859  for i in 'netcdf','parmetis','papi','mkl','umfpack','silo','visit':  buildvars.write("vsl_random=%d\n"%int(env['vsl_random']))
860    for i in 'netcdf','parmetis','papi','mkl','umfpack','boomeramg','silo','visit':
861      buildvars.write("%s=%d\n"%(i, int(env[i])))      buildvars.write("%s=%d\n"%(i, int(env[i])))
862      if env[i]:      if env[i]:
863          buildvars.write("%s_inc_path=%s\n"%(i, eval(i+'_inc_path')))          buildvars.write("%s_inc_path=%s\n"%(i, eval(i+'_inc_path')))
864          buildvars.write("%s_lib_path=%s\n"%(i, eval(i+'_lib_path')))          buildvars.write("%s_lib_path=%s\n"%(i, eval(i+'_lib_path')))
865  buildvars.close()  buildvars.close()
866    
867    print "Bozo"
868    
869  ################### Targets to build and install libraries ###################  ################### Targets to build and install libraries ###################
870    
871  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'))
872  env.Alias('target_init', [target_init])  env.Alias('target_init', [target_init])
873    # delete buildvars upon cleanup
874    env.Clean('target_init', os.path.join(env['libinstall'], 'buildvars'))
875    
876  # 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
877  # #include <paso/Common.h>  # #include <paso/Common.h>
# Line 710  env.Alias('install_paso', ['build_paso', Line 884  env.Alias('install_paso', ['build_paso',
884  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'])
885  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'])
886    
887    env.Alias('build_pasowrap', ['install_pasowrap_headers', 'build_pasowrap_lib', 'build_pasowrapcpp_lib'])
888    env.Alias('install_pasowrap', ['build_pasowrap', 'install_pasowrap_lib', 'install_pasowrapcpp_lib', 'install_pasowrap_py'])
889    
890  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'])
891  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'])
892    
893  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'])
894  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'])
895    
896    env.Alias('build_ripley', ['install_ripley_headers', 'build_ripley_lib', 'build_ripleycpp_lib'])
897    env.Alias('install_ripley', ['build_ripley', 'install_ripley_lib', 'install_ripleycpp_lib', 'install_ripley_py'])
898    
899  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'])
900  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'])
901    
# Line 727  build_all_list = [] Line 907  build_all_list = []
907  build_all_list += ['build_esysUtils']  build_all_list += ['build_esysUtils']
908  build_all_list += ['build_paso']  build_all_list += ['build_paso']
909  build_all_list += ['build_escript']  build_all_list += ['build_escript']
910    build_all_list += ['build_pasowrap']
911  build_all_list += ['build_dudley']  build_all_list += ['build_dudley']
912  build_all_list += ['build_finley']  build_all_list += ['build_finley']
913    build_all_list += ['build_ripley']
914  build_all_list += ['build_weipa']  build_all_list += ['build_weipa']
915  if not IS_WINDOWS: build_all_list += ['build_escriptreader']  if not IS_WINDOWS: build_all_list += ['build_escriptreader']
916  if env['usempi']:   build_all_list += ['build_pythonMPI']  if env['usempi']:   build_all_list += ['build_pythonMPI']
# Line 740  install_all_list += ['target_init'] Line 922  install_all_list += ['target_init']
922  install_all_list += ['install_esysUtils']  install_all_list += ['install_esysUtils']
923  install_all_list += ['install_paso']  install_all_list += ['install_paso']
924  install_all_list += ['install_escript']  install_all_list += ['install_escript']
925    install_all_list += ['install_pasowrap']
926  install_all_list += ['install_dudley']  install_all_list += ['install_dudley']
927  install_all_list += ['install_finley']  install_all_list += ['install_finley']
928    install_all_list += ['install_ripley']
929  install_all_list += ['install_weipa']  install_all_list += ['install_weipa']
930  if not IS_WINDOWS: install_all_list += ['install_escriptreader']  if not IS_WINDOWS: install_all_list += ['install_escriptreader']
931  install_all_list += ['install_pyvisi_py']  #install_all_list += ['install_pyvisi_py']
932  install_all_list += ['install_modellib_py']  install_all_list += ['install_modellib_py']
933  install_all_list += ['install_pycad_py']  install_all_list += ['install_pycad_py']
934  if env['usempi']:   install_all_list += ['install_pythonMPI']  if env['usempi']:   install_all_list += ['install_pythonMPI']
# Line 756  env.Default('install_all') Line 940  env.Default('install_all')
940    
941  ################## Targets to build and run the test suite ###################  ################## Targets to build and run the test suite ###################
942    
943  env.Alias('build_cppunittest', ['install_cppunittest_headers', 'build_cppunittest_lib'])  test_msg = env.Command('.dummy.', None, '@echo "Cannot run C/C++ unit tests, CppUnit not found!";exit 1')
944  env.Alias('install_cppunittest', ['build_cppunittest', 'install_cppunittest_lib'])  if not env['cppunit']:
945  env.Alias('run_tests', ['install_all', 'install_cppunittest_lib'])      env.Alias('run_tests', test_msg)
946  env.Alias('all_tests', ['install_all', 'install_cppunittest_lib', 'run_tests', 'py_tests'])  env.Alias('run_tests', ['install_all'])
947    env.Alias('all_tests', ['install_all', 'run_tests', 'py_tests'])
948  env.Alias('build_full',['install_all','build_tests','build_py_tests'])  env.Alias('build_full',['install_all','build_tests','build_py_tests'])
949  env.Alias('build_PasoTests','build/$PLATFORM/paso/profiling/PasoTests')  env.Alias('build_PasoTests','$BUILD_DIR/$PLATFORM/paso/profiling/PasoTests')
950    
951  ##################### Targets to build the documentation #####################  ##################### Targets to build the documentation #####################
952    
953  env.Alias('api_epydoc','install_all')  env.Alias('api_epydoc','install_all')
954  env.Alias('docs', ['examples_tarfile', 'examples_zipfile', 'api_epydoc', 'api_doxygen', 'guide_pdf', 'install_pdf', 'cookbook_pdf'])  env.Alias('docs', ['examples_tarfile', 'examples_zipfile', 'api_epydoc', 'api_doxygen', 'user_pdf', 'install_pdf', 'cookbook_pdf'])
955  env.Alias('release_prep', ['docs', 'install_all'])  env.Alias('release_prep', ['docs', 'install_all'])
956    
957  if not IS_WINDOWS:  if not IS_WINDOWS:
958      try:      try:
959          utest=open('utest.sh','w')          utest=open('utest.sh','w')
960          utest.write(GroupTest.makeHeader(env['PLATFORM']))          utest.write(GroupTest.makeHeader(env['PLATFORM'], prefix))
961          for tests in TestGroups:          for tests in TestGroups:
962              utest.write(tests.makeString())              utest.write(tests.makeString())
963          utest.close()          utest.close()
964          Execute(Chmod('utest.sh', 0755))          Execute(Chmod('utest.sh', 0o755))
965          print("Generated utest.sh.")          print("Generated utest.sh.")
966      except IOError:      except IOError:
967          print("Error attempting to write unittests file.")          print("Error attempting to write unittests file.")
968          Exit(1)          Exit(1)
969    
970        # delete utest.sh upon cleanup
971        env.Clean('target_init', 'utest.sh')
972    
973      # Make sure that the escript wrapper is in place      # Make sure that the escript wrapper is in place
974      if not os.path.isfile(os.path.join(env['bininstall'], 'run-escript')):      if not os.path.isfile(os.path.join(env['bininstall'], 'run-escript')):
975          print("Copying escript wrapper.")          print("Copying escript wrapper.")

Legend:
Removed from v.3338  
changed lines
  Added in v.3880

  ViewVC Help
Powered by ViewVC 1.1.26