| 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 |
|