124 |
('mpi_path', 'Path to MPI includes', '/usr/include'), |
('mpi_path', 'Path to MPI includes', '/usr/include'), |
125 |
('mpi_run', 'mpirun name' , 'mpiexec -np 1'), |
('mpi_run', 'mpirun name' , 'mpiexec -np 1'), |
126 |
('mpi_lib_path', 'Path to MPI libs (needs to be added to the LD_LIBRARY_PATH)', usr_lib), |
('mpi_lib_path', 'Path to MPI libs (needs to be added to the LD_LIBRARY_PATH)', usr_lib), |
127 |
('mpi_libs', 'MPI libraries to link with (needs to be shared!)', ['mpich' , 'pthread', 'rt']), |
('mpi_libs', 'MPI libraries to link with (needs to be shared!)', []), |
128 |
('mpi_flavour','Type of MPI execution environment','none'), |
('mpi_flavour','Type of MPI execution environment','none'), |
129 |
# ParMETIS |
# ParMETIS |
130 |
BoolVariable('useparmetis', 'Compile parallel version using ParMETIS', 'yes'), |
BoolVariable('useparmetis', 'Compile parallel version using ParMETIS', 'yes'), |
161 |
('blas_path', 'Path to BLAS includes', '/usr/include/suitesparse'), |
('blas_path', 'Path to BLAS includes', '/usr/include/suitesparse'), |
162 |
('blas_lib_path', 'Path to BLAS libs', usr_lib), |
('blas_lib_path', 'Path to BLAS libs', usr_lib), |
163 |
('blas_libs', 'BLAS libraries to link with', ['blas']), |
('blas_libs', 'BLAS libraries to link with', ['blas']), |
164 |
|
#Lapack options |
165 |
|
BoolVariable('uselapack','switch on/off use of Lapack','no'), |
166 |
|
('lapack_path', 'Path to Lapack includes','/usr/include'), |
167 |
|
('lapack_lib_path', 'Path to Lapack libs', usr_lib), |
168 |
|
('lapack_libs', 'Lapack libraries to link with', []), |
169 |
|
('lapack_type', '{clapack,mkl}','clapack'), |
170 |
# An option for specifying the compiler tools set (see windows branch). |
# An option for specifying the compiler tools set (see windows branch). |
171 |
('tools_names', 'allow control over the tools in the env setup', ['intelc']), |
('tools_names', 'allow control over the tools in the env setup', ['intelc']), |
172 |
# finer control over library building, intel aggressive global optimisation |
# finer control over library building, intel aggressive global optimisation |
243 |
cc_debug = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK" |
cc_debug = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK" |
244 |
omp_optim = "-fopenmp" |
omp_optim = "-fopenmp" |
245 |
omp_debug = "-fopenmp" |
omp_debug = "-fopenmp" |
246 |
omp_libs = ['gomp'] |
omp_libs = [] |
247 |
pedantic = "-pedantic-errors -Wno-long-long" |
pedantic = "-pedantic-errors -Wno-long-long" |
248 |
fatalwarning = "-Werror" |
fatalwarning = "-Werror" |
249 |
sysheaderopt = "-isystem " |
sysheaderopt = "-isystem " |
549 |
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 |
550 |
if env['usemkl'] and not conf.CheckFunc('pardiso'): env['usemkl'] = 0 |
if env['usemkl'] and not conf.CheckFunc('pardiso'): env['usemkl'] = 0 |
551 |
|
|
552 |
|
|
553 |
# Add MKL to environment env if it was found |
# Add MKL to environment env if it was found |
554 |
if env['usemkl']: |
if env['usemkl']: |
555 |
env = conf.Finish() |
env = conf.Finish() |
604 |
|
|
605 |
# Add the path to Silo to environment env if it was found. |
# Add the path to Silo to environment env if it was found. |
606 |
# Note that we do not add the libs since they are only needed for the |
# Note that we do not add the libs since they are only needed for the |
607 |
# escriptreader library and tools. |
# escriptexport library and tools. |
608 |
if env['usesilo']: |
if env['usesilo']: |
609 |
env.AppendUnique(CPPPATH = [env['silo_path']]) |
env.AppendUnique(CPPPATH = [env['silo_path']]) |
610 |
env.AppendUnique(LIBPATH = [env['silo_lib_path']]) |
env.AppendUnique(LIBPATH = [env['silo_lib_path']]) |
611 |
env.Append(CPPDEFINES = ['HAVE_SILO']) |
env.Append(CPPDEFINES = ['USE_SILO']) |
612 |
|
|
613 |
|
########### Lapack (optional) ################################## |
614 |
|
|
615 |
|
|
616 |
|
if env['uselapack']: |
617 |
|
env.AppendUnique(CPPDEFINES='USE_LAPACK') |
618 |
|
env.AppendUnique(CPPPATH = [env['lapack_path']]) |
619 |
|
env.AppendUnique(LIBPATH =[env['lapack_lib_path']]) |
620 |
|
|
621 |
|
env.Append(LIBPATH = '/usr/lib/atlas') |
622 |
|
env.Append(LIBS = [env['lapack_libs']]) |
623 |
|
if env['lapack_type']=='mkl': |
624 |
|
if not env['usemkl']: |
625 |
|
env['uselapack']=0 |
626 |
|
print "mkl_lapack requires mkl" |
627 |
|
else: |
628 |
|
env.AppendUnique(CPPDEFINES='MKL_LAPACK') |
629 |
|
|
630 |
|
|
631 |
|
|
632 |
############ Add the compiler flags ############################ |
############ Add the compiler flags ############################ |
633 |
|
|
752 |
else: print " Not using ParMETIS (requires MPI)" |
else: print " Not using ParMETIS (requires MPI)" |
753 |
if env['usepapi']: print " Using PAPI" |
if env['usepapi']: print " Using PAPI" |
754 |
else: print " Not using PAPI" |
else: print " Not using PAPI" |
755 |
|
if env['uselapack']: print " Using Lapack" |
756 |
|
else: print " Not using Lapack" |
757 |
if env['usedebug']: print " Compiling for debug" |
if env['usedebug']: print " Compiling for debug" |
758 |
else: print " Not compiling for debug" |
else: print " Not compiling for debug" |
759 |
print " Installing in", prefix |
print " Installing in", prefix |
787 |
) |
) |
788 |
|
|
789 |
env.SConscript(dirs = ['tools/CppUnitTest/src'], build_dir='build/$PLATFORM/tools/CppUnitTest', duplicate=0) |
env.SConscript(dirs = ['tools/CppUnitTest/src'], build_dir='build/$PLATFORM/tools/CppUnitTest', duplicate=0) |
790 |
env.SConscript(dirs = ['tools/libescriptreader/src'], build_dir='build/$PLATFORM/tools/libescriptreader', duplicate=0) |
env.SConscript(dirs = ['tools/escriptconvert'], build_dir='build/$PLATFORM/tools/escriptconvert', duplicate=0) |
791 |
env.SConscript(dirs = ['paso/src'], build_dir='build/$PLATFORM/paso', duplicate=0) |
env.SConscript(dirs = ['paso/src'], build_dir='build/$PLATFORM/paso', duplicate=0) |
792 |
|
env.SConscript(dirs = ['dataexporter/src'], build_dir='build/$PLATFORM/dataexporter', duplicate=0) |
793 |
env.SConscript(dirs = ['escript/src'], build_dir='build/$PLATFORM/escript', duplicate=0) |
env.SConscript(dirs = ['escript/src'], build_dir='build/$PLATFORM/escript', duplicate=0) |
794 |
env.SConscript(dirs = ['esysUtils/src'], build_dir='build/$PLATFORM/esysUtils', duplicate=0) |
env.SConscript(dirs = ['esysUtils/src'], build_dir='build/$PLATFORM/esysUtils', duplicate=0) |
795 |
env.SConscript(dirs = ['finley/src'], build_dir='build/$PLATFORM/finley', duplicate=0) |
env.SConscript(dirs = ['finley/src'], build_dir='build/$PLATFORM/finley', duplicate=0) |
821 |
############### Record python interpreter version ############## |
############### Record python interpreter version ############## |
822 |
|
|
823 |
if not IS_WINDOWS_PLATFORM: |
if not IS_WINDOWS_PLATFORM: |
824 |
|
|
825 |
versionstring="Python "+str(sys.version_info[0])+"."+str(sys.version_info[1])+"."+str(sys.version_info[2]) |
versionstring="Python "+str(sys.version_info[0])+"."+str(sys.version_info[1])+"."+str(sys.version_info[2]) |
826 |
|
if sys.version_info[4] >0 : versionstring+="rc%s"%sys.version_info[4] |
827 |
os.system("echo "+versionstring+" > "+os.path.join(env['libinstall'],"pyversion")) |
os.system("echo "+versionstring+" > "+os.path.join(env['libinstall'],"pyversion")) |
828 |
|
|
829 |
############## Populate the buildvars file ##################### |
############## Populate the buildvars file ##################### |
860 |
out+="n" |
out+="n" |
861 |
buildvars.write(out+"\n") |
buildvars.write(out+"\n") |
862 |
buildvars.write("mpi_flavour="+env['mpi_flavour']+'\n') |
buildvars.write("mpi_flavour="+env['mpi_flavour']+'\n') |
863 |
|
out="lapack=" |
864 |
|
if env['uselapack']: |
865 |
|
out+="y" |
866 |
|
else: |
867 |
|
out+="n" |
868 |
|
out+="\nsilo=" |
869 |
|
if env['usesilo']: |
870 |
|
out+="y" |
871 |
|
else: |
872 |
|
out+="n" |
873 |
|
buildvars.write(out+"\n") |
874 |
buildvars.close() |
buildvars.close() |
875 |
|
|
876 |
|
|
886 |
env.Alias('build_paso', ['target_install_paso_headers', 'target_paso_a']) |
env.Alias('build_paso', ['target_install_paso_headers', 'target_paso_a']) |
887 |
env.Alias('install_paso', ['build_paso', 'target_install_paso_a']) |
env.Alias('install_paso', ['build_paso', 'target_install_paso_a']) |
888 |
|
|
889 |
|
env.Alias('build_dataexporter', ['target_install_escriptexport_headers', 'target_escriptexport_so', 'target_escriptexportcpp_so']) |
890 |
|
env.Alias('install_dataexporter', ['build_dataexporter', 'target_install_escriptexport_so', 'target_install_escriptexportcpp_so', 'target_install_dataexporter_py']) |
891 |
|
|
892 |
env.Alias('build_escript', ['target_install_escript_headers', 'target_escript_so', 'target_escriptcpp_so']) |
env.Alias('build_escript', ['target_install_escript_headers', 'target_escript_so', 'target_escriptcpp_so']) |
893 |
env.Alias('install_escript', ['build_escript', 'target_install_escript_so', 'target_install_escriptcpp_so', 'target_install_escript_py']) |
env.Alias('install_escript', ['build_escript', 'target_install_escript_so', 'target_install_escriptcpp_so', 'target_install_escript_py']) |
894 |
|
|
899 |
build_all_list = [] |
build_all_list = [] |
900 |
build_all_list += ['build_esysUtils'] |
build_all_list += ['build_esysUtils'] |
901 |
build_all_list += ['build_paso'] |
build_all_list += ['build_paso'] |
902 |
|
build_all_list += ['build_dataexporter'] |
903 |
build_all_list += ['build_escript'] |
build_all_list += ['build_escript'] |
904 |
build_all_list += ['build_finley'] |
build_all_list += ['build_finley'] |
905 |
if env['usempi']: build_all_list += ['target_pythonMPI_exe'] |
if env['usempi']: build_all_list += ['target_pythonMPI_exe'] |
906 |
#if not IS_WINDOWS_PLATFORM: build_all_list += ['target_escript_wrapper'] |
#if not IS_WINDOWS_PLATFORM: build_all_list += ['target_escript_wrapper'] |
907 |
if env['usesilo']: build_all_list += ['target_escript2silo'] |
if env['usesilo']: build_all_list += ['target_escriptconvert'] |
908 |
env.Alias('build_all', build_all_list) |
env.Alias('build_all', build_all_list) |
909 |
|
|
910 |
install_all_list = [] |
install_all_list = [] |
911 |
install_all_list += ['target_init'] |
install_all_list += ['target_init'] |
912 |
install_all_list += ['install_esysUtils'] |
install_all_list += ['install_esysUtils'] |
913 |
install_all_list += ['install_paso'] |
install_all_list += ['install_paso'] |
914 |
|
install_all_list += ['install_dataexporter'] |
915 |
install_all_list += ['install_escript'] |
install_all_list += ['install_escript'] |
916 |
install_all_list += ['install_finley'] |
install_all_list += ['install_finley'] |
917 |
install_all_list += ['target_install_pyvisi_py'] |
install_all_list += ['target_install_pyvisi_py'] |
919 |
install_all_list += ['target_install_pycad_py'] |
install_all_list += ['target_install_pycad_py'] |
920 |
if env['usempi']: install_all_list += ['target_install_pythonMPI_exe'] |
if env['usempi']: install_all_list += ['target_install_pythonMPI_exe'] |
921 |
#if not IS_WINDOWS_PLATFORM: install_all_list += ['target_install_escript_wrapper'] |
#if not IS_WINDOWS_PLATFORM: install_all_list += ['target_install_escript_wrapper'] |
922 |
if env['usesilo']: install_all_list += ['target_install_escript2silo'] |
if env['usesilo']: install_all_list += ['target_install_escriptconvert'] |
923 |
install_all_list += ['remember_options'] |
install_all_list += ['remember_options'] |
924 |
env.Alias('install_all', install_all_list) |
env.Alias('install_all', install_all_list) |
925 |
|
|
934 |
env.Alias('all_tests', ['install_all', 'target_install_cppunittest_a', 'run_tests', 'py_tests']) |
env.Alias('all_tests', ['install_all', 'target_install_cppunittest_a', 'run_tests', 'py_tests']) |
935 |
env.Alias('build_full',['install_all','build_tests','build_py_tests']) |
env.Alias('build_full',['install_all','build_tests','build_py_tests']) |
936 |
|
|
937 |
|
|
938 |
############ Targets to build the documentation ################ |
############ Targets to build the documentation ################ |
939 |
|
|
940 |
env.Alias('api_epydoc','install_all') |
env.Alias('api_epydoc','install_all') |
961 |
if not os.path.isfile(os.path.join(env['bininstall'],'escript')): |
if not os.path.isfile(os.path.join(env['bininstall'],'escript')): |
962 |
print "Copying escript wrapper" |
print "Copying escript wrapper" |
963 |
shutil.copy("bin/escript",os.path.join(env['bininstall'],'escript')) |
shutil.copy("bin/escript",os.path.join(env['bininstall'],'escript')) |
964 |
|
|
965 |
|
############ Targets to build PasoTests suite ################ |
966 |
|
|
967 |
|
env.Alias('build_PasoTests','build/'+build_platform+'/paso/profiling/PasoTests') |