| 20 |
There are numerous ways that one can specify compile--time package |
There are numerous ways that one can specify compile--time package |
| 21 |
inclusion or exclusion and they are all implemented by the |
inclusion or exclusion and they are all implemented by the |
| 22 |
\texttt{genmake2} program which was previously described in Section |
\texttt{genmake2} program which was previously described in Section |
| 23 |
\ref{sect:buildingCode}. The options are as follows: |
\ref{sec:buildingCode}. The options are as follows: |
| 24 |
\begin{enumerate} |
\begin{enumerate} |
| 25 |
\item Setting the \texttt{genamake2} options \texttt{--enable PKG} |
\item Setting the \texttt{genamake2} options \texttt{--enable PKG} |
| 26 |
and/or \texttt{--disable PKG} specifies inclusion or exclusion. |
and/or \texttt{--disable PKG} specifies inclusion or exclusion. |
| 244 |
\subsubsection{Adding a package to PARAMS.h and packages\_boot()} |
\subsubsection{Adding a package to PARAMS.h and packages\_boot()} |
| 245 |
|
|
| 246 |
An MITgcm package directory contains all the code needed for that package apart |
An MITgcm package directory contains all the code needed for that package apart |
| 247 |
from one variable for each package. This variable is the {\tt use\$\{Pkg\} } |
from one variable for each package. This variable is the {\it use\$\{Pkg\} } |
| 248 |
flag. This flag, which is of type logical, {\bf must} be declared in the |
flag. This flag, which is of type logical, {\bf must} be declared in the |
| 249 |
shared header file {\it PARAMS.h} in the {\it PARM\_PACKAGES} block. This |
shared header file {\it PARAMS.h} in the {\it PARM\_PACKAGES} block. This |
| 250 |
convention is used to support a single runtime control file {\it data.pkg} |
convention is used to support a single runtime control file {\it data.pkg} |
| 252 |
flag controlling the runtime use of a package. This routine needs to be able to |
flag controlling the runtime use of a package. This routine needs to be able to |
| 253 |
read the flags for packages that were not built at compile time. Therefore |
read the flags for packages that were not built at compile time. Therefore |
| 254 |
when adding a new package, in addition to creating the per-package directory |
when adding a new package, in addition to creating the per-package directory |
| 255 |
in the {\it pkg/} subdirectory a developer should add a {\tt use\$\{Pkg\} } |
in the {\it pkg/} subdirectory a developer should add a {\it use\$\{Pkg\} } |
| 256 |
flag to {\it PARAMS.h} and a {\tt use\$\{Pkg\} } entry to the |
flag to {\it PARAMS.h} and a {\it use\$\{Pkg\} } entry to the |
| 257 |
{\it packages\_boot()} {\it PACKAGES} namelist. |
{\it packages\_boot()} {\it PACKAGES} namelist. |
| 258 |
The only other package specific code that should appear outside the individual |
The only other package specific code that should appear outside the individual |
| 259 |
package directory are calls to the specific package API. |
package directory are calls to the specific package API. |