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.