/[ascend]/trunk/base/generic/Jamfile
ViewVC logotype

Annotation of /trunk/base/generic/Jamfile

Parent Directory Parent Directory | Revision Log Revision Log


Revision 385 - (hide annotations) (download)
Thu Mar 30 04:14:29 2006 UTC (19 years, 7 months ago) by johnpye
File size: 13682 byte(s)
First attempt at SCons build. This will build the static libraries
for me on Linux with GCC 4.0.2. Will work now on getting it to 
build the Tcl/Tk GUI.
1 jds 129 #
2     # Jamfile to build Ascend4 base libraries
3     # (see http://www.freetype.org/jam/index.html)
4     #
5     # This file is part of the Ascend Build System.
6     #
7     # Copyright (C) 2005 Jerry D. St.Clair
8     #
9     # The Ascend Build System is free software; you can redistribute
10     # it and/or modify it under the terms of the GNU General Public
11     # License as published by the Free Software Foundation; either
12     # version 2 of the License, or (at your option) any later version.
13     #
14     # This program is distributed in hope that it will be useful,
15     # but WITHOUT ANY WARRANTY; without even the implied warranty of
16     # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17     # GNU General Public License for more details.
18     #
19     # You should have received a copy of the GNU General Public License
20     # along with the program; if not, write to the Free Software
21     # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139 USA.
22     # Check the file named COPYING.
23     #---------------------------------------------------------------------------
24     #
25     # UNDER CONSTRUCTION
26     #
27     # This Jamfile builds the base library subset of ASCEND using the jam
28     # build tool as a set of static libraries. A regression test suite for
29     # the base libraries is also built.
30     #
31     # This file is part of the ASCEND jam build system rooted at ../../jam.
32     # See ../../jam/ReadMe.txt for more information.
33     #
34     #-------------------------------------------------------------------------
35     #
36     # File-specific Build Instructions
37     #
38     # 1. Follow the general instructions in ../../jam/ReadMe.txt for your platform.
39     #
40     # 2. To generate the base libraries, run:
41     # jam libs
42     #
43     # 3. A prototype CUnit test suite may also be built. At this point it
44     # only covers the general and utilities components. For maximal
45     # testing, NODEBUG should be commented and DEBUG_MALLOC and
46     # ALLOCATED_TESTS should be active in ../../jam/Jamrules. The
47     # ASCEND base libs should be built with these options also.
48     # Build the tests using:
49     # jam tests
50     #
51     #-------------------------------------------------------------------------
52    
53     SubDir TOP base generic ;
54     if ! $(JAMRULES_ALREADY_SEEN)
55     {
56     include $(TOP)$(SLASH)jam$(SLASH)Jamrules ;
57     }
58    
59     srcdir = $(TOP)$(SLASH)base$(SLASH)generic ;
60    
61     # Build flags for Ascend base libraries
62     BUILD_COMPILER = 1 ;
63     BUILD_GENERAL = 1 ;
64     BUILD_SOLVER = 1 ;
65     BUILD_UTILITIES = 1 ;
66     BUILD_PACKAGES = 1 ;
67    
68     # Ascend modules subdirectories
69     ASC_COMPILER_DIR = $(srcdir)$(SLASH)compiler ;
70     ASC_GENERAL_DIR = $(srcdir)$(SLASH)general ;
71     ASC_SOLVER_DIR = $(srcdir)$(SLASH)solver ;
72     ASC_UTILITIES_DIR = $(srcdir)$(SLASH)utilities ;
73     ASC_PACKAGES_DIR = $(srcdir)$(SLASH)packages ;
74    
75     HDRS += $(srcdir) ;
76    
77     DEPENDS all : libs ;
78     NOTFILE libs ;
79    
80     # Location of old Ascend Tcl/Tk interface sources.
81     # Some solver modules include headers originally located in
82     # the Tcl/Tk-specific interface subdirectory. Until the
83     # source is reorganized to decouple the base and interface
84     # components, we have to be able to find those headers
85     # TODO: remove/rework when Tcl/Tk decoupled from base library
86     ASC_INTERFACE_ROOT = $(TOP)$(SLASH)tcltk98$(SLASH)generic ;
87    
88     #=========================================================================
89     # Compiler module
90     #=========================================================================
91     if $(BUILD_COMPILER)
92     {
93     ASC_COMPILER_SOURCES =
94     anoncopy.c
95     anonmerg.c
96     anontype.c
97     arrayinst.c
98     ascCompiler.c
99     ascParse.c
100     atomsize.c
101     atomvalue.c
102     bintoken.c
103     bit.c
104     braced.c
105     case.c
106     check.c
107     child.c
108     childdef.c
109     childio.c
110     childinfo.c
111     cmpfunc.c
112     commands.c
113     copyinst.c
114     createinst.c
115     destroyinst.c
116     dimen.c
117     dimen_io.c
118     dump.c
119     evaluate.c
120     exprio.c
121     exprs.c
122     exprsym.c
123     extcall.c
124     extfunc.c
125     extinst.c
126     find.c
127     forvars.c
128     fractions.c
129     freestore.c
130     func.c
131     initialize.c
132     instance.c
133     instance_io.c
134     instantiate.c
135     instmacro.c
136     instquery.c
137     interval.c
138     library.c
139     linkinst.c
140     logrel_io.c
141     logrel_util.c
142     logrelation.c
143     mathinst.c
144     mergeinst.c
145     module.c
146     name.c
147     nameio.c
148     notate.c
149     numlist.c
150     packages.c
151     parentchild.c
152     parpend.c
153     pending.c
154 jds 216 plot.c
155 jds 129 proc.c
156     procframe.c
157     procio.c
158     prototype.c
159     qlfdid.c
160     redirectFile.c
161     refineinst.c
162     rel_common.c
163     relation.c
164     relation_io.c
165     relation_util.c
166     rootfind.c
167     rounded.c
168     safe.c
169     scanner.c
170     select.c
171     setinst_io.c
172     setinstval.c
173     setio.c
174     sets.c
175     slist.c
176     simlist.c
177     statement.c
178     statio.c
179     switch.c
180     symtab.c
181     syntax.c
182     temp.c
183     tmpnum.c
184     type_desc.c
185     type_descio.c
186     typedef.c
187     typelint.c
188     units.c
189     universal.c
190     value_type.c
191     visitinst.c
192     visitlink.c
193     vlist.c
194     vlistio.c
195     watchpt.c
196     watchptio.c
197     when.c
198     when_io.c
199     when_util.c
200     ;
201    
202     SEARCH on $(ASC_COMPILER_SOURCES) = $(ASC_COMPILER_DIR) ;
203    
204     #----------------------------------------------------------------------
205     # rounded.c needs a special define
206     #----------------------------------------------------------------------
207     CCFLAGS on <base!generic>rounded$(SUFOBJ) += -DSLOPPY ;
208    
209     #----------------------------------------------------------------------
210     # ascParse.c & ascParse.h
211     #
212     # ascParse implements the Ascend grammar. It is generated by
213     # yacc with modification (e.g. by sed) to change the default
214     # 'yy' prefixes to 'zz_'. If yacc and sed are available in
215     # the build environment (i.e. $(YACC) and $(SED) are non-null
216     # in jam), ascParse.c and ascParse.h are generated using these
217     # tools. If not, copies of pre-generated files are used instead.
218     #----------------------------------------------------------------------
219    
220     # ascParse.c needs a special define
221     CCFLAGS on <base!generic>ascParse$(SUFOBJ) += -DYY_USE_CONST ;
222    
223     rule make_ascParse
224     {
225     if $(YACC) && $(SED)
226     {
227     Echo Generating ascParse from $(YACC) and $(SED) ;
228     DEPENDS $(ascParse_c) $(ascParse_h) : $(ascParse_y) ;
229     Yacc1 $(ascParse_c) $(ascParse_h) : $(ascParse_y) ;
230     YaccMv $(ascParse_c) $(ascParse_h) : $(ascParse_y) ;
231     yy_to_zz_c $(ascParse_c) : $(ascParse_y) ;
232     yy_to_zz_h $(ascParse_h) : $(ascParse_y) ;
233     }
234     else
235     { Echo Copying ascParse.* from ascParse.*.no.yacc ;
236     File $(ascParse_c) : ascParse.c.no.yacc ;
237     File $(ascParse_h) : ascParse.h.no.yacc ;
238     }
239    
240     # make the header dependent
241     INCLUDES $(ascParse_c) : $(ascParse_h) ;
242    
243     Clean clean : $(ascParse_c) $(ascParse_h) ;
244     }
245    
246     actions yy_to_zz_c
247     {
248     $(SED) -e "/#ifndef YYSTYPE/,/#endif/d" -e "/^#line /d" -e "s\yy\zz_\g" -e "s\YY\ZZ_\g" $(1) > tempfile.tmp
249     $(MV) tempfile.tmp $(1)
250     }
251    
252     actions yy_to_zz_h
253     {
254     $(SED) -e "s\yy\zz_\g" -e "s\YY\ZZ_\g" $(1) > tempfile.tmp
255     $(MV) tempfile.tmp $(1)
256     }
257    
258     ascParse_c = [ FGristSourceFiles ascParse.c ] ;
259     ascParse_h = [ FGristSourceFiles ascParse.h ] ;
260     ascParse_y = ascParse.y ;
261    
262     LOCATE on $(ascParse_c) = $(ASC_COMPILER_DIR) ;
263     LOCATE on $(ascParse_h) = $(ASC_COMPILER_DIR) ;
264     LOCATE on $(ascParse_y) = $(ASC_COMPILER_DIR) ;
265    
266     make_ascParse ;
267    
268     #----------------------------------------------------------------------
269     # scanner.c
270     #
271     # scanner.c implements the Ascend lexical analyzer. It is
272     # generated by lex/flex if available in the build environment
273     # (i.e. $(LEX) is non-null in jam). If lex/flex is not available,
274     # the a copy of a pre-generated file is used instead.
275     #----------------------------------------------------------------------
276    
277     # scanner.c needs a special define (Watcom requires the '=""'. )
278     CCFLAGS on <base!generic>scanner$(SUFOBJ) += -DYY_USE_CONST="" ;
279    
280     scanner_c = [ FGristSourceFiles scanner.c ] ;
281     scanner_h = scanner.h ;
282     scanner_l = scanner.l ;
283 johnpye 385 # LEXOPTS on $(scanner_c) = -Pzz_ ; --- NOT REQUIRED, CHANGED scanner.l --JP
284 jds 129
285     LOCATE on $(scanner_c) = $(ASC_COMPILER_DIR) ;
286     LOCATE on $(scanner_h) = $(ASC_COMPILER_DIR) ;
287     LOCATE on $(scanner_l) = $(ASC_COMPILER_DIR) ;
288    
289     LEX_or_copy $(scanner_c) : $(scanner_l) : scanner_c_no_flex : $(scanner_h) ;
290    
291     #----------------------------------------------------------------------
292     # Build the compiler library
293     #----------------------------------------------------------------------
294     LOCATE_TARGET = $(BUILD_DIR)$(SLASH)compiler ;
295     SEARCH_SOURCE = $(ASC_COMPILER_DIR) ;
296    
297     Library $(ASC_COMPILER_LIBROOT) : $(ASC_COMPILER_SOURCES) ;
298 jds 216 # MakeLocate $(ASC_COMPILER_LIB) : $(BUILD_DIR) ;
299 jds 129
300     DEPENDS libs : $(ASC_COMPILER_LIB) ;
301    
302     # Main $(ASC_COMPILER_LIBROOT)$(SUFSHR) : $(ASC_COMPILER_SOURCES) ;
303     # MakeLocate $(ASC_COMPILER_LIB)$(SUFSHR) : $(BUILD_DIR) ;
304     }
305    
306     #=========================================================================
307     # General module
308     #=========================================================================
309     if $(BUILD_GENERAL)
310     {
311     ASC_GENERAL_SOURCES =
312     dstring.c
313     hashpjw.c
314     list.c
315     listio.c
316     pool.c
317     pretty.c
318     stack.c
319     table.c
320     tm_time.c
321     ;
322    
323     LOCATE_TARGET = $(BUILD_DIR)$(SLASH)general ;
324     SEARCH_SOURCE = $(ASC_GENERAL_DIR) ;
325    
326     Library $(ASC_GENERAL_LIBROOT) : $(ASC_GENERAL_SOURCES) ;
327 jds 216 # MakeLocate $(ASC_GENERAL_LIB) : $(BUILD_DIR) ;
328 jds 129
329     DEPENDS libs : $(ASC_GENERAL_LIB) ;
330     }
331    
332     #=========================================================================
333     # Solver module
334     #=========================================================================
335     if $(BUILD_SOLVER)
336     {
337     ASC_SOLVER_SOURCES =
338     analyze.c
339     bnd.c
340     bndman.c
341     calc.c
342     cond_config.c
343     conditional.c
344     conopt.c
345     discrete.c
346     linsol.c
347     linsolqr.c
348     linutils.c
349     logrel.c
350     logrelman.c
351     model_reorder.c
352     mps.c
353     mtx_basic.c
354     mtx_linal.c
355     mtx_perms.c
356     mtx_query.c
357     mtx_reorder.c
358     mtx_use_only.c
359     rel.c
360     relman.c
361     slv.c
362     slv0.c
363     slv1.c
364     slv2.c
365     slv3.c
366     slv6.c
367     slv7.c
368     slv8.c
369     slv9.c
370     slv9a.c
371     slvDOF.c
372     slv_common.c
373     slv_interface.c
374     slv_stdcalls.c
375     system.c
376     var.c
377     ;
378    
379     LOCATE_TARGET = $(BUILD_DIR)$(SLASH)solver ;
380     SEARCH_SOURCE = $(ASC_SOLVER_DIR) ;
381    
382     Library $(ASC_SOLVER_LIBROOT) : $(ASC_SOLVER_SOURCES) ;
383 jds 216 # MakeLocate $(ASC_SOLVER_LIB) : $(BUILD_DIR) ;
384 jds 129 ObjectCcFlags $(ASC_SOLVER_SOURCES) : $(SOLVER_DEFS) ;
385    
386     # TODO: remove when Tcl/Tk interface decoupled from base library
387     ObjectHdrs slv6.c slv_interface.c : $(ASC_INTERFACE_ROOT) ;
388    
389     DEPENDS libs : $(ASC_SOLVER_LIB) ;
390     }
391    
392     #=========================================================================
393     # Utilities module
394     #=========================================================================
395     if $(BUILD_UTILITIES)
396     {
397     ASC_UTILITIES_SOURCES =
398     ascDynaLoad.c
399     ascEnvVar.c
400     ascMalloc.c
401     ascPanic.c
402     ascPrint.c
403     error.c
404     ascSignal.c
405     mem.c
406     readln.c
407     set.c
408     ;
409    
410     LOCATE_TARGET = $(BUILD_DIR)$(SLASH)utilities ;
411     SEARCH_SOURCE = $(ASC_UTILITIES_DIR) ;
412    
413     Library $(ASC_UTILITIES_LIBROOT) : $(ASC_UTILITIES_SOURCES) ;
414 jds 216 # MakeLocate $(ASC_UTILITIES_LIB) : $(BUILD_DIR) ;
415 jds 129
416     # TODO: remove when Tcl/Tk decoupled from base library
417     ObjectHdrs ascPrint.c : $(TK_HDRS) ;
418    
419     DEPENDS libs : $(ASC_UTILITIES_LIB) ;
420     }
421    
422     #=========================================================================
423     # Packages module
424     #=========================================================================
425     if $(BUILD_PACKAGES)
426     {
427     ASC_PACKAGES_SOURCES =
428 jds 216 sensitivity.c
429 jds 129 ascFreeAllVars.c
430     ;
431    
432     LOCATE_TARGET = $(BUILD_DIR)$(SLASH)packages ;
433     SEARCH_SOURCE = $(ASC_PACKAGES_DIR) ;
434    
435     Library $(ASC_PACKAGES_LIBROOT) : $(ASC_PACKAGES_SOURCES) ;
436 jds 216 # MakeLocate $(ASC_PACKAGES_LIB) : $(BUILD_DIR) ;
437 jds 129
438     DEPENDS libs : $(ASC_PACKAGES_LIB) ;
439     }
440    
441     #======================================================================
442     # ASCEND base regression test
443     #======================================================================
444    
445     TEST_PROG = test_ascend_base ;
446    
447     # set location for target, source, and temporary files
448     LOCATE_TARGET = $(BUILD_DIR)$(SLASH)test ;
449     SEARCH_SOURCE =
450     $(ASC_COMPILER_DIR)$(SLASH)test
451     $(ASC_GENERAL_DIR)$(SLASH)test
452     $(ASC_SOLVER_DIR)$(SLASH)test
453     $(ASC_UTILITIES_DIR)$(SLASH)test
454     $(ASC_PACKAGES_DIR)$(SLASH)test
455     $(srcdir)$(SLASH)test
456     $(srcdir)$(SLASH)..$(SLASH)..$(SLASH)test ;
457    
458     # extra symbolic targets for building test program
459     DEPENDS tests : $(TEST_PROG)$(SUFEXE) ;
460     NOTFILE tests ;
461    
462     TEST_SOURCES =
463     assertimpl.c
464     printutil.c
465     redirectStdStreams.c
466     test_ascend_base.c
467     test_register_general.c
468     test_dstring.c
469     test_hashpjw.c
470     test_list.c
471     test_listio.c
472     test_pool.c
473     test_pretty.c
474     test_stack.c
475     test_table.c
476     test_tm_time.c
477     test_register_utilities.c
478     test_ascDynaLoad.c
479     test_ascEnvVar.c
480     test_ascMalloc.c
481     test_ascPanic.c
482     test_ascPrint.c
483     test_ascSignal.c
484     test_mem.c
485     test_readln.c
486     test_set.c
487     test_register_solver.c
488     test_slv_common.c
489 jds 216 test_bnd.c
490 jds 129 # slv_test.c
491     # test_slv.c
492     ;
493    
494     CCFLAGS on <base!generic>$(TEST_SOURCES:S=$(SUFOBJ)) +=
495     -I..$(SLASH)..$(SLASH)test
496     -DALLOCATED_TESTS
497     ;
498    
499     Main $(TEST_PROG) : $(TEST_SOURCES) ;
500     MakeLocate $(TEST_PROG)$(SUFEXE) : $(BUILD_DIR) ;
501    
502     CUNIT_LIB_NAME = libcunit ;
503    
504     if $(NT)
505     {
506     if ($(BCCROOT) || ($(TOOLSET) = BORLANDC))
507     {
508     # need to fix Borland to include library location
509     LINKFLAGS on $(TEST_PROG)$(SUFEXE) += -L$(STDLIBPATH) -tWC ;
510     }
511     else if $(MINGW) || ( $(TOOLSET) = MINGW )
512     {
513     CUNIT_LIB_NAME = libcunit_mingw ;
514     }
515     }
516    
517     if $(UNIX) || $(OS) = LINUX
518     {
519     LINKFLAGS on $(TEST_PROG)$(SUFEXE) += $(DL_LIBS) $(MATH_LIBS) ;
520     }
521    
522     LinkLibraries $(TEST_PROG) :
523     $(ASC_BASE_LIBS)
524     $(ASC_BASE_LIBS)
525     $(TOP)$(SLASH)test$(SLASH)$(CUNIT_LIB_NAME)$(SUFLIB)
526     ;
527    
528     #LINKLIBS on $(TEST_PROG)$(SUFEXE) +=
529     # $(FOR_LIBS)
530     # $(PC_LIBS)
531     # $(MATH_LIBS)
532     # $(DL_LIBS)
533     # $(DEBUG_LIBS)
534     # ;
535    

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