I give up.
I can't make the new pm_to_blib.ts work AND maintain backwards compatibility
with modules that add custom targets as dependencies to the old pm_to_blib
target. Either the old pm_to_blib target doesn't get run OR we have
a perpetual rebuild problem.
For those who don't remember, VMS wants a dot in every filename and will
helpfully put one there whether you want it or not. So "touch pm_to_blib"
actually produces "pm_to_blib." but its not smart enough to know that
when you check to see if "pm_to_blib" exists you should actually check
"pm_to_blib.". This means the pm_to_blib target will always rebuild.
So VMS used pm_to_blib.ts. I decided to remove this exception and just have
everyone use pm_to_blib.ts. This would have been fine except that a lot
of modules expect there to be a pm_to_blib target, too many to change.
Here's my attempt:
pm_to_blib :
$(NOECHO) $(NOOP)
pm_to_blib.ts : pm_to_blib $(TO_INST_PM)
...run pm_to_blib...
$(TOUCH) pm_to_blib.ts
So pm_to_blib gets run but since there's no pm_to_blib file make will always
want to rebuild pm_to_blib. Which means pm_to_blib.ts always gets rebuilt.
Which means everything which depends on that (lots of stuff) gets rebuilt.
I can't figure out a way to fix this. Nothing I've tried works. Either
things get rebuilt OR backwards compat with the pm_to_blib hack is broken.
Unless someone can think of something clever pm_to_blib.ts is going away
and its back to pm_to_blib with the VMS exception. It won't be as bad as
the original code, nothing should be duplicated, but I still don't like
exceptions.
Oh well.