1 |
|
2 |
BUILDING ASCEND WITH JAM |
3 |
------------------------ |
4 |
|
5 |
The files in this directory support building the ASCEND |
6 |
libraries and executables using the jam* build tool. |
7 |
|
8 |
The following files are included: |
9 |
|
10 |
Jamfile - top-level Jamfile for building ASCEND |
11 |
|
12 |
Jamrules.in - configuration & custom build rules used by Jamfiles |
13 |
|
14 |
Jambase - lightly customized version of standard build rules |
15 |
- primarily to shore up support for different compilers |
16 |
- optional in most cases |
17 |
|
18 |
Other subdirectories of the source trees contain additional files used |
19 |
to build ASCEND with jam: |
20 |
|
21 |
../base/generic/Jamfile - builds the ASCEND base libraries |
22 |
../blas/Jamfile - builds the blas library |
23 |
../linpack/Jamfile - builds the linpack library |
24 |
../lsod/Jamfile - builds the LSODE library |
25 |
../tcltk/generic/Jamfile - builds the tcltk executable |
26 |
../tcltk/generic/Jamrules_tcltk.in |
27 |
- configuration & custom build rules used |
28 |
build the tcltk executable |
29 |
|
30 |
|
31 |
The ASCEND jam build system intends to support building under Windows |
32 |
using the MinGW/gcc, MSVC, Borland, and Watcom** compilers, and under |
33 |
unix/linux using gcc/g77. With use of the included custom Jambase file, |
34 |
it should work with both the original and ftjam variants of jam. |
35 |
However, the system was developed primarily using ftjam. For best |
36 |
results using your default Jambase, use of ftjam is recommended and |
37 |
probably required. |
38 |
|
39 |
Automatic processing of Jamrules.in and ../tcltk/generic/Jamrules_tcltk.in |
40 |
by configure has now been implemented for systems supporting autoconf. |
41 |
Configure should automatically set most necessary build options, although |
42 |
some manual tweaking may still be necessary. The configure.in file is |
43 |
currently housed in ../base/unixAC213. This may be relocated to a more |
44 |
general location in the future. For now, it is necessary to run autoconf & |
45 |
configure from that directory, and then come back here to run jam. |
46 |
|
47 |
Building ASCEND requires compatible C and FORTRAN compilers. The official |
48 |
distributions are built using gcc, which provides both of these. |
49 |
|
50 |
|
51 |
Build Instructions - Linux/Unix |
52 |
------------------------------- |
53 |
|
54 |
You can build the Jam static libraries on Linux at present: |
55 |
|
56 |
1. jam must be installed and configured for the compiler in use. |
57 |
|
58 |
2. (a) If using autoconf, perform the following steps: |
59 |
|
60 |
- cd ../base/unixAC213 |
61 |
- autoconf (if necessary) |
62 |
- ./configure {using the usual options such as --enable-gcc, |
63 |
--with-tcl, --with-tk, --with-tktable} |
64 |
- cd ../../jam |
65 |
|
66 |
(b) If NOT using autoconf, manually copy the following files: |
67 |
|
68 |
- ./Jamrules.in --> ./Jamrules |
69 |
- ../tcltk/generic/Jamrules_tcltk.in --> |
70 |
../tcltk/generic/Jamrules_tcltk |
71 |
|
72 |
3. If necessary or desired, manually edit the generated ./Jamrules and |
73 |
../tcltk/generic/Jamrules_tcltk files to set configuration and local |
74 |
directory options. These settings are used by all the Jamfiles |
75 |
in the ASCEND source tree. |
76 |
|
77 |
4. Run jam to generate the desired output: |
78 |
|
79 |
jam all builds all libraries, executable, test suite |
80 |
jam libs builds base, blas, linpack, and lsode static libs |
81 |
jam ascend builds the ASCEND executable (will build libs as needed) |
82 |
jam test builds the test suite (will build libs as needed) |
83 |
jam blas builds the blas library |
84 |
jam linpack builds the linpack library |
85 |
jam lsode builds the lsode library |
86 |
|
87 |
NOTE - if there is a problem with jam setting basic options (e.g. CC = gcc), |
88 |
there are 2 possible workarounds. First, use the custom Jambase |
89 |
file (jam -f Jambase ...) which more reliably sets these basic |
90 |
compilation options. Or, explicitly specify the symbol in |
91 |
question (jam -sCC=gcc ...). We have not quite figured out how |
92 |
to make sure these get set when defined in other than Jambase. |
93 |
|
94 |
All built files will be placed in ./CONFIGTYPE/PLATFORM where |
95 |
CONFIGTYPE = Debug, Release |
96 |
PLATFORM = linux, mingw, bcc, msvc, mingw, watcom |
97 |
|
98 |
|
99 |
Installation of the executables, libraries and headers is under development. |
100 |
Installation should be assumed not to work at this time. |
101 |
|
102 |
|
103 |
Build Instructions - Windows |
104 |
---------------------------- |
105 |
|
106 |
Same as for Linux/Unix above, except you will need to follow 2b since |
107 |
the autotools are not generally available. |
108 |
|
109 |
|
110 |
Notes |
111 |
----- |
112 |
|
113 |
* jam is an open source, multi-platform build tool |
114 |
which is available in several flavors. These include |
115 |
the original (http://www.perforce.com) and ftjam |
116 |
(http://www.freetype.org/jam/index.html) variants, |
117 |
among others. |
118 |
|
119 |
** Currently, Open Watcom 1.3 can compile the ASCEND sources |
120 |
and build the libraries. However, it does not supply the required |
121 |
IEEE math functions isnan() and copysign(). At present, ASCEND does |
122 |
not supply these, so the user must provide these functions to use |
123 |
the libraries under Watcom. |
124 |
|
125 |
|
126 |
For more information on building ASCEND using JAM |
127 |
please see the Wiki document at |
128 |
https://pse.cheme.cmu.edu/wiki/view/Ascend/Jam |
129 |
|