Performs a make according to spec and using argv as
command-line arguments selecting one or more targets.

Each element of the spec list is a target. A target element
that starts with a list of strings is the same as multiple elements,
one for each string. The second element of each target is a list of
dependencies, and the third element (if any) of a target is the
optional command thunk.

To make a target, make/proc is first called recursively on
each of the target’s dependencies. If a target is not in spec
and it exists as a file, then the target is considered made. If a
target’s modification date is older than any of its dependencies’
modification dates, the corresponding command thunk is called. If the
dependency has no command thunk then no action is taken; such a target
is useful for triggering the make of other targets (i.e., the
dependencies).

While running a command thunk, make/proc catches exceptions
and wraps them in an exn:fail:make structure, the raises the
resulting structure.}