/[escript]/branches/csiropost2.0/SConstruct
ViewVC logotype

Diff of /branches/csiropost2.0/SConstruct

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

revision 1753 by ksteube, Sun Sep 7 22:01:23 2008 UTC revision 1789 by phornby, Mon Sep 15 08:34:44 2008 UTC
# Line 42  opts.AddOptions( Line 42  opts.AddOptions(
42  # Where to install esys stuff  # Where to install esys stuff
43    ('prefix', 'where everything will be installed',                       Dir('#.').abspath),    ('prefix', 'where everything will be installed',                       Dir('#.').abspath),
44    ('incinstall', 'where the esys headers will be installed',             os.path.join(Dir('#.').abspath,'include')),    ('incinstall', 'where the esys headers will be installed',             os.path.join(Dir('#.').abspath,'include')),
45      ('bininstall', 'where the esys binaries will be installed',            os.path.join(prefix,'bin')),
46    ('libinstall', 'where the esys libraries will be installed',           os.path.join(prefix,'lib')),    ('libinstall', 'where the esys libraries will be installed',           os.path.join(prefix,'lib')),
47    ('pyinstall', 'where the esys python modules will be installed',       os.path.join(prefix,'esys')),    ('pyinstall', 'where the esys python modules will be installed',       os.path.join(prefix,'esys')),
48  # Compilation options  # Compilation options
# Line 57  opts.AddOptions( Line 58  opts.AddOptions(
58    ('omp_debug', 'OpenMP compiler flags to use (Debug build)', '-DEFAULT_5'),    ('omp_debug', 'OpenMP compiler flags to use (Debug build)', '-DEFAULT_5'),
59    ('omp_libs', 'OpenMP compiler libraries to link with', '-DEFAULT_6'),    ('omp_libs', 'OpenMP compiler libraries to link with', '-DEFAULT_6'),
60    ('cc_extra', 'Extra C/C++ flags', ''),    ('cc_extra', 'Extra C/C++ flags', ''),
61      ('ld_extra', 'Extra linker flags', ''),
62    ('sys_libs', 'System libraries to link with', []),    ('sys_libs', 'System libraries to link with', []),
63    ('ar_flags', 'Static library archiver flags to use', ''),    ('ar_flags', 'Static library archiver flags to use', ''),
64    BoolOption('useopenmp', 'Compile parallel version using OpenMP', 'yes'),    BoolOption('useopenmp', 'Compile parallel version using OpenMP', 'yes'),
# Line 186  if not env["useopenmp"]: Line 188  if not env["useopenmp"]:
188    
189  if env['omp_optim'] == "" and env['omp_debug'] == "": env["useopenmp"] = 0  if env['omp_optim'] == "" and env['omp_debug'] == "": env["useopenmp"] = 0
190    
 Execute(Delete(env['libinstall'] + "/Compiled.with.debug"))  
 Execute(Delete(env['libinstall'] + "/Compiled.with.mpi"))  
 Execute(Delete(env['libinstall'] + "/Compiled.with.openmp"))  
 if not env['useMPI']: Execute(Delete(env['libinstall'] + "/pythonMPI"))  
   
191  ############ Copy environment variables into scons env #########  ############ Copy environment variables into scons env #########
192    
193  try: env['ENV']['OMP_NUM_THREADS'] = os.environ['OMP_NUM_THREADS']  try: env['ENV']['OMP_NUM_THREADS'] = os.environ['OMP_NUM_THREADS']
# Line 227  except KeyError: pass Line 224  except KeyError: pass
224  env.PrependENVPath('PYTHONPATH', prefix)  env.PrependENVPath('PYTHONPATH', prefix)
225  env.PrependENVPath('LD_LIBRARY_PATH', env['libinstall'])  env.PrependENVPath('LD_LIBRARY_PATH', env['libinstall'])
226    
227    env['ENV']['ESCRIPT_ROOT'] = prefix
228    
229  ############ Set up paths for Configure() ######################  ############ Set up paths for Configure() ######################
230    
231  # Make a copy of an environment  # Make a copy of an environment
# Line 244  env.Append(LIBPATH     = [Dir(env['libinsta Line 243  env.Append(LIBPATH     = [Dir(env['libinsta
243  env.Append(CPPDEFINES = ['ESCRIPT_EXPORTS', 'FINLEY_EXPORTS'])  env.Append(CPPDEFINES = ['ESCRIPT_EXPORTS', 'FINLEY_EXPORTS'])
244    
245  if env['cc_extra'] != '': env.Append(CCFLAGS = env['cc_extra'])  if env['cc_extra'] != '': env.Append(CCFLAGS = env['cc_extra'])
246    if env['ld_extra'] != '': env.Append(LINKFLAGS = env['ld_extra'])
247    
248  if env['usepedantic']: env.Append(CCFLAGS = pedantic)  if env['usepedantic']: env.Append(CCFLAGS = pedantic)
249    
# Line 284  if not conf.CheckFunc('printf'): Line 284  if not conf.CheckFunc('printf'):
284    print "Cannot run C compiler '%s' (or libc is missing)" % (env['CC'])    print "Cannot run C compiler '%s' (or libc is missing)" % (env['CC'])
285    sys.exit(1)    sys.exit(1)
286    
287  if not conf.CheckFunc('gethostname'):  if conf.CheckFunc('gethostname'):
288    env.Append(CPPDEFINES = ['HAVE_GETHOSTNAME'])    conf.env.Append(CPPDEFINES = ['HAVE_GETHOSTNAME'])
289    
290  ############ python libraries (required) #######################  ############ python libraries (required) #######################
291    
# Line 293  conf.env.AppendUnique(CPPPATH      = [env['p Line 293  conf.env.AppendUnique(CPPPATH      = [env['p
293  conf.env.AppendUnique(LIBPATH       = [env['python_lib_path']])  conf.env.AppendUnique(LIBPATH       = [env['python_lib_path']])
294  conf.env.AppendUnique(LIBS      = [env['python_libs']])  conf.env.AppendUnique(LIBS      = [env['python_libs']])
295    
296    conf.env.PrependENVPath('LD_LIBRARY_PATH', env['python_lib_path'])  # The wrapper script needs to find these libs
297    
298  if not conf.CheckCHeader('Python.h'):  if not conf.CheckCHeader('Python.h'):
299    print "Cannot find python include files (tried 'Python.h' in directory %s)" % (env['python_path'])    print "Cannot find python include files (tried 'Python.h' in directory %s)" % (env['python_path'])
300    sys.exit(1)    sys.exit(1)
# Line 306  conf.env.AppendUnique(CPPPATH      = [env['b Line 308  conf.env.AppendUnique(CPPPATH      = [env['b
308  conf.env.AppendUnique(LIBPATH       = [env['boost_lib_path']])  conf.env.AppendUnique(LIBPATH       = [env['boost_lib_path']])
309  conf.env.AppendUnique(LIBS      = [env['boost_libs']])  conf.env.AppendUnique(LIBS      = [env['boost_libs']])
310    
311    conf.env.PrependENVPath('LD_LIBRARY_PATH', env['boost_lib_path'])   # The wrapper script needs to find these libs
312    
313  if not conf.CheckCXXHeader('boost/python.hpp'):  if not conf.CheckCXXHeader('boost/python.hpp'):
314    print "Cannot find boost include files (tried boost/python.hpp in directory %s)" % (env['boost_path'])    print "Cannot find boost include files (tried boost/python.hpp in directory %s)" % (env['boost_path'])
315    sys.exit(1)    sys.exit(1)
# Line 337  if env['usenetcdf']: Line 341  if env['usenetcdf']:
341    conf.env.AppendUnique(CPPPATH = [env['netCDF_path']])    conf.env.AppendUnique(CPPPATH = [env['netCDF_path']])
342    conf.env.AppendUnique(LIBPATH = [env['netCDF_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['netCDF_lib_path']])
343    conf.env.AppendUnique(LIBS    = [env['netCDF_libs']])    conf.env.AppendUnique(LIBS    = [env['netCDF_libs']])
344      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['netCDF_lib_path'])    # The wrapper script needs to find these libs
345    
346  if env['usenetcdf'] and not conf.CheckCHeader('netcdf.h'): env['usenetcdf'] = 0  if env['usenetcdf'] and not conf.CheckCHeader('netcdf.h'): env['usenetcdf'] = 0
347  if env['usenetcdf'] and not conf.CheckFunc('nc_open'): env['usenetcdf'] = 0  if env['usenetcdf'] and not conf.CheckFunc('nc_open'): env['usenetcdf'] = 0
# Line 357  if env['usepapi']: Line 362  if env['usepapi']:
362    conf.env.AppendUnique(CPPPATH = [env['papi_path']])    conf.env.AppendUnique(CPPPATH = [env['papi_path']])
363    conf.env.AppendUnique(LIBPATH = [env['papi_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['papi_lib_path']])
364    conf.env.AppendUnique(LIBS    = [env['papi_libs']])    conf.env.AppendUnique(LIBS    = [env['papi_libs']])
365      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['papi_lib_path'])  # The wrapper script needs to find these libs
366    
367  if env['usepapi'] and not conf.CheckCHeader('papi.h'): env['usepapi'] = 0  if env['usepapi'] and not conf.CheckCHeader('papi.h'): env['usepapi'] = 0
368  if env['usepapi'] and not conf.CheckFunc('PAPI_start_counters'): env['usepapi'] = 0  if env['usepapi'] and not conf.CheckFunc('PAPI_start_counters'): env['usepapi'] = 0
# Line 377  if env['usemkl']: Line 383  if env['usemkl']:
383    conf.env.AppendUnique(CPPPATH = [env['mkl_path']])    conf.env.AppendUnique(CPPPATH = [env['mkl_path']])
384    conf.env.AppendUnique(LIBPATH = [env['mkl_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['mkl_lib_path']])
385    conf.env.AppendUnique(LIBS    = [env['mkl_libs']])    conf.env.AppendUnique(LIBS    = [env['mkl_libs']])
386      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['mkl_lib_path'])   # The wrapper script needs to find these libs
387    
388  if env['usemkl'] and not conf.CheckCHeader('mkl_solver.h'): env['usemkl'] = 0  if env['usemkl'] and not conf.CheckCHeader('mkl_solver.h'): env['usemkl'] = 0
389  if env['usemkl'] and not conf.CheckFunc('pardiso_'): env['usemkl'] = 0  if env['usemkl'] and not conf.CheckFunc('pardiso_'): env['usemkl'] = 0
# Line 404  if env['useumfpack']: Line 411  if env['useumfpack']:
411    conf.env.AppendUnique(CPPPATH = [env['blas_path']])    conf.env.AppendUnique(CPPPATH = [env['blas_path']])
412    conf.env.AppendUnique(LIBPATH = [env['blas_lib_path']])    conf.env.AppendUnique(LIBPATH = [env['blas_lib_path']])
413    conf.env.AppendUnique(LIBS    = [env['blas_libs']])    conf.env.AppendUnique(LIBS    = [env['blas_libs']])
414      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['umf_lib_path'])   # The wrapper script needs to find these libs
415      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['amd_lib_path'])   # The wrapper script needs to find these libs
416      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['blas_lib_path'])  # The wrapper script needs to find these libs
417    
418  if env['useumfpack'] and not conf.CheckCHeader('umfpack.h'): env['useumfpack'] = 0  if env['useumfpack'] and not conf.CheckCHeader('umfpack.h'): env['useumfpack'] = 0
419  if env['useumfpack'] and not conf.CheckFunc('umfpack_di_symbolic'): env['useumfpack'] = 0  if env['useumfpack'] and not conf.CheckFunc('umfpack_di_symbolic'): env['useumfpack'] = 0
# Line 441  if env_mpi['usempi']: Line 451  if env_mpi['usempi']:
451    conf.env.AppendUnique(CPPPATH = [env_mpi['mpi_path']])    conf.env.AppendUnique(CPPPATH = [env_mpi['mpi_path']])
452    conf.env.AppendUnique(LIBPATH = [env_mpi['mpi_lib_path']])    conf.env.AppendUnique(LIBPATH = [env_mpi['mpi_lib_path']])
453    conf.env.AppendUnique(LIBS    = [env_mpi['mpi_libs']])    conf.env.AppendUnique(LIBS    = [env_mpi['mpi_libs']])
454      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['mpi_lib_path'])   # The wrapper script needs to find these libs
455    
456  if env_mpi['usempi'] and not conf.CheckCHeader('mpi.h'): env_mpi['usempi'] = 0  if env_mpi['usempi'] and not conf.CheckCHeader('mpi.h'): env_mpi['usempi'] = 0
457  if env_mpi['usempi'] and not conf.CheckFunc('MPI_Init'): env_mpi['usempi'] = 0  if env_mpi['usempi'] and not conf.CheckFunc('MPI_Init'): env_mpi['usempi'] = 0
# Line 465  if env_mpi['useparmetis']: Line 476  if env_mpi['useparmetis']:
476    conf.env.AppendUnique(CPPPATH = [env_mpi['parmetis_path']])    conf.env.AppendUnique(CPPPATH = [env_mpi['parmetis_path']])
477    conf.env.AppendUnique(LIBPATH = [env_mpi['parmetis_lib_path']])    conf.env.AppendUnique(LIBPATH = [env_mpi['parmetis_lib_path']])
478    conf.env.AppendUnique(LIBS    = [env_mpi['parmetis_libs']])    conf.env.AppendUnique(LIBS    = [env_mpi['parmetis_libs']])
479      conf.env.PrependENVPath('LD_LIBRARY_PATH', env['parmetis_lib_path'])  # The wrapper script needs to find these libs
480    
481  if env_mpi['useparmetis'] and not conf.CheckCHeader('parmetis.h'): env_mpi['useparmetis'] = 0  if env_mpi['useparmetis'] and not conf.CheckCHeader('parmetis.h'): env_mpi['useparmetis'] = 0
482  if env_mpi['useparmetis'] and not conf.CheckFunc('ParMETIS_V3_PartGeomKway'): env_mpi['useparmetis'] = 0  if env_mpi['useparmetis'] and not conf.CheckFunc('ParMETIS_V3_PartGeomKway'): env_mpi['useparmetis'] = 0
# Line 506  else: print "  Not compiling for debug" Line 518  else: print "  Not compiling for debug"
518  print " Installing in", prefix  print " Installing in", prefix
519  print ""  print ""
520    
521    ############ Delete option-dependent files #####################
522    
523    Execute(Delete(env['libinstall'] + "/Compiled.with.debug"))
524    Execute(Delete(env['libinstall'] + "/Compiled.with.mpi"))
525    Execute(Delete(env['libinstall'] + "/Compiled.with.openmp"))
526    if not env['usempi']: Execute(Delete(env['libinstall'] + "/pythonMPI"))
527    
528  ############ Add some custom builders ##########################  ############ Add some custom builders ##########################
529    
530  py_builder = Builder(action = scons_extensions.build_py, suffix = '.pyc', src_suffix = '.py', single_source=True)  py_builder = Builder(action = scons_extensions.build_py, suffix = '.pyc', src_suffix = '.py', single_source=True)
# Line 517  env.Append(BUILDERS = {'RunUnitTest' : r Line 536  env.Append(BUILDERS = {'RunUnitTest' : r
536  runPyUnitTest_builder = Builder(action = scons_extensions.runPyUnitTest, suffix = '.passed', src_suffic='.py', single_source=True)  runPyUnitTest_builder = Builder(action = scons_extensions.runPyUnitTest, suffix = '.passed', src_suffic='.py', single_source=True)
537  env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});  env.Append(BUILDERS = {'RunPyUnitTest' : runPyUnitTest_builder});
538    
539  ############ Build the desired subdirectories ##################  ############ Build the subdirectories ##########################
540    
541  Export(["env", "env_mpi", "clone_env"])  Export(["env", "env_mpi", "clone_env"])
542    
# Line 531  env.SConscript(dirs = ['doc'], build_dir Line 550  env.SConscript(dirs = ['doc'], build_dir
550  env.SConscript(dirs = ['pyvisi/py_src'], build_dir='build/$PLATFORM/pyvisi', duplicate=0)  env.SConscript(dirs = ['pyvisi/py_src'], build_dir='build/$PLATFORM/pyvisi', duplicate=0)
551  env.SConscript(dirs = ['pycad/py_src'], build_dir='build/$PLATFORM/pycad', duplicate=0)  env.SConscript(dirs = ['pycad/py_src'], build_dir='build/$PLATFORM/pycad', duplicate=0)
552  env.SConscript(dirs = ['pythonMPI/src'], build_dir='build/$PLATFORM/pythonMPI', duplicate=0)  env.SConscript(dirs = ['pythonMPI/src'], build_dir='build/$PLATFORM/pythonMPI', duplicate=0)
553    env.SConscript(dirs = ['scripts'], build_dir='build/$PLATFORM/scripts', duplicate=0)
554    
555  ############ Remember what optimizations we used ###############  ############ Remember what optimizations we used ###############
556    
# Line 571  build_all_list += ['build_esysUtils'] Line 591  build_all_list += ['build_esysUtils']
591  build_all_list += ['build_paso']  build_all_list += ['build_paso']
592  build_all_list += ['build_escript']  build_all_list += ['build_escript']
593  build_all_list += ['build_finley']  build_all_list += ['build_finley']
594  if env['usempi']: build_all_list += ['target_pythonMPI_exe']  if env['usempi']:       build_all_list += ['target_pythonMPI_exe']
595    if not IS_WINDOWS_PLATFORM: build_all_list += ['target_finley_wrapper']
596  env.Alias('build_all', build_all_list)  env.Alias('build_all', build_all_list)
597    
598  install_all_list = []  install_all_list = []
# Line 583  install_all_list += ['install_finley'] Line 604  install_all_list += ['install_finley']
604  install_all_list += ['target_install_pyvisi_py']  install_all_list += ['target_install_pyvisi_py']
605  install_all_list += ['target_install_modellib_py']  install_all_list += ['target_install_modellib_py']
606  install_all_list += ['target_install_pycad_py']  install_all_list += ['target_install_pycad_py']
607  if env['usempi']: install_all_list += ['target_install_pythonMPI_exe']  if env['usempi']:       install_all_list += ['target_install_pythonMPI_exe']
608    if not IS_WINDOWS_PLATFORM: install_all_list += ['target_install_finley_wrapper']
609  install_all_list += ['remember_options']  install_all_list += ['remember_options']
610  env.Alias('install_all', install_all_list)  env.Alias('install_all', install_all_list)
611    

Legend:
Removed from v.1753  
changed lines
  Added in v.1789

  ViewVC Help
Powered by ViewVC 1.1.26