One version of one common make utility on VMS (MMK 3.9-9) has trouble
inferring that Encode$(OBJ_EXT) depends on Encode.c, apparently thrown
off by a different, explicit, dependency in the custom postamble. This
human had trouble making the same inference, thrown off by the comment
that Encode$(OBJ_EXT) does not depend on .c files. The easiest fix seems
to be to make the dependency on Encode.c explicit in both the code and
the comment, and the attached patch does just that. Abe Timmerman has
tested this on both VMS and Mac OS X.
I've also written the author of MMK with a small reproducer, but MMK
3.9-9 has been out in the wild for some months now, so it's impossible
to guarantee people won't encounter it.
--- ext/Encode/Makefile.PL;-0 Thu Apr 24 15:24:20 2003
+++ ext/Encode/Makefile.PL Fri Oct 15 23:57:21 2004
@@ -83,8 +83,10 @@
{
my $self = shift;
my $dir = $self->catdir($self->curdir,'ucm');
- my $str = "# Encode\$(OBJ_EXT) depends on .h and .exh files not .c files - but
all written by enc2xs\n";
+ my $str = "# Encode\$(OBJ_EXT) does not depend on .c files directly\n";
+ $str .= "# (except Encode.c), but on .h and .exh files written by enc2xs\n";
$str .= $^O eq 'MacOS' ? 'Encode.c.{$(MACPERL_BUILD_EXT_STATIC)}.o :' :
'Encode$(OBJ_EXT) :';
+ $str .= ' Encode.c';
foreach my $table (keys %tables)
{
$str .= " $table.c";