There was 55 lines of rather repetitive code with calls to 6 compiler passes.
They have been replaced with 19 lines that call the 6 compiler passes
plus 26 lines of helper functions.
* The gf command line options -preproc=mkPresent and -preproc=mkMinimal now
refer to internal preprocessors equivalent to lib/src/mkPresent
and lib/src/mkMinimal.
* The temporary file _gf_preproc.tmp is not created when running an
internal preprocessor, unless there is an error, since errors messages
refer to locations in the preprocessed file. (Possibly allowing the rgl
build to be parallelized.)
* After running an external preprocessor, the temporary file is deleted,
unless there was an error.
* (Bug fix) Before, when running more than one preprocessor, the same file name
would be used for both input and output, e.g.,
mkPresent _gf_preproc.tmp > _gf_preproc.tmp
which would result in an empty file being processed. Now, the input and
output files will always be different.