Reputation: 15264
There are various MAKE programs to build software, notably (for the purpose of this post) Microsoft NMake, GNU Make and DMake ("Dennis Vadura's Make").
When building Perl modules via ExtUtils::MakeMaker, you can specify the MAKE program to use via the MAKE parameter.
perl Makefile.PL MAKE=nmake
perl Makefile.PL MAKE=dmake
perl Makefile.PL MAKE=make
It seems to me that on Windows, GNU Make (which is in GnuWin32, and is a nice fit with MinGW) is not supported, or not tested; however, there's no mention of this in the EU::MM manpage.
What leads me to believe this is that the Makefile for GNU Make that EU::MM generates simply doesn't work. It contains DIRFILESEP = \
(generated from sub init_DIRFILESEP
in MM_Win32.pm
), but the backslash is interpreted as line continuation character by GNU Make, so it cannot work as it generates bad pathnames:
make: *** No rule to make target `C:\Opt\Perl514.64\libConfig.pm',
needed by `makefile'. Stop.
If you fix this, then there's another error in a temporary batch file (I observed this with make -d
) which is subsequently deleted:
syntax error at -e line 1, near "'755')
"
Missing right curly or square bracket at -e line 1, at end of line
It's of course fine to just use NMake or DMake and don't bother with support for GNU Make, but in that case there should be a warning in the docs not to use GNU Make on Windows. (Which is, I think, the most popular Make program.)
So what is the state of GNU Make support on Windows by EU::MM? Is this a glitch or by design? Or am I missing the clue to make it work? What is it?
Upvotes: 2
Views: 1289
Reputation: 62099
NMake and DMake are the only supported programs to build Perl on Windows. Since EU::MM defaults to the same make
that was used to build Perl, few people have tried to use GNU Make with EU::MM on Windows, and I doubt that supporting that is a high priority for the EU::MM maintainers.
So I'd say EU::MM + GNU Make on Windows is unsupported by design. But it's more a lack of tuits than a deliberate rejection of GNU Make.
If you're interested in adding support for it, I expect they'd accept pull requests. The EU::MM repo is on GitHub.
Upvotes: 3