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

Diff of /branches/inv2jf/SConstruct

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

revision 5183 by caltinay, Tue Sep 30 05:55:37 2014 UTC revision 5250 by caltinay, Mon Nov 10 04:05:11 2014 UTC
# Line 86  vars.AddVariables( Line 86  vars.AddVariables(
86    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),
87    ('mpi_prefix', 'Prefix/Paths of MPI installation', default_prefix),    ('mpi_prefix', 'Prefix/Paths of MPI installation', default_prefix),
88    ('mpi_libs', 'MPI shared libraries to link with', ['mpi']),    ('mpi_libs', 'MPI shared libraries to link with', ['mpi']),
89      BoolVariable('cuda', 'Enable GPU code with CUDA (requires thrust)', False),
90      ('thrust_prefix', 'Prefix/Paths to NVidia thrust installation', default_prefix),
91    BoolVariable('netcdf', 'Enable netCDF file support', False),    BoolVariable('netcdf', 'Enable netCDF file support', False),
92    ('netcdf_prefix', 'Prefix/Paths of netCDF installation', default_prefix),    ('netcdf_prefix', 'Prefix/Paths of netCDF installation', default_prefix),
93    ('netcdf_libs', 'netCDF libraries to link with', ['netcdf_c++', 'netcdf']),    ('netcdf_libs', 'netCDF libraries to link with', ['netcdf_c++', 'netcdf']),
94    BoolVariable('parmetis', 'Enable ParMETIS (requires MPI)', False),    BoolVariable('parmetis', 'Enable ParMETIS (requires MPI)', False),
95    ('parmetis_prefix', 'Prefix/Paths of ParMETIS installation', default_prefix),    ('parmetis_prefix', 'Prefix/Paths of ParMETIS installation', default_prefix),
96    ('parmetis_libs', 'ParMETIS libraries to link with', ['parmetis', 'metis']),    ('parmetis_libs', 'ParMETIS libraries to link with', ['parmetis', 'metis']),
   BoolVariable('papi', 'Enable PAPI', False),  
   ('papi_prefix', 'Prefix/Paths to PAPI installation', default_prefix),  
   ('papi_libs', 'PAPI libraries to link with', ['papi']),  
   BoolVariable('papi_instrument_solver', 'Use PAPI to instrument each iteration of the solver', False),  
97    BoolVariable('mkl', 'Enable the Math Kernel Library', False),    BoolVariable('mkl', 'Enable the Math Kernel Library', False),
98    ('mkl_prefix', 'Prefix/Paths to MKL installation', default_prefix),    ('mkl_prefix', 'Prefix/Paths to MKL installation', default_prefix),
99    ('mkl_libs', 'MKL libraries to link with', ['mkl_solver','mkl_em64t','guide','pthread']),    ('mkl_libs', 'MKL libraries to link with', ['mkl_solver','mkl_em64t','guide','pthread']),
# Line 114  vars.AddVariables( Line 112  vars.AddVariables(
112    BoolVariable('visit', 'Enable the VisIt simulation interface', False),    BoolVariable('visit', 'Enable the VisIt simulation interface', False),
113    ('visit_prefix', 'Prefix/Paths to VisIt installation', default_prefix),    ('visit_prefix', 'Prefix/Paths to VisIt installation', default_prefix),
114    ('visit_libs', 'VisIt libraries to link with', ['simV2']),    ('visit_libs', 'VisIt libraries to link with', ['simV2']),
115    BoolVariable('vsl_random', 'Use VSL from intel for random data', False),    ListVariable('domains', 'Which domains to build', 'all',\
116    BoolVariable('cuda', 'Enable GPU code with CUDA (requires thrust)', False),                 ['dudley','finley','ripley','speckley']),
   ('thrust_prefix', 'Prefix/Paths to NVidia thrust installation', default_prefix),  
117  # Advanced settings  # Advanced settings
118    #dudley_assemble_flags = -funroll-loops      to actually do something    #dudley_assemble_flags = -funroll-loops      to actually do something
119    ('dudley_assemble_flags', 'compiler flags for some dudley optimisations', ''),    ('dudley_assemble_flags', 'compiler flags for some dudley optimisations', ''),
# Line 127  vars.AddVariables( Line 124  vars.AddVariables(
124    ('env_export', 'Environment variables to be passed to tools',[]),    ('env_export', 'Environment variables to be passed to tools',[]),
125    EnumVariable('forcelazy', 'For testing use only - set the default value for autolazy', 'leave_alone', allowed_values=('leave_alone', 'on', 'off')),    EnumVariable('forcelazy', 'For testing use only - set the default value for autolazy', 'leave_alone', allowed_values=('leave_alone', 'on', 'off')),
126    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')),
   # finer control over library building, intel aggressive global optimisation  
   # works with dynamic libraries on windows.  
127    ('build_shared', 'Build dynamic libraries only', False),    ('build_shared', 'Build dynamic libraries only', 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),    ('SVN_VERSION', 'Do not use from options file', -2),
131    ('pythoncmd', 'which python to compile with','python'),    ('pythoncmd', 'which python to compile with','python'),
132    ('usepython3', 'Is this a python3 build? (experimental)', False),    ('usepython3', 'Is this a python3 build? (experimental)', False),
   ('longindices', 'use long indices (for very large matrices)', False),  
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('longindices', 'use long indices (for very large matrices)', False),
137    BoolVariable('BADPYTHONMACROS','Extra \#include to get around a python bug.', True),    BoolVariable('BADPYTHONMACROS','Extra \#include to get around a python bug.', True),
138    BoolVariable('compressed_files','Enables reading from compressed binary files', True),    BoolVariable('compressed_files','Enables reading from compressed binary files', True),
139    ('compression_libs', 'Compression libraries to link with', ['boost_iostreams'])    ('compression_libs', 'Compression libraries to link with', ['boost_iostreams']),
140      BoolVariable('papi', 'Enable PAPI', False),
141      ('papi_prefix', 'Prefix/Paths to PAPI installation', default_prefix),
142      ('papi_libs', 'PAPI libraries to link with', ['papi']),
143      BoolVariable('papi_instrument_solver', 'Use PAPI to instrument each iteration of the solver', False)
144  )  )
145    
146  ##################### Create environment and help text #######################  ##################### Create environment and help text #######################
# Line 249  if cc_name == 'icpc': Line 248  if cc_name == 'icpc':
248      omp_ldflags = "-openmp -openmp_report=1"      omp_ldflags = "-openmp -openmp_report=1"
249      fatalwarning = "-Werror"      fatalwarning = "-Werror"
250  elif cc_name[:3] == 'g++':  elif cc_name[:3] == 'g++':
251      # GNU C on any system      # GNU C++ on any system
252      # note that -ffast-math is not used because it breaks isnan(),      # note that -ffast-math is not used because it breaks isnan(),
253      # see mantis #691      # see mantis #691
254      cc_flags     = "-pedantic -Wall -fPIC -Wno-unknown-pragmas -Wno-sign-compare -Wno-system-headers -Wno-long-long -Wno-strict-aliasing -finline-functions"      cc_flags     = "-pedantic -Wall -fPIC -Wno-unknown-pragmas -Wno-sign-compare -Wno-system-headers -Wno-long-long -Wno-strict-aliasing -finline-functions"
255      cc_optim     = "-O3"      cc_optim     = "-O3"
256      cc_debug     = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK --param=max-vartrack-size=90000000" #avoids vartrack limit being exceeded with escriptcpp.cpp      #max-vartrack-size: avoid vartrack limit being exceeded with escriptcpp.cpp
257        cc_debug     = "-g3 -O0 -D_GLIBCXX_DEBUG -DDOASSERT -DDOPROF -DBOUNDS_CHECK --param=max-vartrack-size=100000000"
258      omp_flags    = "-fopenmp"      omp_flags    = "-fopenmp"
259      omp_ldflags  = "-fopenmp"      omp_ldflags  = "-fopenmp"
260      fatalwarning = "-Werror"      fatalwarning = "-Werror"
# Line 364  if IS_WINDOWS: Line 364  if IS_WINDOWS:
364          env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])          env.Append(CPPDEFINES = ['ESYSUTILS_STATIC_LIB'])
365          env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])          env.Append(CPPDEFINES = ['PASO_STATIC_LIB'])
366    
 # VSL random numbers  
 env['buildvars']['vsl_random']=int(env['vsl_random'])  
 if env['vsl_random']:  
     env.Append(CPPDEFINES = ['MKLRANDOM'])  
   
367  env['IS_WINDOWS']=IS_WINDOWS  env['IS_WINDOWS']=IS_WINDOWS
368    
369  ###################### Copy required environment vars ########################  ###################### Copy required environment vars ########################
# Line 516  Export( Line 511  Export(
511    ]    ]
512  )  )
513    
514    #do not auto build
515  env.SConscript(dirs = ['tools/escriptconvert'], variant_dir='$BUILD_DIR/$PLATFORM/tools/escriptconvert', duplicate=0)  env.SConscript(dirs = ['tools/escriptconvert'], variant_dir='$BUILD_DIR/$PLATFORM/tools/escriptconvert', duplicate=0)
516  env.SConscript(dirs = ['paso/src'], variant_dir='$BUILD_DIR/$PLATFORM/paso', duplicate=0)  env.SConscript(dirs = ['paso/src'], variant_dir='$BUILD_DIR/$PLATFORM/paso', duplicate=0)
517  env.SConscript(dirs = ['weipa/src'], variant_dir='$BUILD_DIR/$PLATFORM/weipa', duplicate=0)  env.SConscript(dirs = ['weipa/src'], variant_dir='$BUILD_DIR/$PLATFORM/weipa', duplicate=0)
# Line 525  env.SConscript(dirs = ['cusplibrary']) Line 521  env.SConscript(dirs = ['cusplibrary'])
521    
522  #This will pull in the escriptcore/py_src and escriptcore/test  #This will pull in the escriptcore/py_src and escriptcore/test
523  env.SConscript(dirs = ['escriptcore/src'], variant_dir='$BUILD_DIR/$PLATFORM/escriptcore', duplicate=0)  env.SConscript(dirs = ['escriptcore/src'], variant_dir='$BUILD_DIR/$PLATFORM/escriptcore', duplicate=0)
 #env.SConscript(dirs = ['escript/test'], variant_dir='$BUILD_DIR/$PLATFORM/escript/test', duplicate=0)  
524  env.SConscript(dirs = ['esysUtils/src'], variant_dir='$BUILD_DIR/$PLATFORM/esysUtils', duplicate=0)  env.SConscript(dirs = ['esysUtils/src'], variant_dir='$BUILD_DIR/$PLATFORM/esysUtils', duplicate=0)
525  env.SConscript(dirs = ['pasowrap/src'], variant_dir='$BUILD_DIR/$PLATFORM/pasowrap', duplicate=0)  env.SConscript(dirs = ['pasowrap/src'], variant_dir='$BUILD_DIR/$PLATFORM/pasowrap', duplicate=0)
526  env.SConscript(dirs = ['dudley/src'], variant_dir='$BUILD_DIR/$PLATFORM/dudley', duplicate=0)  if 'dudley' in env['domains']:
527  env.SConscript(dirs = ['finley/src'], variant_dir='$BUILD_DIR/$PLATFORM/finley', duplicate=0)      env.SConscript(dirs = ['dudley/src'], variant_dir='$BUILD_DIR/$PLATFORM/dudley', duplicate=0)
528  env.SConscript(dirs = ['ripley/src'], variant_dir='$BUILD_DIR/$PLATFORM/ripley', duplicate=0)  if 'finley' in env['domains']:
529  env.SConscript(dirs = ['speckley/src'], variant_dir='$BUILD_DIR/$PLATFORM/speckley', duplicate=0)      env.SConscript(dirs = ['finley/src'], variant_dir='$BUILD_DIR/$PLATFORM/finley', duplicate=0)
530    if 'ripley' in env['domains']:
531        env.SConscript(dirs = ['ripley/src'], variant_dir='$BUILD_DIR/$PLATFORM/ripley', duplicate=0)
532    if 'speckley' in env['domains']:
533        env.SConscript(dirs = ['speckley/src'], variant_dir='$BUILD_DIR/$PLATFORM/speckley', duplicate=0)
534  env.SConscript(dirs = ['downunder/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/downunder', duplicate=0)  env.SConscript(dirs = ['downunder/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/downunder', duplicate=0)
535  env.SConscript(dirs = ['modellib/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/modellib', duplicate=0)  env.SConscript(dirs = ['modellib/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/modellib', duplicate=0)
536  env.SConscript(dirs = ['pycad/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/pycad', duplicate=0)  env.SConscript(dirs = ['pycad/py_src'], variant_dir='$BUILD_DIR/$PLATFORM/pycad', duplicate=0)
# Line 565  env.Alias('install_escript', ['build_esc Line 564  env.Alias('install_escript', ['build_esc
564  env.Alias('build_pasowrap', ['install_pasowrap_headers', 'build_pasowrap_lib', 'build_pasowrapcpp_lib'])  env.Alias('build_pasowrap', ['install_pasowrap_headers', 'build_pasowrap_lib', 'build_pasowrapcpp_lib'])
565  env.Alias('install_pasowrap', ['build_pasowrap', 'install_pasowrap_lib', 'install_pasowrapcpp_lib', 'install_pasowrap_py'])  env.Alias('install_pasowrap', ['build_pasowrap', 'install_pasowrap_lib', 'install_pasowrapcpp_lib', 'install_pasowrap_py'])
566    
567  env.Alias('build_dudley', ['install_dudley_headers', 'build_dudley_lib', 'build_dudleycpp_lib'])  if 'dudley' in env['domains']:
568  env.Alias('install_dudley', ['build_dudley', 'install_dudley_lib', 'install_dudleycpp_lib', 'install_dudley_py'])      env.Alias('build_dudley', ['install_dudley_headers', 'build_dudley_lib', 'build_dudleycpp_lib'])
569        env.Alias('install_dudley', ['build_dudley', 'install_dudley_lib', 'install_dudleycpp_lib', 'install_dudley_py'])
570  env.Alias('build_finley', ['install_finley_headers', 'build_finley_lib', 'build_finleycpp_lib'])  
571  env.Alias('install_finley', ['build_finley', 'install_finley_lib', 'install_finleycpp_lib', 'install_finley_py'])  if 'finley' in env['domains']:
572        env.Alias('build_finley', ['install_finley_headers', 'build_finley_lib', 'build_finleycpp_lib'])
573  env.Alias('build_ripley', ['install_cusp_headers', 'install_ripley_headers', 'build_ripley_lib', 'build_ripleycpp_lib'])      env.Alias('install_finley', ['build_finley', 'install_finley_lib', 'install_finleycpp_lib', 'install_finley_py'])
574  env.Alias('install_ripley', ['build_ripley', 'install_ripley_lib', 'install_ripleycpp_lib', 'install_ripley_py'])  
575    if 'ripley' in env['domains']:
576  env.Alias('build_speckley', ['install_speckley_headers', 'build_speckley_lib', 'build_speckleycpp_lib'])      env.Alias('build_ripley', ['install_cusp_headers', 'install_ripley_headers', 'build_ripley_lib', 'build_ripleycpp_lib'])
577  env.Alias('install_speckley', ['build_speckley', 'install_speckley_lib', 'install_speckleycpp_lib', 'install_speckley_py'])      env.Alias('install_ripley', ['build_ripley', 'install_ripley_lib', 'install_ripleycpp_lib', 'install_ripley_py'])
578    
579    if 'speckley' in env['domains']:
580        env.Alias('build_speckley', ['install_speckley_headers', 'build_speckley_lib', 'build_speckleycpp_lib'])
581        env.Alias('install_speckley', ['build_speckley', 'install_speckley_lib', 'install_speckleycpp_lib', 'install_speckley_py'])
582    
583  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'])
584  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'])
# Line 589  build_all_list += ['build_esysUtils'] Line 592  build_all_list += ['build_esysUtils']
592  build_all_list += ['build_paso']  build_all_list += ['build_paso']
593  build_all_list += ['build_escript']  build_all_list += ['build_escript']
594  build_all_list += ['build_pasowrap']  build_all_list += ['build_pasowrap']
595  build_all_list += ['build_dudley']  if 'dudley' in env['domains']: build_all_list += ['build_dudley']
596  build_all_list += ['build_finley']  if 'finley' in env['domains']: build_all_list += ['build_finley']
597  build_all_list += ['build_ripley']  if 'ripley' in env['domains']: build_all_list += ['build_ripley']
598  build_all_list += ['build_speckley']  if 'speckley' in env['domains']: build_all_list += ['build_speckley']
599  build_all_list += ['build_weipa']  build_all_list += ['build_weipa']
600  if not IS_WINDOWS: build_all_list += ['build_escriptreader']  if not IS_WINDOWS and 'finley' in env['domains']:
601        build_all_list += ['build_escriptreader']
602  if env['usempi']:   build_all_list += ['build_pythonMPI']  if env['usempi']:   build_all_list += ['build_pythonMPI']
 build_all_list += ['build_escriptconvert']  
603  env.Alias('build_all', build_all_list)  env.Alias('build_all', build_all_list)
604    
605  install_all_list = []  install_all_list = []
# Line 605  install_all_list += ['install_esysUtils' Line 608  install_all_list += ['install_esysUtils'
608  install_all_list += ['install_paso']  install_all_list += ['install_paso']
609  install_all_list += ['install_escript']  install_all_list += ['install_escript']
610  install_all_list += ['install_pasowrap']  install_all_list += ['install_pasowrap']
611  install_all_list += ['install_dudley']  if 'dudley' in env['domains']: install_all_list += ['install_dudley']
612  install_all_list += ['install_finley']  if 'finley' in env['domains']: install_all_list += ['install_finley']
613  install_all_list += ['install_ripley']  if 'ripley' in env['domains']: install_all_list += ['install_ripley']
614  install_all_list += ['install_speckley']  if 'speckley' in env['domains']: install_all_list += ['install_speckley']
615  install_all_list += ['install_weipa']  install_all_list += ['install_weipa']
616  if not IS_WINDOWS: install_all_list += ['install_escriptreader']  if not IS_WINDOWS and 'finley' in env['domains']:
617        install_all_list += ['install_escriptreader']
618  install_all_list += ['install_downunder_py']  install_all_list += ['install_downunder_py']
619  install_all_list += ['install_modellib_py']  install_all_list += ['install_modellib_py']
620  install_all_list += ['install_pycad_py']  install_all_list += ['install_pycad_py']
621  if env['usempi']:   install_all_list += ['install_pythonMPI']  if env['usempi']:   install_all_list += ['install_pythonMPI']
 install_all_list += ['install_escriptconvert']  
622  env.Alias('install_all', install_all_list)  env.Alias('install_all', install_all_list)
623    
624  # Default target is install  # Default target is install
# Line 648  if not IS_WINDOWS: Line 651  if not IS_WINDOWS:
651      generateTestScripts(env, TestGroups)      generateTestScripts(env, TestGroups)
652    
653    
   
654  ######################## Summarize our environment ###########################  ######################## Summarize our environment ###########################
655  def print_summary():  def print_summary():
656      print("")      print("")
# Line 664  def print_summary(): Line 666  def print_summary():
666      if env['usempi']:      if env['usempi']:
667          print("             MPI:  YES (flavour: %s)"%env['mpi'])          print("             MPI:  YES (flavour: %s)"%env['mpi'])
668      else:      else:
669          print("             MPI:  DISABLED")          print("             MPI:  NO")
670      if env['uselapack']:      if env['uselapack']:
671          print("          LAPACK:  YES (flavour: %s)"%env['lapack'])          print("          LAPACK:  YES (flavour: %s)"%env['lapack'])
672      else:      else:
673          print("          LAPACK:  DISABLED")          print("          LAPACK:  NO")
674      if env['cuda']:      if env['cuda']:
675          print("            CUDA:  YES (nvcc: %s)"%env['nvcc_version'])          print("            CUDA:  YES (nvcc: %s)"%env['nvcc_version'])
676      else:      else:
677          print("            CUDA:  DISABLED")          print("            CUDA:  NO")
678      d_list=[]      d_list=[]
679      e_list=[]      e_list=[]
680      for i in 'debug','openmp','boomeramg','gdal','mkl','netcdf','papi','parmetis','pyproj','scipy','silo','sympy','umfpack','visit','vsl_random':      for i in 'debug','openmp','boomeramg','gdal','mkl','netcdf','papi','parmetis','pyproj','scipy','silo','sympy','umfpack','visit':
681          if env[i]: e_list.append(i)          if env[i]: e_list.append(i)
682          else: d_list.append(i)          else: d_list.append(i)
683      for i in e_list:      for i in e_list:
684          print("%16s:  YES"%i)          print("%16s:  YES"%i)
685      for i in d_list:      for i in d_list:
686          print("%16s:  DISABLED"%i)          print("%16s:  NO"%i)
687      if env['cppunit']:      if env['cppunit']:
688          print("         CppUnit:  FOUND")          print("         CppUnit:  YES")
689      else:      else:
690          print("         CppUnit:  NOT FOUND")          print("         CppUnit:  NO")
691      if env['gmsh']=='m':      if env['gmsh']=='m':
692          print("            gmsh:  FOUND, MPI-ENABLED")          print("            gmsh:  YES, MPI-ENABLED")
693      elif env['gmsh']=='s':      elif env['gmsh']=='s':
694          print("            gmsh:  FOUND")          print("            gmsh:  YES")
695      else:      else:
696          print("            gmsh:  NOT FOUND")          print("            gmsh:  NO")
697      print(    "            gzip:  " + ("YES" if env['compressed_files'] else "NO"))      print(    "            gzip:  " + ("YES" if env['compressed_files'] else "NO"))
698    
699      if ((fatalwarning != '') and (env['werror'])):      if ((fatalwarning != '') and (env['werror'])):

Legend:
Removed from v.5183  
changed lines
  Added in v.5250

  ViewVC Help
Powered by ViewVC 1.1.26