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