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.

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.