/[escript]/trunk/SConstruct
ViewVC logotype

Diff of /trunk/SConstruct

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

revision 3319 by caltinay, Thu Oct 28 03:14:27 2010 UTC revision 3814 by caltinay, Thu Feb 9 00:11:08 2012 UTC
# Line 19  from site_init import * Line 19  from site_init import *
19    
20  # 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
21  # added or existing options changed.  # added or existing options changed.
22  REQUIRED_OPTS_VERSION=200  REQUIRED_OPTS_VERSION=201
23    
24  # MS Windows support, many thanks to PH  # MS Windows support, many thanks to PH
25  IS_WINDOWS = (os.name == 'nt')  IS_WINDOWS = (os.name == 'nt')
# Line 47  if not os.path.isfile(options_file): Line 47  if not os.path.isfile(options_file):
47  ############################### Build options ################################  ############################### Build options ################################
48    
49  default_prefix='/usr'  default_prefix='/usr'
50  mpi_flavours=('none', 'MPT', 'MPICH', 'MPICH2', 'OPENMPI', 'INTELMPI')  mpi_flavours=('no', 'none', 'MPT', 'MPICH', 'MPICH2', 'OPENMPI', 'INTELMPI')
51  lapack_flavours=('none', 'clapack', 'mkl')  lapack_flavours=('none', 'clapack', 'mkl')
52    
53  vars = Variables(options_file, ARGUMENTS)  vars = Variables(options_file, ARGUMENTS)
54  vars.AddVariables(  vars.AddVariables(
55    PathVariable('options_file', 'Path to options file', options_file, PathVariable.PathIsFile),    PathVariable('options_file', 'Path to options file', options_file, PathVariable.PathIsFile),
56    PathVariable('prefix', 'Installation prefix', Dir('#.').abspath, PathVariable.PathIsDirCreate),    PathVariable('prefix', 'Installation prefix', Dir('#.').abspath, PathVariable.PathIsDirCreate),
57      PathVariable('build_dir', 'Top-level build directory', Dir('#/build').abspath, PathVariable.PathIsDirCreate),
58    BoolVariable('verbose', 'Output full compile/link lines', False),    BoolVariable('verbose', 'Output full compile/link lines', False),
59  # Compiler/Linker options  # Compiler/Linker options
60    ('cc', 'Path to C compiler', 'default'),    ('cc', 'Path to C compiler', 'default'),
# Line 71  vars.AddVariables( Line 72  vars.AddVariables(
72    ('omp_ldflags', 'OpenMP linker flags', 'default'),    ('omp_ldflags', 'OpenMP linker flags', 'default'),
73  # Mandatory libraries  # Mandatory libraries
74    ('boost_prefix', 'Prefix/Paths of boost installation', default_prefix),    ('boost_prefix', 'Prefix/Paths of boost installation', default_prefix),
75    ('boost_libs', 'Boost libraries to link with', ['boost_python']),    ('boost_libs', 'Boost libraries to link with', ['boost_python-mt']),
76    # Mandatory for tests
77      ('cppunit_prefix', 'Prefix/Paths of CppUnit installation', default_prefix),
78      ('cppunit_libs', 'CppUnit libraries to link with', ['cppunit']),
79  # Optional libraries and options  # Optional libraries and options
80    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),
81    ('mpi_prefix', 'Prefix/Paths of MPI installation', default_prefix),    ('mpi_prefix', 'Prefix/Paths of MPI installation', default_prefix),
# Line 92  vars.AddVariables( Line 96  vars.AddVariables(
96    BoolVariable('umfpack', 'Enable UMFPACK', False),    BoolVariable('umfpack', 'Enable UMFPACK', False),
97    ('umfpack_prefix', 'Prefix/Paths to UMFPACK installation', default_prefix),    ('umfpack_prefix', 'Prefix/Paths to UMFPACK installation', default_prefix),
98    ('umfpack_libs', 'UMFPACK libraries to link with', ['umfpack']),    ('umfpack_libs', 'UMFPACK libraries to link with', ['umfpack']),
99      BoolVariable('boomeramg', 'Enable BoomerAMG', False),
100      ('boomeramg_prefix', 'Prefix/Paths to BoomerAMG installation', default_prefix),
101      ('boomeramg_libs', 'BoomerAMG libraries to link with', ['boomeramg']),
102    EnumVariable('lapack', 'Set LAPACK flavour', 'none', allowed_values=lapack_flavours),    EnumVariable('lapack', 'Set LAPACK flavour', 'none', allowed_values=lapack_flavours),
103    ('lapack_prefix', 'Prefix/Paths to LAPACK installation', default_prefix),    ('lapack_prefix', 'Prefix/Paths to LAPACK installation', default_prefix),
104    ('lapack_libs', 'LAPACK libraries to link with', []),    ('lapack_libs', 'LAPACK libraries to link with', []),
# Line 102  vars.AddVariables( Line 109  vars.AddVariables(
109    ('visit_prefix', 'Prefix/Paths to VisIt installation', default_prefix),    ('visit_prefix', 'Prefix/Paths to VisIt installation', default_prefix),
110    ('visit_libs', 'VisIt libraries to link with', ['simV2']),    ('visit_libs', 'VisIt libraries to link with', ['simV2']),
111    BoolVariable('pyvisi', 'Enable pyvisi (deprecated, requires VTK module)', False),    BoolVariable('pyvisi', 'Enable pyvisi (deprecated, requires VTK module)', False),
112      BoolVariable('vsl_random', 'Use VSL from intel for random data', False),
113  # Advanced settings  # Advanced settings
114    #dudley_assemble_flags = -funroll-loops      to actually do something    #dudley_assemble_flags = -funroll-loops      to actually do something
115    ('dudley_assemble_flags', 'compiler flags for some dudley optimisations', ''),    ('dudley_assemble_flags', 'compiler flags for some dudley optimisations', ''),
# Line 114  vars.AddVariables( Line 122  vars.AddVariables(
122    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')),
123    # finer control over library building, intel aggressive global optimisation    # finer control over library building, intel aggressive global optimisation
124    # works with dynamic libraries on windows.    # works with dynamic libraries on windows.
125    ('share_esysutils', 'Build a dynamic esysUtils library', False),    ('build_shared', 'Build dynamic libraries only', False),
   ('share_paso', 'Build a dynamic paso library', False),  
126    ('sys_libs', 'Extra libraries to link with', []),    ('sys_libs', 'Extra libraries to link with', []),
127    ('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)'),
128      ('SVN_VERSION', 'Do not use from options file', -2),
129  )  )
130    
131  ##################### Create environment and help text #######################  ##################### Create environment and help text #######################
# Line 157  if len(vars.UnknownVariables())>0: Line 165  if len(vars.UnknownVariables())>0:
165    
166  #################### Make sure install directories exist #####################  #################### Make sure install directories exist #####################
167    
168    env['BUILD_DIR']=env['build_dir']
169  prefix=Dir(env['prefix']).abspath  prefix=Dir(env['prefix']).abspath
170  env['incinstall'] = os.path.join(prefix, 'include')  env['incinstall'] = os.path.join(prefix, 'include')
171  env['bininstall'] = os.path.join(prefix, 'bin')  env['bininstall'] = os.path.join(prefix, 'bin')
# Line 200  if cc_name == 'icc': Line 209  if cc_name == 'icc':
209      cc_optim    = "-O3 -ftz -IPF_ftlacc- -IPF_fma -fno-alias -ip"      cc_optim    = "-O3 -ftz -IPF_ftlacc- -IPF_fma -fno-alias -ip"
210      cc_debug    = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"      cc_debug    = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK"
211      omp_flags   = "-openmp -openmp_report0"      omp_flags   = "-openmp -openmp_report0"
212      omp_ldflags = "-openmp -openmp_report0 -lguide -lpthread"      omp_ldflags = "-openmp -openmp_report0 -lpthread"
213      fatalwarning = "-Werror"      fatalwarning = "-Werror"
214  elif cc_name[:3] == 'gcc':  elif cc_name[:3] == 'gcc':
215      # GNU C on any system      # GNU C on any system
# Line 275  env.Append(CCFLAGS = env['cc_flags']) Line 284  env.Append(CCFLAGS = env['cc_flags'])
284  # add system libraries  # add system libraries
285  env.AppendUnique(LIBS = env['sys_libs'])  env.AppendUnique(LIBS = env['sys_libs'])
286    
287  # Get the global Subversion revision number for the getVersion() method  
288  try:  global_revision=ARGUMENTS.get('SVN_VERSION', None)
289    if global_revision:
290        global_revision = re.sub(':.*', '', global_revision)
291        global_revision = re.sub('[^0-9]', '', global_revision)
292        if global_revision == '': global_revision='-2'
293    else:
294      # Get the global Subversion revision number for the getVersion() method
295      try:
296      global_revision = os.popen('svnversion -n .').read()      global_revision = os.popen('svnversion -n .').read()
297      global_revision = re.sub(':.*', '', global_revision)      global_revision = re.sub(':.*', '', global_revision)
298      global_revision = re.sub('[^0-9]', '', global_revision)      global_revision = re.sub('[^0-9]', '', global_revision)
299      if global_revision == '': global_revision='-2'      if global_revision == '': global_revision='-2'
300  except:    except:
301      global_revision = '-1'      global_revision = '-1'
302  env['svn_revision']=global_revision  env['svn_revision']=global_revision
303  env.Append(CPPDEFINES=['SVN_VERSION='+global_revision])  env.Append(CPPDEFINES=['SVN_VERSION='+global_revision])
304    
305  if IS_WINDOWS:  if IS_WINDOWS:
306      if not env['share_esysutils']:      if not env['build_shared']:
307          env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])          env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])
     if not env['share_paso']:  
308          env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])          env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])
309    
310  ###################### Copy required environment vars ########################  ###################### Copy required environment vars ########################
# Line 310  for key in 'OMP_NUM_THREADS', 'ESCRIPT_N Line 325  for key in 'OMP_NUM_THREADS', 'ESCRIPT_N
325          env['ENV'][key] = 1          env['ENV'][key] = 1
326    
327  env_export=env['env_export']  env_export=env['env_export']
328  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'])
329    
330  for key in set(env_export):  for key in set(env_export):
331      try:      try:
# Line 379  if conf.CheckFunc('gethostname'): Line 394  if conf.CheckFunc('gethostname'):
394  python_inc_path=sysconfig.get_python_inc()  python_inc_path=sysconfig.get_python_inc()
395  if IS_WINDOWS:  if IS_WINDOWS:
396      python_lib_path=os.path.join(sysconfig.get_config_var('prefix'), 'libs')      python_lib_path=os.path.join(sysconfig.get_config_var('prefix'), 'libs')
397    elif env['PLATFORM']=='darwin':
398        python_lib_path=sysconfig.get_config_var('LIBPL')
399  else:  else:
400      python_lib_path=sysconfig.get_config_var('LIBDIR')      python_lib_path=sysconfig.get_config_var('LIBDIR')
401  #python_libs=[sysconfig.get_config_var('LDLIBRARY')] # only on linux  #python_libs=[sysconfig.get_config_var('LDLIBRARY')] # only on linux
# Line 404  if not conf.CheckFunc('Py_Exit'): Line 421  if not conf.CheckFunc('Py_Exit'):
421      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))
422      Exit(1)      Exit(1)
423    
424    # reuse conf to check for numpy header (optional)
425    if conf.CheckCXXHeader(['Python.h','numpy/ndarrayobject.h']):
426        conf.env.Append(CPPDEFINES = ['HAVE_NUMPY_H'])
427        conf.env['numpy_h']=True
428    else:
429        conf.env['numpy_h']=False
430    
431  # Commit changes to environment  # Commit changes to environment
432  env = conf.Finish()  env = conf.Finish()
433    
# Line 432  except ImportError: Line 456  except ImportError:
456      print("Cannot import numpy, you need to set your PYTHONPATH and probably %s"%LD_LIBRARY_PATH_KEY)      print("Cannot import numpy, you need to set your PYTHONPATH and probably %s"%LD_LIBRARY_PATH_KEY)
457      Exit(1)      Exit(1)
458    
459    ######## CppUnit (required for tests)
460    
461    try:
462        cppunit_inc_path,cppunit_lib_path=findLibWithHeader(env, env['cppunit_libs'], 'cppunit/TestFixture.h', env['cppunit_prefix'], lang='c++')
463        env.AppendUnique(CPPPATH = [cppunit_inc_path])
464        env.AppendUnique(LIBPATH = [cppunit_lib_path])
465        env.PrependENVPath(LD_LIBRARY_PATH_KEY, cppunit_lib_path)
466        env['cppunit']=True
467    except:
468        env['cppunit']=False
469    
470  ######## VTK (optional)  ######## VTK (optional)
471    
472  if env['pyvisi']:  if env['pyvisi']:
# Line 522  if env['silo']: Line 557  if env['silo']:
557      # weipa library and tools.      # weipa library and tools.
558      #env.AppendUnique(LIBS = [env['silo_libs']])      #env.AppendUnique(LIBS = [env['silo_libs']])
559    
560    ######## VSL random numbers (optional)
561    if env['vsl_random']:
562        env.Append(CPPDEFINES = ['MKLRANDOM'])
563    
564  ######## VisIt (optional)  ######## VisIt (optional)
565    
566  visit_inc_path=''  visit_inc_path=''
# Line 533  if env['visit']: Line 572  if env['visit']:
572    
573  ######## MPI (optional)  ######## MPI (optional)
574    
575    if env['mpi']=='no':
576        env['mpi']='none'
577    
578  env['usempi'] = env['mpi']!='none'  env['usempi'] = env['mpi']!='none'
579  mpi_inc_path=''  mpi_inc_path=''
580  mpi_lib_path=''  mpi_lib_path=''
# Line 549  if env['usempi']: Line 591  if env['usempi']:
591      if env['netcdf'] and env['mpi'] in ['MPT','OPENMPI']:      if env['netcdf'] and env['mpi'] in ['MPT','OPENMPI']:
592          env.Append(CPPDEFINES = ['MPI_INCLUDED'])          env.Append(CPPDEFINES = ['MPI_INCLUDED'])
593    
594    ######## BOOMERAMG (optional)
595    
596    if env['mpi'] == 'none': env['boomeramg'] = False
597    
598    boomeramg_inc_path=''
599    boomeramg_lib_path=''
600    if env['boomeramg']:
601        boomeramg_inc_path,boomeramg_lib_path=findLibWithHeader(env, env['boomeramg_libs'], 'HYPRE.h', env['boomeramg_prefix'], lang='c')
602        env.AppendUnique(CPPPATH = [boomeramg_inc_path])
603        env.AppendUnique(LIBPATH = [boomeramg_lib_path])
604        env.AppendUnique(LIBS = env['boomeramg_libs'])
605        env.PrependENVPath(LD_LIBRARY_PATH_KEY, boomeramg_lib_path)
606        env.Append(CPPDEFINES = ['BOOMERAMG'])
607    
608  ######## ParMETIS (optional)  ######## ParMETIS (optional)
609    
610  if not env['usempi']: env['parmetis'] = False  if not env['usempi']: env['parmetis'] = False
# Line 563  if env['parmetis']: Line 619  if env['parmetis']:
619      env.PrependENVPath(LD_LIBRARY_PATH_KEY, parmetis_lib_path)      env.PrependENVPath(LD_LIBRARY_PATH_KEY, parmetis_lib_path)
620      env.Append(CPPDEFINES = ['USE_PARMETIS'])      env.Append(CPPDEFINES = ['USE_PARMETIS'])
621    
622    ######## gmsh (optional, for tests)
623    
624    try:
625        import subprocess
626        p=subprocess.Popen(['gmsh', '-info'], stderr=subprocess.PIPE)
627        _,e=p.communicate()
628        if e.split().count("MPI"):
629            env['gmsh']='m'
630        else:
631            env['gmsh']='s'
632    except OSError:
633        env['gmsh']=False
634    
635    ######## PDFLaTeX (for documentation)
636    if 'PDF' in dir(env) and '.tex' in env.PDF.builder.src_suffixes(env):
637        env['pdflatex']=True
638    else:
639        env['pdflatex']=False
640    
641  ######################## Summarize our environment ###########################  ######################## Summarize our environment ###########################
642    
643  # 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 676  else:
676      print("          LAPACK:  DISABLED")      print("          LAPACK:  DISABLED")
677  d_list=[]  d_list=[]
678  e_list=[]  e_list=[]
679  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':
680      if env[i]: e_list.append(i)      if env[i]: e_list.append(i)
681      else: d_list.append(i)      else: d_list.append(i)
682  for i in e_list:  for i in e_list:
683      print("%16s:  YES"%i)      print("%16s:  YES"%i)
684  for i in d_list:  for i in d_list:
685      print("%16s:  DISABLED"%i)      print("%16s:  DISABLED"%i)
686    if env['cppunit']:
687        print("         CppUnit:  FOUND")
688    else:
689        print("         CppUnit:  NOT FOUND")
690    if env['gmsh']=='m':
691        print("            gmsh:  FOUND, MPI-ENABLED")
692    elif env['gmsh']=='s':
693        print("            gmsh:  FOUND")
694    else:
695        print("            gmsh:  NOT FOUND")
696    if env['numpy_h']:
697        print("   numpy headers:  FOUND")
698    else:
699        print("   numpy headers:  NOT FOUND")
700        
701  if ((fatalwarning != '') and (env['werror'])):  if ((fatalwarning != '') and (env['werror'])):
702      print("  Treating warnings as errors")      print("  Treating warnings as errors")
703  else:  else:
# Line 636  Export( Line 726  Export(
726    ]    ]
727  )  )
728    
729  env.SConscript(dirs = ['tools/CppUnitTest/src'], variant_dir='build/$PLATFORM/tools/CppUnitTest', duplicate=0)  env.SConscript(dirs = ['tools/escriptconvert'], variant_dir='$BUILD_DIR/$PLATFORM/tools/escriptconvert', duplicate=0)
730  env.SConscript(dirs = ['tools/escriptconvert'], variant_dir='build/$PLATFORM/tools/escriptconvert', duplicate=0)  env.SConscript(dirs = ['paso/src'], variant_dir='$BUILD_DIR/$PLATFORM/paso', duplicate=0)
731  env.SConscript(dirs = ['paso/src'], variant_dir='build/$PLATFORM/paso', duplicate=0)  env.SConscript(dirs = ['weipa/src'], variant_dir='$BUILD_DIR/$PLATFORM/weipa', duplicate=0)
732  env.SConscript(dirs = ['weipa/src'], variant_dir='build/$PLATFORM/weipa', duplicate=0)  env.SConscript(dirs = ['escript/src'], variant_dir='$BUILD_DIR/$PLATFORM/escript', duplicate=0)
733  env.SConscript(dirs = ['escript/src'], variant_dir='build/$PLATFORM/escript', duplicate=0)  env.SConscript(dirs = ['esysUtils/src'], variant_dir='$BUILD_DIR/$PLATFORM/esysUtils', duplicate=0)
734  env.SConscript(dirs = ['esysUtils/src'], variant_dir='build/$PLATFORM/esysUtils', duplicate=0)  env.SConscript(dirs = ['pasowrap/src'], variant_dir='$BUILD_DIR/$PLATFORM/pasowrap', duplicate=0)
735  env.SConscript(dirs = ['dudley/src'], variant_dir='build/$PLATFORM/dudley', duplicate=0)  env.SConscript(dirs = ['dudley/src'], variant_dir='$BUILD_DIR/$PLATFORM/dudley', duplicate=0)
736  env.SConscript(dirs = ['finley/src'], variant_dir='build/$PLATFORM/finley', duplicate=0)  env.SConscript(dirs = ['finley/src'], variant_dir='$BUILD_DIR/$PLATFORM/finley', duplicate=0)
737  env.SConscript(dirs = ['modellib/py_src'], variant_dir='build/$PLATFORM/modellib', duplicate=0)  env.SConscript(dirs = ['ripley/src'], variant_dir='$BUILD_DIR/$PLATFORM/ripley', duplicate=0)
738  env.SConscript(dirs = ['doc'], variant_dir='build/$PLATFORM/doc', duplicate=0)  env.SConscript(dirs = ['modellib/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/modellib', duplicate=0)
739  env.SConscript(dirs = ['pyvisi/py_src'], variant_dir='build/$PLATFORM/pyvisi', duplicate=0)  env.SConscript(dirs = ['doc'], variant_dir='$BUILD_DIR/$PLATFORM/doc', duplicate=0)
740  env.SConscript(dirs = ['pycad/py_src'], variant_dir='build/$PLATFORM/pycad', duplicate=0)  env.SConscript(dirs = ['pyvisi/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/pyvisi', duplicate=0)
741  env.SConscript(dirs = ['pythonMPI/src'], variant_dir='build/$PLATFORM/pythonMPI', duplicate=0)  env.SConscript(dirs = ['pycad/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/pycad', duplicate=0)
742  env.SConscript(dirs = ['paso/profiling'], variant_dir='build/$PLATFORM/paso/profiling', duplicate=0)  env.SConscript(dirs = ['pythonMPI/src'], variant_dir='$BUILD_DIR/$PLATFORM/pythonMPI', duplicate=0)
743    env.SConscript(dirs = ['paso/profiling'], variant_dir='$BUILD_DIR/$PLATFORM/paso/profiling', duplicate=0)
744    
745  ######################## Populate the buildvars file #########################  ######################## Populate the buildvars file #########################
746    
# Line 687  buildvars.write("mpi_inc_path=%s\n"%mpi_ Line 778  buildvars.write("mpi_inc_path=%s\n"%mpi_
778  buildvars.write("mpi_lib_path=%s\n"%mpi_lib_path)  buildvars.write("mpi_lib_path=%s\n"%mpi_lib_path)
779  buildvars.write("lapack=%s\n"%env['lapack'])  buildvars.write("lapack=%s\n"%env['lapack'])
780  buildvars.write("pyvisi=%d\n"%env['pyvisi'])  buildvars.write("pyvisi=%d\n"%env['pyvisi'])
781  for i in 'netcdf','parmetis','papi','mkl','umfpack','silo','visit':  buildvars.write("vsl_random=%d\n"%int(env['vsl_random']))
782    for i in 'netcdf','parmetis','papi','mkl','umfpack','boomeramg','silo','visit':
783      buildvars.write("%s=%d\n"%(i, int(env[i])))      buildvars.write("%s=%d\n"%(i, int(env[i])))
784      if env[i]:      if env[i]:
785          buildvars.write("%s_inc_path=%s\n"%(i, eval(i+'_inc_path')))          buildvars.write("%s_inc_path=%s\n"%(i, eval(i+'_inc_path')))
# Line 696  buildvars.close() Line 788  buildvars.close()
788    
789  ################### Targets to build and install libraries ###################  ################### Targets to build and install libraries ###################
790    
791  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'))
792  env.Alias('target_init', [target_init])  env.Alias('target_init', [target_init])
793    # delete buildvars upon cleanup
794    env.Clean('target_init', os.path.join(env['libinstall'], 'buildvars'))
795    
796  # 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
797  # #include <paso/Common.h>  # #include <paso/Common.h>
# Line 710  env.Alias('install_paso', ['build_paso', Line 804  env.Alias('install_paso', ['build_paso',
804  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'])
805  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'])
806    
807    env.Alias('build_pasowrap', ['install_pasowrap_headers', 'build_pasowrap_lib', 'build_pasowrapcpp_lib'])
808    env.Alias('install_pasowrap', ['build_pasowrap', 'install_pasowrap_lib', 'install_pasowrapcpp_lib', 'install_pasowrap_py'])
809    
810    
811  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'])
812  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'])
813    
814  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'])
815  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'])
816    
817    env.Alias('build_ripley', ['install_ripley_headers', 'build_ripley_lib', 'build_ripleycpp_lib'])
818    env.Alias('install_ripley', ['build_ripley', 'install_ripley_lib', 'install_ripleycpp_lib', 'install_ripley_py'])
819    
820  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'])
821  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'])
822    
# Line 727  build_all_list = [] Line 828  build_all_list = []
828  build_all_list += ['build_esysUtils']  build_all_list += ['build_esysUtils']
829  build_all_list += ['build_paso']  build_all_list += ['build_paso']
830  build_all_list += ['build_escript']  build_all_list += ['build_escript']
831    build_all_list += ['build_pasowrap']
832  build_all_list += ['build_dudley']  build_all_list += ['build_dudley']
833  build_all_list += ['build_finley']  build_all_list += ['build_finley']
834    build_all_list += ['build_ripley']
835  build_all_list += ['build_weipa']  build_all_list += ['build_weipa']
836  if not IS_WINDOWS: build_all_list += ['build_escriptreader']  if not IS_WINDOWS: build_all_list += ['build_escriptreader']
837  if env['usempi']:   build_all_list += ['build_pythonMPI']  if env['usempi']:   build_all_list += ['build_pythonMPI']
# Line 740  install_all_list += ['target_init'] Line 843  install_all_list += ['target_init']
843  install_all_list += ['install_esysUtils']  install_all_list += ['install_esysUtils']
844  install_all_list += ['install_paso']  install_all_list += ['install_paso']
845  install_all_list += ['install_escript']  install_all_list += ['install_escript']
846    install_all_list += ['install_pasowrap']
847  install_all_list += ['install_dudley']  install_all_list += ['install_dudley']
848  install_all_list += ['install_finley']  install_all_list += ['install_finley']
849    install_all_list += ['install_ripley']
850  install_all_list += ['install_weipa']  install_all_list += ['install_weipa']
851  if not IS_WINDOWS: install_all_list += ['install_escriptreader']  if not IS_WINDOWS: install_all_list += ['install_escriptreader']
852  install_all_list += ['install_pyvisi_py']  install_all_list += ['install_pyvisi_py']
# Line 756  env.Default('install_all') Line 861  env.Default('install_all')
861    
862  ################## Targets to build and run the test suite ###################  ################## Targets to build and run the test suite ###################
863    
864  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')
865  env.Alias('install_cppunittest', ['build_cppunittest', 'install_cppunittest_lib'])  if not env['cppunit']:
866  env.Alias('run_tests', ['install_all', 'install_cppunittest_lib'])      env.Alias('run_tests', test_msg)
867  env.Alias('all_tests', ['install_all', 'install_cppunittest_lib', 'run_tests', 'py_tests'])  env.Alias('run_tests', ['install_all'])
868    env.Alias('all_tests', ['install_all', 'run_tests', 'py_tests'])
869  env.Alias('build_full',['install_all','build_tests','build_py_tests'])  env.Alias('build_full',['install_all','build_tests','build_py_tests'])
870  env.Alias('build_PasoTests','build/$PLATFORM/paso/profiling/PasoTests')  env.Alias('build_PasoTests','$BUILD_DIR/$PLATFORM/paso/profiling/PasoTests')
871    
872  ##################### Targets to build the documentation #####################  ##################### Targets to build the documentation #####################
873    
874  env.Alias('api_epydoc','install_all')  env.Alias('api_epydoc','install_all')
875  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'])
876  env.Alias('release_prep', ['docs', 'install_all'])  env.Alias('release_prep', ['docs', 'install_all'])
877    
878  if not IS_WINDOWS:  if not IS_WINDOWS:
879      try:      try:
880          utest=open('utest.sh','w')          utest=open('utest.sh','w')
881          utest.write(GroupTest.makeHeader(env['PLATFORM']))          utest.write(GroupTest.makeHeader(env['PLATFORM'], prefix))
882          for tests in TestGroups:          for tests in TestGroups:
883              utest.write(tests.makeString())              utest.write(tests.makeString())
884          utest.close()          utest.close()
# Line 782  if not IS_WINDOWS: Line 888  if not IS_WINDOWS:
888          print("Error attempting to write unittests file.")          print("Error attempting to write unittests file.")
889          Exit(1)          Exit(1)
890    
891        # delete utest.sh upon cleanup
892        env.Clean('target_init', 'utest.sh')
893    
894      # Make sure that the escript wrapper is in place      # Make sure that the escript wrapper is in place
895      if not os.path.isfile(os.path.join(env['bininstall'], 'run-escript')):      if not os.path.isfile(os.path.join(env['bininstall'], 'run-escript')):
896          print("Copying escript wrapper.")          print("Copying escript wrapper.")
897          Execute(Copy(os.path.join(env['bininstall'],'escript'), 'bin/run-escript'))          Execute(Copy(os.path.join(env['bininstall'],'run-escript'), 'bin/run-escript'))
898    

Legend:
Removed from v.3319  
changed lines
  Added in v.3814

  ViewVC Help
Powered by ViewVC 1.1.26