The OOMMF pimake application compares file timestamps to determine which libraries and executables are out-of-date with respect to their source code, and then compiles and links those files as necessary to make everything up to date. The design and behavior of pimake is based on the Unix make program, but pimake is written in Tcl and so can run on any platform where Tcl is installed. Analogous to the Makefile or makefile of make, pimake uses makerules.tcl files that specify rules (actions) for creating or updating targets when the targets are older than their corresponding dependencies. The makerules.tcl files are Tcl scripts augmented by a handful of commands introduced by the pimake application.
The makerules.tcl files in the Oxs application area include rules to automatically compile and link all C++ code found under the oommf/app/oxs/local/ directory, so programmers who are developing Oxs_Ext extension modules generally do not need to be concerned with the intricacies of pimake beyond the instructions on running pimake presented in the OOMMF User’s Guide.
This chapter is intended instead for programmers who are debugging, extending, or creating new OOMMF modules outside of oommf/app/oxs/local/. The following sections provide an overview of the structure of makerules.tcl files and how they control the behavior of pimake. Further details may be gleaned from the pimake sources in oommf/app/pimake/.