Platform-Independent Make: pimake
Keywords: userguide

Next: Problem Specification File Formats Up: Command Line Utilities Previous: OOMMF and Process ID

##
Platform-Independent Make: pimake

The application pimake is similar in operation to the Unix utility program `make`, but it is written entirely in Tcl so that it will run anywhere Tcl is installed. Like `make`, `pimake` controls the building of one file, the target, from other files. Just as `make` is controlled by rules in files named `Makefile` or `makefile`, `pimake` is controlled by rules in files named `makerules.tcl`.

Launching
The pimake launch command is:

    tclsh oommf.tcl pimake [standard options] \
       [-d] [-i] [-k] [-out file] [target]

where

`-d`
  Print verbose information about dependencies.
`-i`
  Normally an error halts operation. When `-i` is specified, ignore errors and try to continue updating all dependencies of target.
`-k`
  Normally an error halts operation. When `-k` is specified, and an error is encountered, stop processing dependencies which depend on the error, but continue updating other dependencies of target.
`-out file`
  Write output to named file instead of to the standard output.
`target`
  The file to build. May also be (and usually is) a symbolic target name. See below for standard symbolic targets. By default, the first target in `makerules.tcl` is built.

There are several targets which may be used as arguments to pimake to achieve different tasks. Each target builds in the current directory and all subdirectories. The standard targets are:

`upgrade`
  Used immediately after unpacking a distribution, it removes any files which were part of a previous release, but are not part of the unpacked distribution.
`all`
  Creates all files created by the `configure` target (see below). Compiles and links all the executables and libraries. Constructs all index files.
`configure`
  Creates subdirectories with the same name as the platform type. Constructs a `ocport.h` file which includes C++ header information specific to the platform.
`objclean`
  Removes the intermediate object files created by the compile and link steps. Leaves working executables in place. Leaves OOMMF in the state of its distribution with pre-compiled executables.
`clean`
  Removes the files removed by the `objclean` target. Also removes the executables and libraries created by the `all` target. Leaves the files generated by the `configure` target.
`distclean`
  Removes the files removed by the `clean` target. Also removes all files and directories generated by `configure` target. Leaves only the files which are part of the source code distribution.
`maintainer-clean`
  Remove all files which can possibly be generated from other files. The generation might require specialized developer tools. This target is not recommended for end-users, but may be helpful for developers.
`help`
  Print a summary of the standard targets.

OOMMF Documentation Team
September 29, 2018