On Fri, Dec 17, 2004 at 03:53:32AM -0500, Randy W. Sims wrote:
Macro expressions specified on the command line allow the macro value to be redefined within the makefile only if the macro is defined using the '+=' and '+:=' operators. Other operators will define a macro that cannot be further modified.
BTW, I did test earlier today with nmake on 5.6 and 5.8 and found no problems. The above problem only affects dmake.
This can't be right. Could you try something simple like
dmake test TEST_VERBOSE=1 dmake.exe: makefile: line 807: Warning -- Macro `TEST_VERBOSE' cannot be redefined ...
Manually changing the generated F<Makefile> to use the C<MACRO *= LINE>
form of assignment fixes the problem. But that seems like a PITA to have to specify this alternative syntax for all possible commandline macros. How is MakeMaker different now than before? I scanned the dmake docs, hoping to find some type of directive to change the behavior, but I don't see anything.
Further, note that the latest trunk tarball fails F<basic.t> test #74, but only with dmake. As before, all tests pass with nmake. Note that this is the same perl; I just changed Config.pm to switch dmake/nmake.
ok 73 - init_dirscan skipped distdir # Failed test (t/basic.t at line 271) # got: '65280' # expected: '0' # C:\devel\perl\bin\perl.exe -e "chdir 'Liar'; system 'x:\opt\dmake\dmake.exe -S clean' if -f 'Makefile';" <snip extraneous output> not ok 74 - realclean ok 75
