1 |
|
|
2 |
######################################################## |
######################################################## |
3 |
# |
# |
4 |
# Copyright (c) 2003-2008 by University of Queensland |
# Copyright (c) 2003-2010 by University of Queensland |
5 |
# Earth Systems Science Computational Center (ESSCC) |
# Earth Systems Science Computational Center (ESSCC) |
6 |
# http://www.uq.edu.au/esscc |
# http://www.uq.edu.au/esscc |
7 |
# |
# |
16 |
EnsurePythonVersion(2,3) |
EnsurePythonVersion(2,3) |
17 |
|
|
18 |
import sys, os, re, socket, platform, stat |
import sys, os, re, socket, platform, stat |
19 |
|
# For copy() |
20 |
|
import shutil |
21 |
|
|
22 |
# Add our extensions |
# Add our extensions |
23 |
if os.path.isdir('scons'): sys.path.append('scons') |
if os.path.isdir('scons'): sys.path.append('scons') |
35 |
|
|
36 |
prefix = ARGUMENTS.get('prefix', Dir('#.').abspath) |
prefix = ARGUMENTS.get('prefix', Dir('#.').abspath) |
37 |
|
|
38 |
|
#Holds names of variables from the calling environment which need to be passed |
39 |
|
#to tools |
40 |
|
env_export=[] |
41 |
|
|
42 |
#Determine where to read options from use: |
#Determine where to read options from use: |
43 |
#1. command line |
#1. command line |
44 |
#2. scons/<hostname>_options.py |
#2. scons/<hostname>_options.py |
45 |
#3. name as part of a cluster |
#3. name as part of a cluster |
46 |
options_file=ARGUMENTS.get('options_file', None) |
options_file=ARGUMENTS.get('options_file', None) |
47 |
|
effective_hostname=socket.gethostname().split('.')[0] |
48 |
if not options_file: |
if not options_file: |
49 |
hostname = re.sub("[^0-9a-zA-Z]", "_", socket.gethostname().split('.')[0]) |
mangledhostname = re.sub("[^0-9a-zA-Z]", "_", effective_hostname) |
50 |
options_file = os.path.join("scons",hostname+"_options.py") |
options_file = os.path.join("scons",mangledhostname+"_options.py") |
51 |
#If there is no options file with that name see if there is a substitute |
#If there is no options file with that name see if there is a substitute |
52 |
if not os.path.isfile(options_file): |
if not os.path.isfile(options_file): |
53 |
tmp = scons_extensions.effectiveName(hostname) |
effective_hostname = scons_extensions.effectiveName(effective_hostname) |
54 |
options_file = os.path.join("scons",tmp+"_options.py") |
mangledhostname = re.sub("[^0-9a-zA-Z]", "_", effective_hostname) |
55 |
|
options_file = os.path.join("scons",mangledhostname+"_options.py") |
56 |
|
|
57 |
if not os.path.isfile(options_file): |
if not os.path.isfile(options_file): |
58 |
print "Options file not found (expected '%s')" % options_file |
print "Options file not found (expected '%s')" % options_file |
86 |
BoolVariable('usedebug', 'Do you want a debug build?', 'no'), |
BoolVariable('usedebug', 'Do you want a debug build?', 'no'), |
87 |
BoolVariable('usevtk', 'Do you want to use VTK?', 'yes'), |
BoolVariable('usevtk', 'Do you want to use VTK?', 'yes'), |
88 |
('options_file', 'File of paths/options. Default: scons/<hostname>_options.py', options_file), |
('options_file', 'File of paths/options. Default: scons/<hostname>_options.py', options_file), |
89 |
|
('cc', 'path to C compiler', 'DEFAULT'), |
90 |
|
('cxx', 'path to C++ compiler', 'DEFAULT'), |
91 |
('win_cc_name', 'windows C compiler name if needed', 'msvc'), |
('win_cc_name', 'windows C compiler name if needed', 'msvc'), |
92 |
# The strings -DDEFAULT_ get replaced by scons/<hostname>_options.py or by defaults below |
# The strings -DDEFAULT_ get replaced by scons/<hostname>_options.py or by defaults below |
93 |
('cc_flags', 'C compiler flags to use', '-DEFAULT_1'), |
('cc_flags', 'C compiler flags to use', '-DEFAULT_1'), |
104 |
BoolVariable('usepedantic', 'Compile with -pedantic if using gcc', 'no'), |
BoolVariable('usepedantic', 'Compile with -pedantic if using gcc', 'no'), |
105 |
BoolVariable('usewarnings','Compile with warnings as errors if using gcc','yes'), |
BoolVariable('usewarnings','Compile with warnings as errors if using gcc','yes'), |
106 |
('forcelazy','for testing use only - set the default value for autolazy','leave_alone'), |
('forcelazy','for testing use only - set the default value for autolazy','leave_alone'), |
107 |
|
('forcecollres','for testing use only - set the default value for force resolving collective ops','leave_alone'), |
108 |
# Python |
# Python |
109 |
('python_path', 'Path to Python includes', '/usr/include/'+python_version), |
('python_path', 'Path to Python includes', '/usr/include/'+python_version), |
110 |
('python_lib_path', 'Path to Python libs', usr_lib), |
('python_lib_path', 'Path to Python libs', usr_lib), |
126 |
('mpi_path', 'Path to MPI includes', '/usr/include'), |
('mpi_path', 'Path to MPI includes', '/usr/include'), |
127 |
('mpi_run', 'mpirun name' , 'mpiexec -np 1'), |
('mpi_run', 'mpirun name' , 'mpiexec -np 1'), |
128 |
('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), |
129 |
('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!)', []), |
130 |
('mpi_flavour','Type of MPI execution environment','none'), |
('mpi_flavour','Type of MPI execution environment','none'), |
131 |
# ParMETIS |
# ParMETIS |
132 |
BoolVariable('useparmetis', 'Compile parallel version using ParMETIS', 'yes'), |
BoolVariable('useparmetis', 'Compile parallel version using ParMETIS', 'yes'), |
163 |
('blas_path', 'Path to BLAS includes', '/usr/include/suitesparse'), |
('blas_path', 'Path to BLAS includes', '/usr/include/suitesparse'), |
164 |
('blas_lib_path', 'Path to BLAS libs', usr_lib), |
('blas_lib_path', 'Path to BLAS libs', usr_lib), |
165 |
('blas_libs', 'BLAS libraries to link with', ['blas']), |
('blas_libs', 'BLAS libraries to link with', ['blas']), |
166 |
|
#Lapack options |
167 |
|
BoolVariable('uselapack','switch on/off use of Lapack','no'), |
168 |
|
('lapack_path', 'Path to Lapack includes','/usr/include'), |
169 |
|
('lapack_lib_path', 'Path to Lapack libs', usr_lib), |
170 |
|
('lapack_libs', 'Lapack libraries to link with', []), |
171 |
|
('lapack_type', '{clapack,mkl}','clapack'), |
172 |
# An option for specifying the compiler tools set (see windows branch). |
# An option for specifying the compiler tools set (see windows branch). |
173 |
('tools_names', 'allow control over the tools in the env setup', ['intelc']), |
('tools_names', 'allow control over the tools in the env setup', ['intelc']), |
174 |
# finer control over library building, intel aggressive global optimisation |
# finer control over library building, intel aggressive global optimisation |
175 |
# works with dynamic libraries on windows. |
# works with dynamic libraries on windows. |
176 |
('share_esysUtils', 'control static or dynamic esysUtils lib', False), |
('share_esysUtils', 'control static or dynamic esysUtils lib', False), |
177 |
('share_paso', 'control static or dynamic paso lib', False) |
('share_paso', 'control static or dynamic paso lib', False), |
178 |
|
('env_export','Environment variables to be passed to children',[]), |
179 |
|
#To enable passing function pointers through python |
180 |
|
BoolVariable('iknowwhatimdoing','allow nonstandard C',False) |
181 |
) |
) |
182 |
|
|
183 |
|
|
184 |
|
|
185 |
############ Specify which compilers to use #################### |
############ Specify which compilers to use #################### |
186 |
|
|
187 |
# intelc uses regular expressions improperly and emits a warning about |
# intelc uses regular expressions improperly and emits a warning about |
192 |
env = Environment(tools = ['default'] + env['tools_names'], |
env = Environment(tools = ['default'] + env['tools_names'], |
193 |
options = opts) |
options = opts) |
194 |
else: |
else: |
195 |
if socket.gethostname().split('.')[0] == 'service0': |
if effective_hostname == 'service0': |
196 |
env = Environment(tools = ['default', 'intelc'], options = opts) |
env = Environment(tools = ['default', 'intelc'], options = opts) |
197 |
elif os.uname()[4]=='ia64': |
elif os.uname()[4]=='ia64': |
198 |
env = Environment(tools = ['default', 'intelc'], options = opts) |
env = Environment(tools = ['default', 'intelc'], options = opts) |
200 |
env['LINK'] = env['CXX'] # version >=9 of intel c++ compiler requires use of icpc to link in C++ runtimes (icc does not) |
env['LINK'] = env['CXX'] # version >=9 of intel c++ compiler requires use of icpc to link in C++ runtimes (icc does not) |
201 |
else: |
else: |
202 |
env = Environment(tools = ['default'], options = opts) |
env = Environment(tools = ['default'], options = opts) |
203 |
|
|
204 |
|
# Override compiler choice if provided |
205 |
|
if env['cc'] != 'DEFAULT': env['CC']=env['cc'] |
206 |
|
if env['cxx'] != 'DEFAULT': env['CXX']=env['cxx'] |
207 |
|
|
208 |
Help(opts.GenerateHelpText(env)) |
Help(opts.GenerateHelpText(env)) |
209 |
|
|
210 |
|
############ Make sure target directories exist ################ |
211 |
|
|
212 |
|
if not os.path.isdir(env['bininstall']): |
213 |
|
os.makedirs(env['bininstall']) |
214 |
|
if not os.path.isdir(env['libinstall']): |
215 |
|
os.makedirs(env['libinstall']) |
216 |
|
if not os.path.isdir(env['pyinstall']): |
217 |
|
os.makedirs(env['pyinstall']) |
218 |
|
|
219 |
|
########## Copy required environment vars ###################### |
220 |
|
|
221 |
|
for i in env['env_export']: |
222 |
|
env.Append(ENV = {i:os.environ[i]}) |
223 |
|
|
224 |
############ Fill in compiler options if not set above ######### |
############ Fill in compiler options if not set above ######### |
225 |
|
|
226 |
# Backwards compatibility: allow dodebug=yes and useMPI=yes |
# Backwards compatibility: allow dodebug=yes and useMPI=yes |
232 |
|
|
233 |
sysheaderopt = "" # how do we indicate that a header is a system header. Use "" for no action. |
sysheaderopt = "" # how do we indicate that a header is a system header. Use "" for no action. |
234 |
|
|
235 |
|
cc_flags = "" |
236 |
|
cc_optim = "" |
237 |
|
cc_debug = "" |
238 |
|
omp_optim = "" |
239 |
|
omp_debug = "" |
240 |
|
omp_libs = [] |
241 |
|
|
242 |
if env["CC"] == "icc": |
if env["CC"] == "icc": |
243 |
# Intel compilers |
# Intel compilers |
244 |
cc_flags = "-fPIC -ansi -wd161 -w1 -vec-report0 -DBLOCKTIMER -DCORE_ID1" |
cc_flags = "-std=c99 -fPIC -wd161 -w1 -vec-report0 -DBLOCKTIMER -DCORE_ID1" |
245 |
cc_optim = "-O3 -ftz -IPF_ftlacc- -IPF_fma -fno-alias" |
cc_optim = "-O3 -ftz -IPF_ftlacc- -IPF_fma -fno-alias" |
246 |
cc_debug = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK" |
cc_debug = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK" |
247 |
omp_optim = "-openmp -openmp_report0" |
omp_optim = "-openmp -openmp_report0" |
250 |
pedantic = "" |
pedantic = "" |
251 |
fatalwarning = "" # Switch to turn warnings into errors |
fatalwarning = "" # Switch to turn warnings into errors |
252 |
sysheaderopt = "" |
sysheaderopt = "" |
253 |
elif env["CC"] == "gcc": |
elif env["CC"][:3] == "gcc": |
254 |
# GNU C on any system |
# GNU C on any system |
255 |
cc_flags = "-pedantic -Wall -fPIC -ansi -ffast-math -Wno-unknown-pragmas -DBLOCKTIMER -Wno-sign-compare -Wno-system-headers -Wno-long-long -Wno-strict-aliasing" |
cc_flags = "-pedantic -Wall -fPIC -ffast-math -Wno-unknown-pragmas -DBLOCKTIMER -Wno-sign-compare -Wno-system-headers -Wno-long-long -Wno-strict-aliasing" |
256 |
#the long long warning occurs on the Mac |
#the long long warning occurs on the Mac |
257 |
cc_optim = "-O3" |
cc_optim = "-O3" |
258 |
cc_debug = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK" |
cc_debug = "-g -O0 -DDOASSERT -DDOPROF -DBOUNDS_CHECK" |
259 |
omp_optim = "-fopenmp" |
omp_optim = "-fopenmp" |
260 |
omp_debug = "-fopenmp" |
omp_debug = "-fopenmp" |
261 |
omp_libs = ['gomp'] |
omp_libs = [] |
262 |
pedantic = "-pedantic-errors -Wno-long-long" |
pedantic = "-pedantic-errors -Wno-long-long" |
263 |
fatalwarning = "-Werror" |
fatalwarning = "-Werror" |
264 |
sysheaderopt = "-isystem " |
sysheaderopt = "-isystem " |
291 |
#set up the autolazy values |
#set up the autolazy values |
292 |
if env['forcelazy'] != "leave_alone": |
if env['forcelazy'] != "leave_alone": |
293 |
if env['forcelazy'] == 'on': |
if env['forcelazy'] == 'on': |
294 |
env.Append(CPPDEFINES='FAUTOLAZYON') |
env.Append(CPPDEFINES=['FAUTOLAZYON']) |
295 |
else: |
else: |
296 |
if env['forcelazy'] == 'off': |
if env['forcelazy'] == 'off': |
297 |
env.Append(CPPDEFINES='FAUTOLAZYOFF') |
env.Append(CPPDEFINES=['FAUTOLAZYOFF']) |
298 |
|
|
299 |
|
#set up the colective resolve values |
300 |
|
if env['forcecollres'] != "leave_alone": |
301 |
|
print env['forcecollres'] |
302 |
|
if env['forcecollres'] == 'on': |
303 |
|
env.Append(CPPDEFINES=['FRESCOLLECTON']) |
304 |
|
else: |
305 |
|
if env['forcecollres'] == 'off': |
306 |
|
env.Append(CPPDEFINES=['FRESCOLLECTOFF']) |
307 |
|
|
308 |
|
|
309 |
|
if env['iknowwhatimdoing']: |
310 |
|
env.Append(CPPDEFINES=['IKNOWWHATIMDOING']) |
311 |
|
|
312 |
# OpenMP is disabled if useopenmp=no or both variables omp_optim and omp_debug are empty |
# OpenMP is disabled if useopenmp=no or both variables omp_optim and omp_debug are empty |
313 |
if not env["useopenmp"]: |
if not env["useopenmp"]: |
567 |
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 |
568 |
if env['usemkl'] and not conf.CheckFunc('pardiso'): env['usemkl'] = 0 |
if env['usemkl'] and not conf.CheckFunc('pardiso'): env['usemkl'] = 0 |
569 |
|
|
570 |
|
|
571 |
# Add MKL to environment env if it was found |
# Add MKL to environment env if it was found |
572 |
if env['usemkl']: |
if env['usemkl']: |
573 |
env = conf.Finish() |
env = conf.Finish() |
622 |
|
|
623 |
# Add the path to Silo to environment env if it was found. |
# Add the path to Silo to environment env if it was found. |
624 |
# 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 |
625 |
# escriptreader library and tools. |
# escriptexport library and tools. |
626 |
if env['usesilo']: |
if env['usesilo']: |
627 |
env.AppendUnique(CPPPATH = [env['silo_path']]) |
env.AppendUnique(CPPPATH = [env['silo_path']]) |
628 |
env.AppendUnique(LIBPATH = [env['silo_lib_path']]) |
env.AppendUnique(LIBPATH = [env['silo_lib_path']]) |
629 |
env.Append(CPPDEFINES = ['HAVE_SILO']) |
env.Append(CPPDEFINES = ['USE_SILO']) |
630 |
|
|
631 |
|
########### Lapack (optional) ################################## |
632 |
|
|
633 |
|
if env['uselapack']: |
634 |
|
env.AppendUnique(CPPDEFINES='USE_LAPACK') |
635 |
|
env.AppendUnique(CPPPATH = [env['lapack_path']]) |
636 |
|
env.AppendUnique(LIBPATH =[env['lapack_lib_path']]) |
637 |
|
|
638 |
|
env.Append(LIBPATH = '/usr/lib/atlas') |
639 |
|
env.Append(LIBS = [env['lapack_libs']]) |
640 |
|
if env['lapack_type']=='mkl': |
641 |
|
if not env['usemkl']: |
642 |
|
env['uselapack']=0 |
643 |
|
print "mkl_lapack requires mkl" |
644 |
|
else: |
645 |
|
env.AppendUnique(CPPDEFINES='MKL_LAPACK') |
646 |
|
|
647 |
|
|
648 |
############ Add the compiler flags ############################ |
############ Add the compiler flags ############################ |
649 |
|
|
706 |
|
|
707 |
env['usempi'] = env_mpi['usempi'] |
env['usempi'] = env_mpi['usempi'] |
708 |
|
|
|
|
|
709 |
############ ParMETIS (optional) ############################### |
############ ParMETIS (optional) ############################### |
710 |
|
|
711 |
# Start a new configure environment that reflects what we've already found |
# Start a new configure environment that reflects what we've already found |
734 |
|
|
735 |
env['useparmetis'] = env_mpi['useparmetis'] |
env['useparmetis'] = env_mpi['useparmetis'] |
736 |
|
|
|
############ Now we switch on Warnings as errors ############### |
|
|
|
|
|
#this needs to be done after configuration because the scons test files have warnings in them |
|
|
|
|
|
if ((fatalwarning != "") and (env['usewarnings'])): |
|
|
env.Append(CCFLAGS = fatalwarning) |
|
|
env_mpi.Append(CCFLAGS = fatalwarning) |
|
|
|
|
737 |
############ Summarize our environment ######################### |
############ Summarize our environment ######################### |
738 |
|
|
739 |
print "" |
print "" |
759 |
else: print " Not using ParMETIS (requires MPI)" |
else: print " Not using ParMETIS (requires MPI)" |
760 |
if env['usepapi']: print " Using PAPI" |
if env['usepapi']: print " Using PAPI" |
761 |
else: print " Not using PAPI" |
else: print " Not using PAPI" |
762 |
|
if env['uselapack']: print " Using Lapack" |
763 |
|
else: print " Not using Lapack" |
764 |
if env['usedebug']: print " Compiling for debug" |
if env['usedebug']: print " Compiling for debug" |
765 |
else: print " Not compiling for debug" |
else: print " Not compiling for debug" |
766 |
print " Installing in", prefix |
print " Installing in", prefix |
780 |
|
|
781 |
############ Build the subdirectories ########################## |
############ Build the subdirectories ########################## |
782 |
|
|
783 |
|
if env['usepedantic']: env_mpi.Append(CCFLAGS = pedantic) |
784 |
|
|
785 |
|
|
786 |
from grouptest import * |
from grouptest import * |
787 |
|
|
788 |
TestGroups=[] |
TestGroups=[] |
789 |
|
|
790 |
|
dodgy_env=clone_env(env_mpi) # Environment without pedantic options |
791 |
|
|
792 |
|
############ Now we switch on Warnings as errors ############### |
793 |
|
|
794 |
|
#this needs to be done after configuration because the scons test files have warnings in them |
795 |
|
|
796 |
|
if ((fatalwarning != "") and (env['usewarnings'])): |
797 |
|
env.Append(CCFLAGS = fatalwarning) |
798 |
|
env_mpi.Append(CCFLAGS = fatalwarning) |
799 |
|
|
800 |
|
|
801 |
Export( |
Export( |
802 |
["env", |
["env", |
803 |
"env_mpi", |
"env_mpi", |
804 |
"clone_env", |
"clone_env", |
805 |
|
"dodgy_env", |
806 |
"IS_WINDOWS_PLATFORM", |
"IS_WINDOWS_PLATFORM", |
807 |
"TestGroups" |
"TestGroups" |
808 |
] |
] |
809 |
) |
) |
810 |
|
|
811 |
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) |
812 |
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) |
813 |
env.SConscript(dirs = ['paso/src'], build_dir='build/$PLATFORM/paso', duplicate=0) |
env.SConscript(dirs = ['paso/src'], build_dir='build/$PLATFORM/paso', duplicate=0) |
814 |
|
env.SConscript(dirs = ['dataexporter/src'], build_dir='build/$PLATFORM/dataexporter', duplicate=0) |
815 |
env.SConscript(dirs = ['escript/src'], build_dir='build/$PLATFORM/escript', duplicate=0) |
env.SConscript(dirs = ['escript/src'], build_dir='build/$PLATFORM/escript', duplicate=0) |
816 |
env.SConscript(dirs = ['esysUtils/src'], build_dir='build/$PLATFORM/esysUtils', duplicate=0) |
env.SConscript(dirs = ['esysUtils/src'], build_dir='build/$PLATFORM/esysUtils', duplicate=0) |
817 |
env.SConscript(dirs = ['finley/src'], build_dir='build/$PLATFORM/finley', duplicate=0) |
env.SConscript(dirs = ['finley/src'], build_dir='build/$PLATFORM/finley', duplicate=0) |
843 |
############### Record python interpreter version ############## |
############### Record python interpreter version ############## |
844 |
|
|
845 |
if not IS_WINDOWS_PLATFORM: |
if not IS_WINDOWS_PLATFORM: |
846 |
|
|
847 |
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]) |
848 |
|
if sys.version_info[4] >0 : versionstring+="rc%s"%sys.version_info[4] |
849 |
os.system("echo "+versionstring+" > "+os.path.join(env['libinstall'],"pyversion")) |
os.system("echo "+versionstring+" > "+os.path.join(env['libinstall'],"pyversion")) |
850 |
|
|
851 |
############## Populate the buildvars file ##################### |
############## Populate the buildvars file ##################### |
882 |
out+="n" |
out+="n" |
883 |
buildvars.write(out+"\n") |
buildvars.write(out+"\n") |
884 |
buildvars.write("mpi_flavour="+env['mpi_flavour']+'\n') |
buildvars.write("mpi_flavour="+env['mpi_flavour']+'\n') |
885 |
|
out="lapack=" |
886 |
|
if env['uselapack']: |
887 |
|
out+="y" |
888 |
|
else: |
889 |
|
out+="n" |
890 |
|
out+="\nsilo=" |
891 |
|
if env['usesilo']: |
892 |
|
out+="y" |
893 |
|
else: |
894 |
|
out+="n" |
895 |
|
buildvars.write(out+"\n") |
896 |
buildvars.close() |
buildvars.close() |
897 |
|
|
898 |
|
|
908 |
env.Alias('build_paso', ['target_install_paso_headers', 'target_paso_a']) |
env.Alias('build_paso', ['target_install_paso_headers', 'target_paso_a']) |
909 |
env.Alias('install_paso', ['build_paso', 'target_install_paso_a']) |
env.Alias('install_paso', ['build_paso', 'target_install_paso_a']) |
910 |
|
|
911 |
|
env.Alias('build_dataexporter', ['target_install_escriptexport_headers', 'target_escriptexport_so', 'target_escriptexportcpp_so']) |
912 |
|
env.Alias('install_dataexporter', ['build_dataexporter', 'target_install_escriptexport_so', 'target_install_escriptexportcpp_so', 'target_install_dataexporter_py']) |
913 |
|
|
914 |
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']) |
915 |
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']) |
916 |
|
|
921 |
build_all_list = [] |
build_all_list = [] |
922 |
build_all_list += ['build_esysUtils'] |
build_all_list += ['build_esysUtils'] |
923 |
build_all_list += ['build_paso'] |
build_all_list += ['build_paso'] |
924 |
|
build_all_list += ['build_dataexporter'] |
925 |
build_all_list += ['build_escript'] |
build_all_list += ['build_escript'] |
926 |
build_all_list += ['build_finley'] |
build_all_list += ['build_finley'] |
927 |
if env['usempi']: build_all_list += ['target_pythonMPI_exe'] |
if env['usempi']: build_all_list += ['target_pythonMPI_exe'] |
928 |
#if not IS_WINDOWS_PLATFORM: build_all_list += ['target_escript_wrapper'] |
#if not IS_WINDOWS_PLATFORM: build_all_list += ['target_escript_wrapper'] |
929 |
if env['usesilo']: build_all_list += ['target_escript2silo'] |
if env['usesilo']: build_all_list += ['target_escriptconvert'] |
930 |
env.Alias('build_all', build_all_list) |
env.Alias('build_all', build_all_list) |
931 |
|
|
932 |
install_all_list = [] |
install_all_list = [] |
933 |
install_all_list += ['target_init'] |
install_all_list += ['target_init'] |
934 |
install_all_list += ['install_esysUtils'] |
install_all_list += ['install_esysUtils'] |
935 |
install_all_list += ['install_paso'] |
install_all_list += ['install_paso'] |
936 |
|
install_all_list += ['install_dataexporter'] |
937 |
install_all_list += ['install_escript'] |
install_all_list += ['install_escript'] |
938 |
install_all_list += ['install_finley'] |
install_all_list += ['install_finley'] |
939 |
install_all_list += ['target_install_pyvisi_py'] |
install_all_list += ['target_install_pyvisi_py'] |
941 |
install_all_list += ['target_install_pycad_py'] |
install_all_list += ['target_install_pycad_py'] |
942 |
if env['usempi']: install_all_list += ['target_install_pythonMPI_exe'] |
if env['usempi']: install_all_list += ['target_install_pythonMPI_exe'] |
943 |
#if not IS_WINDOWS_PLATFORM: install_all_list += ['target_install_escript_wrapper'] |
#if not IS_WINDOWS_PLATFORM: install_all_list += ['target_install_escript_wrapper'] |
944 |
if env['usesilo']: install_all_list += ['target_install_escript2silo'] |
if env['usesilo']: install_all_list += ['target_install_escriptconvert'] |
945 |
install_all_list += ['remember_options'] |
install_all_list += ['remember_options'] |
946 |
env.Alias('install_all', install_all_list) |
env.Alias('install_all', install_all_list) |
947 |
|
|
956 |
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']) |
957 |
env.Alias('build_full',['install_all','build_tests','build_py_tests']) |
env.Alias('build_full',['install_all','build_tests','build_py_tests']) |
958 |
|
|
959 |
|
|
960 |
############ Targets to build the documentation ################ |
############ Targets to build the documentation ################ |
961 |
|
|
962 |
env.Alias('api_epydoc','install_all') |
env.Alias('api_epydoc','install_all') |
963 |
|
|
964 |
env.Alias('docs', ['examples_tarfile', 'examples_zipfile', 'api_epydoc', 'api_doxygen', 'guide_pdf', 'guide_html','install_pdf']) |
env.Alias('docs', ['examples_tarfile', 'examples_zipfile', 'api_epydoc', 'api_doxygen', 'guide_pdf', 'guide_html','install_pdf']) |
965 |
|
|
966 |
|
build_platform=os.name |
967 |
|
|
968 |
if not IS_WINDOWS_PLATFORM: |
if not IS_WINDOWS_PLATFORM: |
969 |
try: |
try: |
970 |
utest=open("utest.sh","w") |
utest=open("utest.sh","w") |
971 |
build_platform=os.name #Sometimes Mac python says it is posix |
#Sometimes Mac python says it is posix |
972 |
if (build_platform=='posix') and platform.system()=="Darwin": |
if (build_platform=='posix') and platform.system()=="Darwin": |
973 |
build_platform='darwin' |
build_platform='darwin' |
974 |
utest.write(GroupTest.makeHeader(build_platform)) |
utest.write(GroupTest.makeHeader(build_platform)) |
981 |
print "Error attempting to write unittests file." |
print "Error attempting to write unittests file." |
982 |
sys.exit(1) |
sys.exit(1) |
983 |
|
|
984 |
|
#Make sure that the escript wrapper is in place |
985 |
|
if not os.path.isfile(os.path.join(env['bininstall'],'escript')): |
986 |
|
print "Copying escript wrapper" |
987 |
|
shutil.copy("bin/escript",os.path.join(env['bininstall'],'escript')) |
988 |
|
|
989 |
|
############ Targets to build PasoTests suite ################ |
990 |
|
|
991 |
|
env.Alias('build_PasoTests','build/'+build_platform+'/paso/profiling/PasoTests') |