/[ascend]/trunk/SConstruct
ViewVC logotype

Contents of /trunk/SConstruct

Parent Directory Parent Directory | Revision Log Revision Log


Revision 455 - (show annotations) (download)
Wed Apr 5 07:50:22 2006 UTC (14 years, 5 months ago) by johnpye
File size: 19534 byte(s)
Tidying up some debug output
Fixing up use of icon filenames on Windows
Removing reference to .svg file in glade/ascend.glade
1 import os, commands, platform, distutils.sysconfig, os.path
2
3 version = "0.9.6rc0"
4
5 #------------------------------------------------------
6 # OPTIONS
7 #
8 # Note that if you set the options via the command line, they will be
9 # remembered in the file 'options.cache'. It's a feature ;-)
10
11 opts = Options(['options.cache', 'config.py'])
12 print "PLATFORM = ",platform.system()
13
14 # Import the outside environment
15 env = Environment(ENV=os.environ)
16
17 if platform.system()=='Windows' and env.has_key('MSVS'):
18 print "INCLUDE =",env['ENV']['INCLUDE']
19 print "LIB =",env['ENV']['LIB']
20 print "LINK =",env['LINK']
21 print "LINKCOM =",env['LINKCOM']
22 print "AR =",env['AR']
23 print "ARCOM =",env['ARCOM']
24 #env['AR']='link /lib'
25 env.Append(CPPPATH=env['ENV']['INCLUDE'])
26 env.Append(LIBPATH=env['ENV']['LIB'])
27 env.Append(CPPDEFINES=['_CRT_SECURE_NO_DEPRECATED','_CRT_SECURE_NO_DEPRECATE'])
28
29 # Package linking option
30 opts.Add(EnumOption(
31 'PACKAGE_LINKING'
32 , 'Style of linking for external libraries'
33 , 'DYNAMIC_PACKAGES'
34 , ['DYNAMIC_PACKAGES', 'STATIC_PACKAGES', 'NO_PACKAGES']
35 ))
36
37 # You can turn off building of Tcl/Tk interface
38 opts.Add(BoolOption(
39 'WITHOUT_TCLTK_GUI'
40 ,"Set to True if you don't want to build the original Tcl/Tk GUI."
41 , False
42 ))
43
44 # You can turn off the building of the Python interface
45 opts.Add(BoolOption(
46 'WITHOUT_PYTHON'
47 ,"Set to True if you don't want to build Python wrappers."
48 , False
49 ))
50
51 # Which solvers will we allow?
52 opts.Add(ListOption(
53 'WITH_SOLVERS'
54 ,"List of the solvers you want to build. The default is the minimum that"
55 +" works."
56 ,["QRSLV","CMSLV"]
57 ,['QRSLV','MPS','SLV','OPTSQP'
58 ,'NGSLV','CMSLV','LRSLV','MINOS','CONOPT'
59 ,'LSOD','OPTSQP'
60 ]
61 ))
62
63 # Where will the local copy of the help files be kept?
64 opts.Add(PackageOption(
65 'WITH_LOCAL_HELP'
66 , "Directory containing the local copy of the help files (optional)"
67 , "no"
68 ))
69
70 # Will bintoken support be enabled?
71 opts.Add(BoolOption(
72 'WITH_BINTOKEN'
73 ,"Enable bintoken support? This means compiling models as C-code before"
74 +" running them, to increase solving speed for large models."
75 ,False
76 ))
77
78 # What should the default ASCENDLIBRARY path be?
79 # Note: users can change it by editing their ~/.ascend.ini
80 opts.Add(
81 'DEFAULT_ASCENDLIBRARY'
82 ,"Set the default value of the ASCENDLIBRARY -- the location where"
83 +" ASCEND will look for models when running ASCEND"
84 ,os.path.expanduser("~/src/ascend/trunk/models")
85 )
86
87 # Where is SWIG?
88 opts.Add(
89 'SWIG'
90 ,"SWIG location, probably only required for MinGW and MSVC users."
91 +" Enter the location as a Windows-style path, for example"
92 +" 'c:\\msys\\1.0\\home\\john\\swigwin-1.3.29\\swig.exe'."
93 )
94
95 # Build the test suite?
96 opts.Add(BoolOption(
97 'WITH_CUNIT_TESTS'
98 ,"Whether to build the CUnit tests. Default is off. If set to on,"
99 +" you must have CUnit installed somewhere that SCons can"
100 +" find it."
101 ,False
102 ))
103
104 # Where are the CUnit includes?
105 opts.Add(PackageOption(
106 'CUNIT_CPPPATH'
107 ,"Where are your CUnit include files?"
108 ,None
109 ))
110
111 # Where are the CUnit libraries?
112 opts.Add(PackageOption(
113 'CUNIT_LIBPATH'
114 ,"Where are your CUnit libraries?"
115 ,None
116 ))
117
118 # Where are the Tcl includes?
119 opts.Add(PackageOption(
120 'TCL_CPPPATH'
121 ,"Where are your Tcl include files?"
122 ,None
123 ))
124
125 # Where are the Tcl libs?
126 opts.Add(PackageOption(
127 'TCL_LIBPATH'
128 ,"Where are your Tcl libraries?"
129 ,None
130 ))
131
132 # What is the name of the Tcl lib?
133 opts.Add(
134 'TCL_LIB'
135 ,"Name of Tcl lib (eg 'tcl' or 'tcl83')"
136 ,'tcl'
137 )
138
139 # Where are the Tk includes?
140 opts.Add(PackageOption(
141 'TK_CPPPATH'
142 ,"Where are your Tk include files?"
143 ,None
144 ))
145
146 # Where are the Tk libs?
147 opts.Add(PackageOption(
148 'TK_LIBPATH'
149 ,"Where are your Tk libraries?"
150 ,None
151 ))
152
153 # What is the name of the Tk lib?
154 opts.Add(
155 'TK_LIB'
156 ,"Name of Tk lib (eg 'tk' or 'tk83')"
157 ,'tk'
158 )
159
160 opts.Add(
161 'INSTALL_PREFIX'
162 ,'Root location for installed files'
163 ,'/usr/local'
164 )
165
166 opts.Add(
167 'INSTALL_BIN'
168 ,'Location to put binaries during installation'
169 ,"$INSTALL_PREFIX/bin"
170 )
171
172 opts.Add(
173 'INSTALL_DATA'
174 ,'Location to put data files during installation'
175 ,"$INSTALL_PREFIX/share"
176 )
177
178 opts.Add(
179 'INSTALL_INCLUDE'
180 ,'Location to put header files during installation'
181 ,"$INSTALL_PREFIX/include"
182 )
183
184 if platform.system()=="Windows":
185 default_install_assets = "glade/"
186 icon_extension = '.png'
187 else:
188 default_install_assets = "$INSTALL_DATA/ascend/glade/"
189 icon_extension = '.svg'
190
191 opts.Add(
192 'PYGTK_ASSETS'
193 ,'Default location for Glade assets (placed in pygtk/interface/config.py)'
194 ,default_install_assets
195 )
196
197 opts.Add(
198 'INSTALL_ROOT'
199 ,'For use by RPM only: location of %{buildroot} during rpmbuild'
200 ,""
201 )
202
203 # TODO: OTHER OPTIONS?
204 # TODO: flags for optimisation
205 # TODO: turning on/off bintoken functionality
206 # TODO: Where will the 'Makefile.bt' file be installed?
207
208 opts.Update(env)
209 opts.Save('options.cache',env)
210
211 Help(opts.GenerateHelpText(env))
212
213 with_tcltk_gui = (env['WITHOUT_TCLTK_GUI']==False)
214 without_tcltk_reason = "disabled by options/config.py"
215
216 with_python = (env['WITHOUT_PYTHON']==False)
217 without_python_reason = "disabled by options/config.py"
218
219 with_cunit_tests = env['WITH_CUNIT_TESTS']
220 without_cunit_reason = "not requested"
221
222 print "SOLVERS:",env['WITH_SOLVERS']
223 print "WITH_LOCAL_HELP:",env['WITH_LOCAL_HELP']
224 print "WITH_BINTOKEN:",env['WITH_BINTOKEN']
225 print "DEFAULT_ASCENDLIBRARY:",env['DEFAULT_ASCENDLIBRARY']
226
227 subst_dict = {
228 '@WEBHELPROOT@':'http://pye.dyndns.org/ascend/manual/'
229 , '@GLADE_FILE@':'ascend.glade'
230 , '@DEFAULT_ASCENDLIBRARY@':env['DEFAULT_ASCENDLIBRARY']
231 , '@ICON_EXTENSION@':icon_extension
232 , '@HELP_ROOT@':''
233 , '@INSTALL_DATA@':env['INSTALL_DATA']
234 , '@INSTALL_BIN@':env['INSTALL_BIN']
235 , '@INSTALL_INCLUDE@':env['INSTALL_INCLUDE']
236 , '@PYGTK_ASSETS@':env['PYGTK_ASSETS']
237 , '@VERSION@':version
238 }
239
240 if env['WITH_LOCAL_HELP']:
241 subst_dict['@HELP_ROOT@']=env['WITH_LOCAL_HELP']
242
243 env.Append(SUBST_DICT=subst_dict)
244
245 #------------------------------------------------------
246 # SPECIAL CONFIGURATION TESTS
247
248 #----------------
249 # SWIG
250
251 import os,re
252
253 need_fortran = False
254
255 def get_swig_version(env):
256 cmd = env['SWIG']+' -version'
257 (cin,coutcerr) = os.popen4(cmd)
258 output = coutcerr.read()
259
260 restr = "SWIG\\s+Version\\s+(?P<maj>[0-9]+)\\.(?P<min>[0-9]+)\\.(?P<pat>[0-9]+)\\s*$"
261 expr = re.compile(restr,re.M);
262 m = expr.search(output);
263 if not m:
264 return None
265 maj = int(m.group('maj'))
266 min = int(m.group('min'))
267 pat = int(m.group('pat'))
268
269 return (maj,min,pat)
270
271
272 def CheckSwigVersion(context):
273
274 try:
275 context.Message("Checking version of SWIG... ")
276 maj,min,pat = get_swig_version(context.env)
277 except:
278 context.Result("Failed to detect version, or failed to run SWIG")
279 return 0;
280
281 if maj == 1 and (
282 min > 3
283 or (min == 3 and pat >= 24)
284 ):
285 context.Result("ok, %d.%d.%d" % (maj,min,pat))
286 return 1;
287 else:
288 context.Result("too old, %d.%d.%d" % (maj,min,pat))
289 return 0;
290
291 #----------------
292 # General purpose library-and-header test
293
294 class KeepContext:
295 def __init__(self,context,varprefix):
296 self.keep = {}
297 for k in ['LIBS','LIBPATH','CPPPATH']:
298 if context.env.has_key(k):
299 self.keep[k] = context.env[k]
300
301 libpath_add = []
302 if context.env.has_key(varprefix+'_LIBPATH'):
303 libpath_add = [env[varprefix+'_LIBPATH']]
304 #print "Adding '"+str(libpath_add)+"' to lib path"
305
306 cpppath_add = []
307 if context.env.has_key(varprefix+'_CPPPATH'):
308 cpppath_add = [env[varprefix+'_CPPPATH']]
309 #print "Adding '"+str(cpppath_add)+"' to cpp path"
310
311 libs_add = []
312 if context.env.has_key(varprefix+'_LIB'):
313 libs_add = [env[varprefix+'_LIB']]
314 #print "Adding '"+str(libs_add)+"' to libs"
315
316 context.env.Append(
317 LIBPATH = libpath_add
318 , CPPPATH = cpppath_add
319 , LIBS = libs_add
320 )
321
322 def restore(self,context):
323 for k in self.keep:
324 context.env[k]=self.keep[k];
325
326 def CheckExtLib(context,libname,text,ext='.c',varprefix=None):
327 """This method will check for variables LIBNAME_LIBPATH
328 and LIBNAME_CPPPATH and try to compile and link the
329 file with the provided text, linking with the
330 library libname."""
331
332 context.Message( 'Checking for '+libname+'... ' )
333
334 if varprefix==None:
335 varprefix = libname.upper()
336
337 keep = KeepContext(context,varprefix)
338
339 # print "TryLink with CPPPATH="+str(context.env['CPPPATH'])
340 # print "TryLink with LIBS="+str(context.env['LIBS'])
341 # print "TryLink with LIBPATH="+str(context.env['LIBPATH'])
342
343 if not context.env.has_key(varprefix+'_LIB'):
344 context.env.Append(LIBS=libname)
345
346 is_ok = context.TryLink(text,ext)
347
348 # print "Link success? ",(is_ok != 0)
349
350 keep.restore(context)
351
352 # print "Restored CPPPATH="+str(context.env['CPPPATH'])
353 # print "Restored LIBS="+libname
354 # print "Restored LIBPATH="+str(context.env['LIBPATH'])
355
356 context.Result(is_ok)
357 return is_ok
358
359 #----------------
360 # CUnit test
361
362 cunit_test_text = """
363 #include <CUnit/CUnit.h>
364 int maxi(int i1, int i2){
365 return (i1 > i2) ? i1 : i2;
366 }
367
368 void test_maxi(void){
369 CU_ASSERT(maxi(0,2) == 2);
370 CU_ASSERT(maxi(0,-2) == 0);
371 CU_ASSERT(maxi(2,2) == 2);
372
373 }
374 int main(void){
375 /* CU_initialize_registry() */
376 return 0;
377 }
378 """
379
380 def CheckCUnit(context):
381 return CheckExtLib(context,'cunit',cunit_test_text)
382
383 #----------------
384 # Tcl test
385
386 tcl_check_text = r"""
387 #include <tcl.h>
388 #include <stdio.h>
389 int main(void){
390 printf("%s",TCL_PATCH_LEVEL);
391 return 0;
392 }
393 """
394
395 def CheckTcl(context):
396 return CheckExtLib(context,'tcl',tcl_check_text)
397
398 def CheckTclVersion(context):
399 keep = KeepContext(context,'TCL')
400 context.Message("Checking Tcl version... ")
401 (is_ok,output) = context.TryRun(tcl_check_text,'.c')
402 keep.restore(context)
403 if not is_ok:
404 context.Result("failed to run check")
405 return 0
406
407 major,minor,patch = tuple(int(i) for i in output.split("."))
408 if major != 8 or minor > 3:
409 context.Result(output+" (bad version)")
410 # bad version
411 return 0
412
413 # good version
414 context.Result(output+" (good)")
415 return 1
416
417 #----------------
418 # Tcl test
419
420 tk_check_text = r"""
421 #include <tk.h>
422 #include <stdio.h>
423 int main(void){
424 printf("%s",TK_PATCH_LEVEL);
425 return 0;
426 }
427 """
428 def CheckTk(context):
429 return CheckExtLib(context,'tk',tcl_check_text)
430
431
432 def CheckTkVersion(context):
433 keep = KeepContext(context,'TK')
434 context.Message("Checking Tk version... ")
435 (is_ok,output) = context.TryRun(tk_check_text,'.c')
436 keep.restore(context)
437 if not is_ok:
438 context.Result("failed to run check")
439 return 0
440 context.Result(output)
441
442 major,minor,patch = tuple(int(i) for i in output.split("."))
443 if major != 8 or minor > 3:
444 # bad version
445 return 0
446
447 # good version
448 return 1
449
450 #------------------------------------------------------
451 # CONFIGURATION
452
453 conf = Configure(env
454 , custom_tests = {
455 'CheckSwigVersion' : CheckSwigVersion
456 , 'CheckCUnit' : CheckCUnit
457 , 'CheckTcl' : CheckTcl
458 , 'CheckTclVersion' : CheckTclVersion
459 , 'CheckTk' : CheckTk
460 , 'CheckTkVersion' : CheckTkVersion
461 # , 'CheckIsNan' : CheckIsNan
462 # , 'CheckCppUnitConfig' : CheckCppUnitConfig
463 }
464 , config_h = "config.h"
465 )
466
467
468 # Math library
469
470 #if not conf.CheckFunc('sinh') and not conf.CheckLibWithHeader(['m','c','libc'], 'math.h', 'C'):
471 # print 'Did not find math library, exiting!'
472 # Exit(1)
473
474 # Where is 'isnan'?
475
476 if not conf.CheckFunc('isnan'):
477 print "Didn't find isnan"
478 # Exit(1)
479
480 # Tcl/Tk
481
482 if conf.CheckTcl():
483 if with_tcltk_gui and conf.CheckTclVersion():
484 if conf.CheckTk():
485 if with_tcltk_gui and not conf.CheckTkVersion():
486 without_tcltk_reason = "Require Tk version <= 8.3. See 'scons -h'"
487 with_tcltk_gui = False
488 else:
489 without_tcltk_reason = "Tk not found."
490 with_tcltk_gui = False
491 else:
492 without_tcltk_reason = "Require Tcl <= 8.3 Tcl."
493 with_tcltk_gui = False
494
495 else:
496 without_tcltk_reason = "Tcl not found."
497 with_tcltk_gui = False
498
499 # Python... obviously we're already running python, so we just need to
500 # check that we can link to the python library OK:
501
502 if platform.system()=="Windows":
503 python_lib='python24'
504 else:
505 python_lib='python2.4'
506
507 # SWIG version
508
509 if platform.system()=="Windows":
510 env['ENV']['SWIGFEATURES']='-O'
511 else:
512 env['ENV']['SWIGFEATURES']='-O'
513
514
515 if not conf.CheckSwigVersion():
516 without_python_reason = 'SWIG >= 1.3.24 is required'
517 with_python = False
518
519 # CUnit
520
521 if with_cunit_tests:
522 if not conf.CheckCUnit():
523 without_cunit_reason = 'CUnit not found'
524
525 # BLAS
526
527 if conf.CheckLib('blas'):
528 print "FOUND BLAS"
529 with_local_blas = False
530 without_local_blas_reason = "Found BLAS installed on system"
531 else:
532 print "DIDN'T FIND BLAS"
533 with_local_blas = True
534 need_fortran = True
535
536 # FORTRAN
537
538 if need_fortran:
539 conf.env.Tool('f77')
540 detect_fortran = conf.env.Detect(['g77','f77'])
541 if detect_fortran:
542 # For some reason, g77 doesn't get detected properly on MinGW
543 if not env.has_key('F77'):
544 conf.env.Replace(F77=detect_fortran)
545 conf.env.Replace(F77COM='$F77 $F77FLAGS -c -o $TARGET $SOURCE')
546 conf.env.Replace(F77FLAGS='')
547 #print "F77:",conf.env['F77']
548 #print "F77COM:",conf.env['F77COM']
549 #print "F77FLAGS:",conf.env['F77FLAGS']
550 fortran_builder = Builder(
551 action='$F77COM'
552 , suffix='.o'
553 , src_suffix='.f'
554 )
555 conf.env.Append(BUILDERS={'Fortran':fortran_builder})
556 else:
557 print "FORTRAN-77 required but not found"
558 Exit(1)
559 else:
560 print "FORTRAN not required"
561
562 # TODO: -D_HPUX_SOURCE is needed
563
564 # TODO: check size of void*
565
566 # TODO: detect if dynamic libraries are possible or not
567
568 if platform.system()=="Windows" and env.has_key('MSVS'):
569 if not conf.CheckHeader('windows.h') and env['PACKAGE_LINKING']=='DYNAMIC_PACKAGES':
570 print "Reverting to STATIC_PACKAGES since windows.h is not available. Probably you "\
571 +"need to install the Microsoft Windows Server 2003 Platform SDK, or similar."
572 env['PACKAGE_LINKING']='STATIC_PACKAGES'
573
574 if with_python and not conf.CheckHeader('basetsd.h'):
575 with_python = 0;
576 without_python_reason = "Header file 'basetsd.h' not found. Install the MS Platform SDK."
577
578 conf.env.Append(CPPDEFINES=env['PACKAGE_LINKING'])
579
580 conf.Finish()
581
582 env.Append(PYTHON_LIBPATH=[distutils.sysconfig.PREFIX+"/libs"])
583 env.Append(PYTHON_LIB=[python_lib])
584 env.Append(PYTHON_CPPPATH=[distutils.sysconfig.get_python_inc()])
585
586 #------------------------------------------------------
587 # RECIPE: 'SubstInFile', used in pygtk SConscript
588
589 import re
590 from SCons.Script import * # the usual scons stuff you get in a SConscript
591
592 def TOOL_SUBST(env):
593 """Adds SubstInFile builder, which substitutes the keys->values of SUBST_DICT
594 from the source to the target.
595 The values of SUBST_DICT first have any construction variables expanded
596 (its keys are not expanded).
597 If a value of SUBST_DICT is a python callable function, it is called and
598 the result is expanded as the value.
599 If there's more than one source and more than one target, each target gets
600 substituted from the corresponding source.
601 """
602 env.Append(TOOLS = 'SUBST')
603 def do_subst_in_file(targetfile, sourcefile, dict):
604 """Replace all instances of the keys of dict with their values.
605 For example, if dict is {'%VERSION%': '1.2345', '%BASE%': 'MyProg'},
606 then all instances of %VERSION% in the file will be replaced with 1.2345 etc.
607 """
608 try:
609 f = open(sourcefile, 'rb')
610 contents = f.read()
611 f.close()
612 except:
613 raise SCons.Errors.UserError, "Can't read source file %s"%sourcefile
614 for (k,v) in dict.items():
615 contents = re.sub(k, v, contents)
616 try:
617 f = open(targetfile, 'wb')
618 f.write(contents)
619 f.close()
620 except:
621 raise SCons.Errors.UserError, "Can't write target file %s"%targetfile
622 return 0 # success
623
624 def subst_in_file(target, source, env):
625 if not env.has_key('SUBST_DICT'):
626 raise SCons.Errors.UserError, "SubstInFile requires SUBST_DICT to be set."
627 d = dict(env['SUBST_DICT']) # copy it
628 for (k,v) in d.items():
629 if callable(v):
630 d[k] = env.subst(v())
631 elif SCons.Util.is_String(v):
632 d[k]=env.subst(v)
633 else:
634 raise SCons.Errors.UserError, "SubstInFile: key %s: %s must be a string or callable"%(k, repr(v))
635 for (t,s) in zip(target, source):
636 return do_subst_in_file(str(t), str(s), d)
637
638 def subst_in_file_string(target, source, env):
639 """This is what gets printed on the console."""
640 return '\n'.join(['Substituting vars from %s into %s'%(str(s), str(t))
641 for (t,s) in zip(target, source)])
642
643 def subst_emitter(target, source, env):
644 """Add dependency from substituted SUBST_DICT to target.
645 Returns original target, source tuple unchanged.
646 """
647 d = env['SUBST_DICT'].copy() # copy it
648 for (k,v) in d.items():
649 if callable(v):
650 d[k] = env.subst(v())
651 elif SCons.Util.is_String(v):
652 d[k]=env.subst(v)
653 Depends(target, SCons.Node.Python.Value(d))
654 return target, source
655
656 subst_action=SCons.Action.Action(subst_in_file, subst_in_file_string)
657 env['BUILDERS']['SubstInFile'] = Builder(action=subst_action, emitter=subst_emitter)
658
659 TOOL_SUBST(env)
660
661 #------------------------------------------------------
662 # Recipe for 'CHMOD' ACTION
663
664 import SCons
665 from SCons.Script.SConscript import SConsEnvironment
666 SConsEnvironment.Chmod = SCons.Action.ActionFactory(os.chmod,
667 lambda dest, mode: 'Chmod("%s", 0%o)' % (dest, mode))
668
669 def InstallPerm(env, dest, files, perm):
670 obj = env.Install(dest, files)
671 for i in obj:
672 env.AddPostAction(i, env.Chmod(str(i), perm))
673
674 SConsEnvironment.InstallPerm = InstallPerm
675
676 # define wrappers
677 SConsEnvironment.InstallProgram = lambda env, dest, files: InstallPerm(env, dest, files, 0755)
678 SConsEnvironment.InstallHeader = lambda env, dest, files: InstallPerm(env, dest, files, 0644)
679
680 #------------------------------------------------------
681 # SUBDIRECTORIES....
682
683
684 env.Append(CPPPATH=['..'])
685
686 env.SConscript(['base/generic/general/SConscript'],'env')
687
688 env.SConscript(['base/generic/utilities/SConscript'],'env')
689
690 env.SConscript(['base/generic/compiler/SConscript'],'env')
691
692 env.SConscript(['base/generic/solver/SConscript'],'env')
693
694 env.SConscript(['base/generic/packages/SConscript'],'env')
695
696 if with_tcltk_gui:
697 env.SConscript(['tcltk98/generic/interface/SConscript'],'env')
698 else:
699 print "Skipping... Tcl/Tk GUI isn't being built:",without_tcltk_reason
700
701 if with_python:
702 env.SConscript(['pygtk/interface/SConscript'],'env')
703 else:
704 print "Skipping... Python GUI isn't being built:",without_python_reason
705
706 if with_cunit_tests:
707 testdirs = ['general','solver','utilities']
708 for testdir in testdirs:
709 path = 'base/generic/'+testdir+'/test/'
710 env.SConscript([path+'SConscript'],'env')
711 env.SConscript(['test/SConscript'],'env')
712 env.SConscript(['base/generic/test/SConscript'],'env')
713
714
715 else:
716 print "Skipping... CUnit tests aren't being built:",without_cunit_reason
717
718 if with_tcltk_gui:
719 if with_local_blas:
720 env.SConscript(['blas/SConscript'],'env')
721 else:
722 print "Skipping... BLAS won't be build:", without_local_blas_reason
723
724 env.SConscript(['lsod/SConscript'],'env')
725
726 env.SConscript(['linpack/SConscript'],'env')
727
728 # the models directory only needs to be processed for installation
729 env.SConscript(['models/SConscript'],'env')
730
731 #------------------------------------------------------
732 # INSTALLATION
733
734 install_dirs = [env['INSTALL_ROOT']+env['INSTALL_BIN']]+[env['INSTALL_ROOT']+env['INSTALL_DATA']]
735
736 # TODO: add install options
737 env.Alias('install',install_dirs)
738
739 #------------------------------------------------------
740 # CREATE the SPEC file for generation of RPM packages
741
742 env.SubstInFile('ascend.spec.in')

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22