/[ascend]/trunk/jam/Jamrules.in
ViewVC logotype

Annotation of /trunk/jam/Jamrules.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 141 - (hide annotations) (download)
Thu Dec 22 02:16:37 2005 UTC (19 years, 4 months ago) by johnpye
File size: 18689 byte(s)
Modifying build so that static libraries have same name under both Jam and Autotools builds.
1 jds 129 #
2     # General Jamrules support file for building Ascend4
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 is a template Jamrules file which supports building the
28     # Ascend libraries and executables. It contains general variable
29     # and rule definitions required for execution of jam in any of the
30     # source subdirectories.
31     #
32     # This file is part of the ASCEND jam build system rooted at ../../jam.
33     # See ../../jam/ReadMe.txt for more information.
34     #
35     # This file is customized on unix/linux by configure.
36     #
37     # On other platforms, users should copy/rename this file to 'Jamrules',
38     # then modify the settings manually for their particular system.
39     # Ascend cannot be built by jam unless the Jamrules file is present.
40     #
41     # User-customized Jamrules files should not be placed in version
42     # control. Only the Jamrules.in template should be versioned.
43     #
44     #---------------------------------------------------------------------------
45    
46     JAMRULES_ALREADY_SEEN = TRUE ;
47    
48     # The slash thing gets messed up sith SubDir somehow - make sure it's correct!
49     SLASH = / ;
50     if $(NT)
51     {
52     SLASH = \\ ;
53     }
54    
55     # Comment to compile with debugging & assertions enabled.
56     # Should be commented for regression tests to work properly.
57     #NODEBUG = 1 ;
58    
59     # Comment to compile without using the Epperly malloc debugger
60     # Should be UNcommented for regression tests to work properly.
61     DEBUG_MALLOC = -DMALLOC_DEBUG -DALLOCATED_TESTS ;
62    
63     #======================================================================
64     # PACKAGES
65     #
66     # Package settings for building Ascend.
67     # Packages are bits of compiled code that represent models, or solvers,
68     # or, in general, any bits of external code.
69     #
70     # Choose one of the following, comment out the others:
71     # STATIC_PACKAGES packages should be statically linked/loaded
72     # DYNAMIC_PACKAGES packages should be dynamically linked/loaded
73     # NO_PACKAGES no packages
74     #
75     # If STATIC_PACKAGES are chosen, also indicate the location of
76     # the packages in PACK_LIBS. Otherwise leave PACK_LIBS empty.
77     #======================================================================
78     #PACKAGE_FLAGS = -DSTATIC_PACKAGES ;
79     PACKAGE_FLAGS = -DDYNAMIC_PACKAGES ;
80     #PACKAGE_FLAGS = -DNO_PACKAGES ;
81    
82     PACK_LIBS = $(ASC_PACKAGES_LIB_PATH) ;
83     #PACK_LIBS = ;
84    
85     #======================================================================
86     # SIGNAL TRAPS
87     #
88     # If you want to be able to interrupt ASCEND with ctrl-C, then comment the
89     # following line. Uncomment the line for disabling of ctrl-C.
90     #
91     # Comment the line for regression testing to work properly.
92     #======================================================================
93     #CCFLAGS += -DNO_SIGINT_TRAP -DNO_SIGSEGV_TRAP ;
94    
95     #---------------------------------------------------------------------------
96    
97     # Tools required for complete build (comment out if not present).
98     # The build system works around their absence if necessary.
99     # Note that they are available for Windows, for example:
100     # http://sourceforge.net/projects/gnuWin32
101     SED = sed ;
102     YACC = yacc ;
103     YACCFLAGS = -d ;
104     YACCFILES = y.tab ;
105     LEX = flex ;
106    
107     #======================================================================
108     # General build options
109     #======================================================================
110     # Build directory - - will be qualified for compiler & build type
111     BUILD_DIR_ROOT = $(TOP)$(SLASH)jam ;
112    
113     # Comment for normal jam deletion of object files after building targets
114     KEEPOBJS = true ;
115    
116     #---------------------------------------------------------------------------
117     # platform-independent options
118     #---------------------------------------------------------------------------
119 johnpye 139
120 jds 129 # sizeof(void*) - change value if not a typical 32-bit system
121 johnpye 139 # the following are defined by Autoconf, so uncomment if you don't have that:
122     # SIZEOF_VOID_P = 4 ;
123     # CCFLAGS += -DSIZEOF_VOID_P=$(SIZEOF_VOID_P) ;
124 jds 129
125 johnpye 139 CCFLAGS += $(PACKAGE_FLAGS) ;
126    
127 jds 129 if $(NODEBUG)
128     {
129     CCFLAGS += -DNDEBUG ;
130     BUILD_SUBDIR = $(SLASH)Release ;
131     }
132     else
133     {
134     BUILD_SUBDIR = $(SLASH)Debug ;
135     }
136    
137     #---------------------------------------------------------------------------
138     # platform- & complier-specific options
139     #---------------------------------------------------------------------------
140     if $(NT)
141     {
142     # Windows-specific commands not done right in Jambase
143     RM = del ;
144     MV = move /Y ;
145    
146     # Windows-specific defines
147     CCFLAGS += -D_X86_=1 -DWIN32 -D_WIN32 -DASC_BUILD_LIB ;
148     SUFSHR = .dll ;
149    
150     if $(BCCROOT) || ( $(TOOLSET) = BORLANDC )
151     {
152     CC = bcc32 ;
153     C++ = $(CC) ;
154     FORTRAN = ;
155     CCFLAGS += -q -d -g0 -j0 -K -DMOD_ASCMALLOC ;
156     CCWARN = -w ;
157     if $(NODEBUG)
158     {
159     CCDEBUG = -v- -O2 ;
160     }
161     else
162     {
163     CCDEBUG = -v -y -Od ;
164     }
165     C++FLAGS = $(CCFLAGS) ;
166     LINKFLAGS += -L$(STDLIBPATH) ;
167     COFF2OMF = coff2omf ; # add location if not in path
168     BUILD_SUBDIR = $(BUILD_SUBDIR)$(SLASH)bcc ;
169     }
170    
171     else if $(MSVCNT) || ( $(TOOLSET) = VISUALC )
172     {
173     CC = cl /nologo ;
174     C++ = $(CC) ;
175     FORTRAN = ;
176     CCFLAGS += /Ze ;
177     CCWARN = /W4 ;
178     if $(NODEBUG)
179     {
180     CCDEBUG = /O2 ;
181     }
182     else
183     {
184     CCDEBUG = /Zi /Od ;
185     }
186     # Libraries are in different paths depending on VC version
187     LINKFLAGS += /LIBPATH:$(VISUALC)\\lib /LIBPATH:$(VISUALC)\\PlatformSDK\\lib\\ ;
188     LINKLIBS = advapi32.lib
189     libc.lib
190     oldnames.lib
191     gdi32.lib
192     user32.lib
193     kernel32.lib ;
194     BUILD_SUBDIR = $(BUILD_SUBDIR)$(SLASH)msvc ;
195     }
196    
197     else if $(MINGW) || ( $(TOOLSET) = MINGW )
198     {
199     CC = gcc ;
200     C++ = $(CC) ;
201    
202     CCFLAGS += -DHAVE_ERF=1 ;
203     # uncomment to select desired warning level and ansi-strictness
204     CCWARN += -Wall ;
205     CCWARN += -W ;
206     CCWARN += -pedantic ;
207     #CCWARN += -Wshadow ;
208     #CCWARN += -ansi ;
209     CCWARN += -std=c99 ;
210    
211     if $(NODEBUG)
212     {
213     CCDEBUG = -O3 ;
214     }
215     else
216     {
217     CCDEBUG = -g -O0 ;
218     CCFLAGS += -ggdb ;
219     }
220     C++FLAGS = $(CCFLAGS) ;
221    
222     FORTRAN = g77 ;
223     FORTRANFLAGS = -c -I4 -O ;
224     F77_LIBS = $(MINGW)$(SLASH)lib$(SLASH)libg2c.a ;
225    
226     BUILD_SUBDIR = $(BUILD_SUBDIR)$(SLASH)mingw ;
227     }
228    
229     else if $(WATCOM) || ( $(TOOLSET) = WATCOM )
230     {
231     CC = wcc386 ;
232     C++ = wpp386 ;
233     FORTRAN = wfc386 ;
234     FORTRANFLAGS = /NOER ;
235     CCFLAGS += /fr /dMOD_ASCMALLOC ;
236     CCWARN = /wx ;
237     if $(NODEBUG)
238     {
239     CCDEBUG = /ox ;
240     FORTRANFLAGS += /OX ;
241     }
242     else
243     {
244     CCDEBUG = /od /d2 ;
245     FORTRANFLAGS += /OD /D2 ;
246     }
247     BUILD_SUBDIR = $(BUILD_SUBDIR)$(SLASH)watcom ;
248     }
249     }
250    
251     else if $(UNIX) || $(OS) = LINUX
252     {
253     SUFSHR = @SHLIB_SUFFIX@ ;
254     CC = @CC@ ;
255     CPP = @CPP@ ;
256    
257     # DEFS = defines generated by configure
258     CCFLAGS += @DEFS@ ;
259     if $(CC) = gcc {
260    
261     if $(NODEBUG)
262     {
263     CCDEBUG = -O3 ;
264     }
265     else
266     {
267     CCDEBUG = -g -O0 ;
268     Echo "DEBUGGER SYMBOLS TURNED ON" ;
269     CCFLAGS += -ggdb ;
270     }
271    
272     # uncomment to select desired warning level and ansi-strictness
273     CCWARN += -Wall ;
274     CCWARN += -W ;
275 johnpye 139 #CCWARN += -pedantic ;
276 jds 129 #CCWARN += -Wshadow ;
277     #CCWARN += -ansi ;
278     CCWARN += -std=c99 ;
279     }
280    
281     # YACC
282     # On some old systems yacc writes some K&R extern definitions to
283     # the .c file that it generates. This has caused havoc on at least
284     # one system. Define your yacc here. For the Suns in particular
285     # /usr/lang/SC1.0/ansi/yacc was required. If you cannot find an ansi
286     # compatible yacc, delete the 'extern char *malloc(), realloc() definitions
287     # if generated at the top of your .c created from the .y file.
288     #
289     YACC = @YACC@ ;
290    
291     # LEX
292     # We require the flex lexer
293     #
294     LEX = @LEX@ ;
295     LEXLIB = @LEXLIB@ ;
296    
297     # Some compilers need to be told where to find the math libraries
298     # -L$(MATH_LIB_DIRS) -lieee -lm ;
299     MATH_LIBS = @MATH_LIBS@ ;
300    
301     # The interface and 1 file in the solver directory need to know where the
302     # include files and library for X11 are. If your C compiler doesn't know
303     # automatically where the X files are, or if they are in a non-standard
304     # place, set the following variables to point at them. These should be
305     # the same X files that Tk was built with on your system.
306     # Most systems do not need these variables to be set.
307     #
308     # The include and library files for X11:
309     X11_INCS = @X11_INCLUDES@ ;
310     X11_LIBS = @X11_LIBRARIES@ -lX11 @X11_EXTRA_LIBS@ @X11_RUN_PATH@ ;
311    
312     # Library file(s) to link against for dynamic loading to work
313     DL_LIBS = @DL_LIBS@ ;
314    
315     # FORTRAN options
316     # your f77 compiler
317     FORTRAN = @F77@ ;
318    
319     # Fortran compilation flags:
320     # These are used for making the ASCEND libraries based on FORTRAN codes.
321     # These should be set to get the best performance possible out of your
322     # f77 compiler without optimizing away functions that are not obviously
323     # called, as some compilers do by default.
324     #
325     F77FLAGS = -c -I4 -O ;
326     #
327     # F77LIBS is for the base f77 libraries. If you are linking no f77
328     # objects to ascend, it may be left undefined.
329     # Set F77LIBS appropriate for your machine and desired loader behavior.
330     # -L$(FOR_LIB_DIRS) -lg2c ;
331     #
332     F77_LIBS += @F77LIBS@ ;
333     #
334     # F77_OPTS are for miscellaneous options, such as -tmpdir=
335     #
336     F77_OPTS = ;
337     #
338     # All the flags to pass to F77
339     #
340     FORTRANFLAGS = $(F77FLAGS) $(F77_OPTS) ;
341    
342     BUILD_SUBDIR = $(BUILD_SUBDIR)$(SLASH)linux ;
343     }
344    
345     CCFLAGS += $(CCWARN) $(CCDEBUG) $(DEBUG_MALLOC) ;
346     C++FLAGS = $(CCFLAGS) ;
347     BUILD_DIR = $(BUILD_DIR_ROOT)$(BUILD_SUBDIR) ;
348    
349     #======================================================================
350     # Ascend base library names & paths
351     #======================================================================
352 johnpye 141 ASC_COMPILER_LIBROOT = libasccompiler ;
353     ASC_GENERAL_LIBROOT = libascgeneral ;
354     ASC_SOLVER_LIBROOT = libascsolver ;
355     ASC_UTILITIES_LIBROOT = libascutils ;
356     ASC_PACKAGES_LIBROOT = libascpackages ;
357 jds 129
358     ASC_COMPILER_LIB = $(ASC_COMPILER_LIBROOT)$(SUFLIB) ;
359     ASC_GENERAL_LIB = $(ASC_GENERAL_LIBROOT)$(SUFLIB) ;
360     ASC_SOLVER_LIB = $(ASC_SOLVER_LIBROOT)$(SUFLIB) ;
361     ASC_UTILITIES_LIB = $(ASC_UTILITIES_LIBROOT)$(SUFLIB) ;
362     ASC_PACKAGES_LIB = $(ASC_PACKAGES_LIBROOT)$(SUFLIB) ;
363    
364     ASC_BASE_LIBS =
365     $(ASC_COMPILER_LIB)
366     $(ASC_GENERAL_LIB)
367     $(ASC_PACKAGES_LIB)
368     $(ASC_SOLVER_LIB)
369     $(ASC_UTILITIES_LIB)
370     ;
371    
372     # Path to base library sources & libs from top-level jam directory
373     ASC_BASE_SOURCE_RELPATH = $(TOP)$(SLASH)base$(SLASH)generic ;
374     ASC_BASE_LIBS_RELPATH = $(BUILD_DIR)$(SLASH) ;
375    
376     #======================================================================
377     # SOLVERS / INTEGRATORS
378     #
379     # If you are linking to MINOS or other external solvers, the solver
380     # interface needs to know about it.
381     # Set the comment flags as appropriate on the following definitions.
382     # If the settings here do not match the libraries you link, you will
383     # almost certainly get runtime errors if not link errors.
384     #======================================================================
385    
386     #------------------------------------------------------------------------------
387     # Slv is the original ASCEND nonlinear solver. It is not currently supported.
388     # To build with slv:
389     # - add -DSTATIC_SLV or -DDYNAMIC_SLV (unsupported) to SOLVER_DEFS
390     #
391     #SOLVER_DEFS += -DSTATIC_SLV ;
392    
393     #------------------------------------------------------------------------------
394     # OptSQP is an interface to the Larry Biegler OPT code.
395     # It is not currently supported.
396     # To build with optsqp:
397     # - add -DSTATIC_OPTSQP or -DDYNAMIC_OPTSQP (unsupported) to SOLVER_DEFS
398     # - add location of OPT library to FOR_LIBS
399     #
400     if $(UNIX) || $(OS) = LINUX
401     {
402     # SOLVER_DEFS += @HAVE_OPTSQP@ ;
403     # FOR_LIBS += @OPTSQPLIB@ ;
404     }
405     else
406     {
407     #SOLVER_DEFS += -DSTATIC_OPTSQP ;
408     #FOR_LIBS += ;
409     }
410    
411     #------------------------------------------------------------------------------
412     # QRSlv is the current ASCEND nonlinear algebraic solver.
413     # To build with slv:
414     # - add -DSTATIC_SLV or -DDYNAMIC_SLV (unsupported) to SOLVER_DEFS
415     #
416     SOLVER_DEFS += -DSTATIC_QRSLV ;
417    
418     #------------------------------------------------------------------------------
419     # makeMPS is currently not supported.
420     # To build with mps:
421     # - add -DSTATIC_MPS or -DDYNAMIC_MPS (unsupported) to SOLVER_DEFS
422     #
423     #SOLVER_DEFS += -DSTATIC_MPS ;
424    
425     #------------------------------------------------------------------------------
426     # NGSlv is an experimental solver (Ken Tyner) that is not currently supported
427     # To build with NGSlv:
428     # - add -DSTATIC_NGSLV or -DDYNAMIC_NGSLV (unsupported) to SOLVER_DEFS
429     #
430     #SOLVER_DEFS += -DSTATIC_NGSLV ;
431    
432     #------------------------------------------------------------------------------
433     # CMSlv is the ASCEND conditional modeling solver (requires CONOPT).
434     # To build with cmslv:
435     # - add -DSTATIC_CMSLV or -DDYNAMIC_CMSLV (unsupported) to SOLVER_DEFS
436     #
437     #SOLVER_DEFS += -DSTATIC_CMSLV ;
438    
439     #------------------------------------------------------------------------------
440     # LRSlv is the ASCEND logical relation solver.
441     # To build with lrslv:
442     # - add -DSTATIC_LRSLV or -DDYNAMIC_LRSLV (unsupported) to SOLVER_DEFS
443     #
444     #SOLVER_DEFS += -DSTATIC_LRSLV ;
445    
446     #------------------------------------------------------------------------------
447     # MINOS is an interface to the MINOS solver. It is not currently functional.
448     # To build with minos:
449     # - add -DSTATIC_MINOS or -DDYNAMIC_MINOS (unsupported) to SOLVER_DEFS
450     # - add location of MINOS library to FOR_LIBS
451     if $(UNIX) || $(OS) = LINUX
452     {
453     # SOLVER_DEFS += @HAVE_MINOS@ ;
454     # FOR_LIBS += @MINOSLIB@ ;
455     }
456     else
457     {
458     #SOLVER_DEFS += -DSTATIC_MINOS ;
459     #FOR_LIBS += ;
460     }
461    
462     #------------------------------------------------------------------------------
463     # CONOPT is an interface to the proprietary CONOPT solver.
464     # To build with conopt:
465     # - add -DSTATIC_CONOPT or -DDYNAMIC_CONOPT (unsupported) to SOLVER_DEFS
466     # - add location of CONOPT library to FOR_LIBS
467     if $(UNIX) || $(OS) = LINUX
468     {
469     # SOLVER_DEFS += @HAVE_CONOPT@ ;
470     # FOR_LIBS += @CONOPTLIB@ ;
471     }
472     else
473     {
474     #SOLVER_DEFS += -DSTATIC_CONOPT ;
475     #FOR_LIBS += ;
476     }
477    
478     #------------------------------------------------------------------------------
479     # LSODE is an ODE solver. ASCEND is distributed with a standard lsode
480     # implementation that can be used if you have FORTRAN and don't have an
481     # optimized LSODE library.
482     # To build with lsode:
483     # - add -DSTATIC_LSOD or -DDYNAMIC_LSOD to SOLVER_DEFS
484     # - if you are providing an optimized lsode library:
485     # - add the location of the library to FOR_LIBS
486     # - set BUILD_LSODE = FALSE to disable building of the standard lsode
487     #
488     if $(UNIX) || $(OS) = LINUX
489     {
490     SOLVER_DEFS += @HAVE_LSOD@ ;
491     if ! @make_lsodlib@
492     {
493     BUILD_LSODE = FALSE ;
494     FOR_LIBS += @LSODLIB@ ;
495     }
496     }
497     else
498     {
499     SOLVER_DEFS += -DSTATIC_LSOD ;
500     FOR_LIBS += ;
501     # uncomment the following if you are providing an external lsode library
502     # BUILD_LSODE = FALSE ;
503     }
504     BUILD_LSODE ?= TRUE ;
505    
506     #======================================================================
507     # FORTRAN options - set to override configure defaults
508     #======================================================================
509     # Your FORTRAN compiler
510     #FORTRAN = g77 ;
511    
512     # Fortran compilation flags & options:
513     # These are used for making the ASCEND libraries based on FORTRAN codes.
514     # These should be set to get the best performance possible out of your
515     # f77 compiler without optimizing away functions that are not obviously
516     # called, as some compilers do by default.
517     #
518     #FORTRANFLAGS = -c -I4 -O -lg2c ;
519    
520     # F77LIBS is for the base f77 libraries. If you are linking no f77
521     # objects to ascend, it may be left undefined.
522     # Set F77LIBS appropriate for your machine and desired loader behavior.
523     #
524     #F77_LIBS = ;
525    
526     #======================================================================
527     # FORTRAN Support Libraries
528     #
529     # Point BLASLIB and LPAKLIB to machine-specific BLAS and LINPACK
530     # libraries (if you have them) to get the best speed out of ASCEND.
531     # Otherwise, generic versions will be built if FORTRAN is available.
532     #======================================================================
533    
534     # Name & path to the blas library
535     ASC_BLAS_LIBROOT = libblas ;
536     ASC_BLAS_LIB = $(ASC_BLAS_LIBROOT)$(SUFLIB) ;
537     BLASLIB_PATH = $(BUILD_DIR) ;
538     BLASLIB = $(BLASLIB_PATH)$(SLASH)$(ASC_BLAS_LIB) ;
539    
540     # Name & path to the linpack library
541     ASC_LINPACK_LIBROOT = liblpak ;
542     ASC_LINPACK_LIB = $(ASC_LINPACK_LIBROOT)$(SUFLIB) ;
543     LPAKLIB_PATH = $(BUILD_DIR) ;
544     LPAKLIB = $(LPAKLIB_PATH)$(SLASH)$(ASC_LINPACK_LIB) ;
545    
546     # Name & path to the internal lsode library.
547     if $(BUILD_LSODE) = TRUE
548     {
549     Echo Building internal LSODE library ;
550     ASC_LSOD_LIBROOT = liblsode ;
551     ASC_LSOD_LIB = $(ASC_LSOD_LIBROOT)$(SUFLIB) ;
552     LSODLIB_PATH = $(BUILD_DIR) ;
553     LSODLIB = $(LSODLIB_PATH)$(SLASH)$(ASC_LSOD_LIB) ;
554     }
555    
556     FOR_LIBS += $(LSODLIB) $(LPAKLIB) $(BLASLIB) $(F77_LIBS) ;
557    
558     #======================================================================
559     # Ascend-specific jam instructions
560     #======================================================================
561    
562     #----------------------------------------------------------------------
563     # LEX_or_copy
564     #
565     # Generates a c source file using the lexer defined by $(LEX),
566     # or by copying a specified file if $(LEX) is not defined.
567     # The following parameters are used:
568     #
569     # 1 source file to generate
570     # 2 lex/flex definition file
571     # 3 pre-generated source file to copy if $(LEX) is empty
572     # 4 header file associated with the source file, if any
573     #----------------------------------------------------------------------
574     rule LEX_or_copy
575     {
576     if $(LEX)
577     {
578     Echo Generating $(1) from $(LEX) ;
579     DEPENDS $(1) : $(2) ;
580     Lex_with_options $(1) : $(2) ;
581     }
582     else
583     {
584     Echo Copying $(1) from $(4) ;
585     File $(1) : $(3) ;
586     }
587    
588     # make the header dependent
589     if $(4)
590     {
591     INCLUDES $(1) : $(4) ;
592     }
593    
594     Clean clean : $(1) ;
595     }
596    
597     # run LEX using options specified in LEXOPTS
598     actions Lex_with_options
599     {
600     $(LEX) $(LEXOPTS) -o$(1) $(2)
601     }

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