On Sat May 10 20:22:53 2008, coke wrote:
> This make file isn't preprocessed like the standard root.in: it
> assumes perl is in your path, and redefines the list of OPSFILES.

Let me pose some questions:

1.  Who actually uses this program?  Under what circumstances?

2.  Must exist this program as a makefile?  After all, all it does is to
provide a list of arguments[1] to a specialized use of one of the build
tools programs:

perl tools/build/ops2pm.pl --renum $(OPS_FILES)

Peeking in to tools/build/ops2pm.pl, we see that the '--renum' option is
one of those edge cases where a program invoked by 'make' is used
outside the normal context of 'make':

my $self = Parrot::Ops2pm::Utils->new(
    {
        argv    => [EMAIL PROTECTED],
        nolines => $flagref->{nolines},
        renum   => $flagref->{renum},
        moddir  => "lib/Parrot/OpLib",
        module  => "core.pm",
        inc_dir => "include/parrot/oplib",
        inc_f   => "ops.h",
        script  => "tools/build/ops2pm.pl",
    }
);

$self->prepare_ops();

if ( $flagref->{renum} ) {
    $self->renum_op_map_file();
    exit 0;
}

And if we further peer into Parrot::Ops2pm::Utils, we see that
renum_op_map_file() is described as follows:

"When F<tools/build/ops2pm.pl> is called with the C<--renum> option, this
method is triggered, after which F<ops2pm.pl> exits.  Consequently, this
is the only Parrot::Ops2pm::Utils method which is I<not> a stepping
stone on the path to building F<lib/Parrot/OpLib/core.pm>."

So both tools/dev/ops_renum.mak and ops2pm.pl --renum seem to be Parrot
developers tools -- not intrinsic components of 'make'.  My
recommendation -- once we have answered question (1) above -- would be:

(a) pull renum_op_map_file() out of Parrot::Ops2pm::Utils and into a
subclass -- the better to emphasize that it's not part of the regular
'make' process;

(b) pull the '--renum' option out of tools/build/ops2pm.pl;

(c) replace tools/dev/ops_renum.mak with a pure Perl program which does
what 'tools/build/ops2pm.pl --renum' does now; and

(d) only at this point determine whether we need to gussy this up as a
'make' target.

Thank you very much.
kid51


[1] 'make' invokes 'ops2pm.pl' once:

/usr/local/bin/perl tools/build/ops2pm.pl src/ops/core.ops
src/ops/bit.ops src/ops/cmp.ops src/ops/debug.ops
src/ops/experimental.ops src/ops/io.ops src/ops/math.ops
src/ops/object.ops src/ops/pic.ops src/ops/pmc.ops src/ops/set.ops
src/ops/stm.ops src/ops/string.ops src/ops/sys.ops src/ops/var.ops

core.ops is called first, then all the other .ops files in that
directory *except* 'obscure.ops' are called in alphabetical order.

tools/dev/ops_renum.mak calls the same list *with the exception of*
'experimental.ops.'  I am not clear on why 'make' and
'tools/dev/ops_renum.mak' call different lists of '.ops' files -- and
I'm not sure why we retain a file called 'obscure.ops' in the same
directory as all our other essential '.ops' files.

Reply via email to