/[escript]/trunk/SConstruct
ViewVC logotype

Diff of /trunk/SConstruct

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

revision 3947 by caltinay, Wed Aug 22 23:19:10 2012 UTC revision 4046 by caltinay, Tue Oct 30 04:43:25 2012 UTC
# Line 1  Line 1 
1  ########################################################  ##############################################################################
2  #  #
3  # Copyright (c) 2003-2012 by University of Queensland  # Copyright (c) 2003-2012 by University of Queensland
4  # Earth Systems Science Computational Center (ESSCC)  # http://www.uq.edu.au
 # http://www.uq.edu.au/esscc  
5  #  #
6  # Primary Business: Queensland, Australia  # Primary Business: Queensland, Australia
7  # Licensed under the Open Software License version 3.0  # Licensed under the Open Software License version 3.0
8  # http://www.opensource.org/licenses/osl-3.0.php  # http://www.opensource.org/licenses/osl-3.0.php
9  #  #
10  ########################################################  # Development until 2012 by Earth Systems Science Computational Center (ESSCC)
11    # Development since 2012 by School of Earth Sciences
12    #
13    ##############################################################################
14    
15  EnsureSConsVersion(0,98,1)  EnsureSConsVersion(0,98,1)
16  EnsurePythonVersion(2,5)  EnsurePythonVersion(2,5)
# Line 16  EnsurePythonVersion(2,5) Line 18  EnsurePythonVersion(2,5)
18  import sys, os, platform, re  import sys, os, platform, re
19  from distutils import sysconfig  from distutils import sysconfig
20  from site_init import *  from site_init import *
 import subprocess  
21  from subprocess import PIPE, Popen  from subprocess import PIPE, Popen
22    
23  # 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
# Line 132  vars.AddVariables( Line 133  vars.AddVariables(
133    ('pythonlibname', 'Name of the python library to link. (This is found automatically for python2.X.)', ''),    ('pythonlibname', 'Name of the python library to link. (This is found automatically for python2.X.)', ''),
134    ('pythonlibpath', 'Path to the python library. (You should not need to set this unless your python has moved)',''),    ('pythonlibpath', 'Path to the python library. (You should not need to set this unless your python has moved)',''),
135    ('pythonincpath','Path to python include files. (You should not need to set this unless your python has moved',''),    ('pythonincpath','Path to python include files. (You should not need to set this unless your python has moved',''),
136      BoolVariable('BADPYTHONMACROS','Extra \#include to get around a python bug.', True),
137  )  )
138    
139  ##################### Create environment and help text #######################  ##################### Create environment and help text #######################
# Line 143  vars.AddVariables( Line 145  vars.AddVariables(
145  # in default locations.  # in default locations.
146  env = Environment(tools = ['default'], options = vars,  env = Environment(tools = ['default'], options = vars,
147                    ENV = {'PATH': os.environ['PATH']})                    ENV = {'PATH': os.environ['PATH']})
148                      
149    
150    #set the vars for clang
151    def mkclang(env):
152      env['CC']='clang'
153      env['CXX']='clang++'
154                      
155                      
156  if env['tools_names'] != 'default':  if env['tools_names'] != 'default':
157        zz=env['tools_names']
158        if 'clang' in zz:
159            zz.remove('clang')
160            zz.insert(0, mkclang)
161      env = Environment(tools = ['default'] + env['tools_names'], options = vars,      env = Environment(tools = ['default'] + env['tools_names'], options = vars,
162                        ENV = {'PATH' : os.environ['PATH']})                        ENV = {'PATH' : os.environ['PATH']})
163    
# Line 171  if len(vars.UnknownVariables())>0: Line 185  if len(vars.UnknownVariables())>0:
185    
186  #################### Make sure install directories exist #####################  #################### Make sure install directories exist #####################
187    
188  env['BUILD_DIR']=env['build_dir']  env['BUILD_DIR']=Dir(env['build_dir']).abspath
189  prefix=Dir(env['prefix']).abspath  prefix=Dir(env['prefix']).abspath
190  env['incinstall'] = os.path.join(prefix, 'include')  env['incinstall'] = os.path.join(prefix, 'include')
191  env['bininstall'] = os.path.join(prefix, 'bin')  env['bininstall'] = os.path.join(prefix, 'bin')
# Line 250  if env['cc_extra']  != '': env.Append(CF Line 264  if env['cc_extra']  != '': env.Append(CF
264  if env['cxx_extra'] != '': env.Append(CXXFLAGS = env['cxx_extra'])  if env['cxx_extra'] != '': env.Append(CXXFLAGS = env['cxx_extra'])
265  if env['ld_extra']  != '': env.Append(LINKFLAGS = env['ld_extra'])  if env['ld_extra']  != '': env.Append(LINKFLAGS = env['ld_extra'])
266    
267    if env['BADPYTHONMACROS']: env.Append(CXXFLAGS = ' -DBADPYTHONMACROS')
268    
269  if env['usepython3']:  if env['usepython3']:
270      env.Append(CPPDEFINES=['ESPYTHON3'])      env.Append(CPPDEFINES=['ESPYTHON3'])
271    
# Line 334  for key in 'OMP_NUM_THREADS', 'ESCRIPT_N Line 350  for key in 'OMP_NUM_THREADS', 'ESCRIPT_N
350          env['ENV'][key] = 1          env['ENV'][key] = 1
351    
352  env_export=env['env_export']  env_export=env['env_export']
353  env_export.extend(['ESCRIPT_NUM_THREADS','ESCRIPT_HOSTFILE','DISPLAY','XAUTHORITY','PATH','HOME','TMPDIR','TEMP','TMP'])  env_export.extend(['ESCRIPT_NUM_THREADS','ESCRIPT_HOSTFILE','DISPLAY','XAUTHORITY','PATH','HOME','KMP_MONITOR_STACKSIZE','TMPDIR','TEMP','TMP'])
354    
355  for key in set(env_export):  for key in set(env_export):
356      try:      try:
# Line 523  env.PrependENVPath(LD_LIBRARY_PATH_KEY, Line 539  env.PrependENVPath(LD_LIBRARY_PATH_KEY,
539    
540  ######## numpy (required)  ######## numpy (required)
541    
542  if env['pythoncmd']=='python':  if not detectModule(env, 'numpy'):
543      try:      print("Cannot import numpy. If it is installed try setting your PYTHONPATH and probably %s"%LD_LIBRARY_PATH_KEY)
544        from numpy import identity      Exit(1)
     except ImportError:  
       print("Cannot import numpy, you need to set your PYTHONPATH and probably %s"%LD_LIBRARY_PATH_KEY)  
       Exit(1)  
 else:  
     p=subprocess.call([env['pythoncmd'],'-c','import numpy'])  
     if p!=0:  
       print("Cannot import numpy, you need to set your PYTHONPATH and probably %s"%LD_LIBRARY_PATH_KEY)  
       Exit(1)  
545    
546  ######## CppUnit (required for tests)  ######## CppUnit (required for tests)
547    
# Line 546  try: Line 554  try:
554  except:  except:
555      env['cppunit']=False      env['cppunit']=False
556    
557    ######## sympy (optional)
558    
559    if detectModule(env, 'sympy'):
560        env['sympy'] = True
561    else:
562        print("Cannot import sympy. Symbolic toolbox and nonlinear PDEs will not be available.")
563        env['sympy'] = False
564    
565  ######## netCDF (optional)  ######## netCDF (optional)
566    
567  netcdf_inc_path=''  netcdf_inc_path=''
# Line 691  if env['parmetis']: Line 707  if env['parmetis']:
707  ######## gmsh (optional, for tests)  ######## gmsh (optional, for tests)
708    
709  try:  try:
710      import subprocess      p=Popen(['gmsh', '-info'], stderr=PIPE)
     p=subprocess.Popen(['gmsh', '-info'], stderr=subprocess.PIPE)  
711      _,e=p.communicate()      _,e=p.communicate()
712      if e.split().count("MPI"):      if e.split().count("MPI"):
713          env['gmsh']='m'          env['gmsh']='m'
# Line 745  else: Line 760  else:
760      print("          LAPACK:  DISABLED")      print("          LAPACK:  DISABLED")
761  d_list=[]  d_list=[]
762  e_list=[]  e_list=[]
763  for i in 'debug','openmp','netcdf','parmetis','papi','mkl','umfpack','boomeramg','silo','visit','vsl_random':  for i in 'debug','openmp','boomeramg','mkl','netcdf','papi','parmetis','silo','sympy','umfpack','visit','vsl_random':
764      if env[i]: e_list.append(i)      if env[i]: e_list.append(i)
765      else: d_list.append(i)      else: d_list.append(i)
766  for i in e_list:  for i in e_list:
# Line 949  env.Alias('build_PasoTests','$BUILD_DIR/ Line 964  env.Alias('build_PasoTests','$BUILD_DIR/
964  ##################### Targets to build the documentation #####################  ##################### Targets to build the documentation #####################
965    
966  env.Alias('api_epydoc','install_all')  env.Alias('api_epydoc','install_all')
967  env.Alias('docs', ['examples_tarfile', 'examples_zipfile', 'api_epydoc', 'api_doxygen', 'user_pdf', 'install_pdf', 'cookbook_pdf'])  env.Alias('docs', ['examples_tarfile', 'examples_zipfile', 'api_epydoc', 'api_doxygen', 'user_pdf', 'install_pdf', 'cookbook_pdf', 'inversion_pdf'])
968  env.Alias('release_prep', ['docs', 'install_all'])  env.Alias('release_prep', ['docs', 'install_all'])
969    
970  if not IS_WINDOWS:  if not IS_WINDOWS:

Legend:
Removed from v.3947  
changed lines
  Added in v.4046

  ViewVC Help
Powered by ViewVC 1.1.26