Mailing List Archive

RFC: remove Makefile.mk
Our Windows build system currently has three Makefiles:

- Makefile - for nmake and Visual C++
- GNUMakefile - for gmake and MinGW or Visual C++
- Makefile.mk - for dmake and MinGW or Visual C++

Visual C++ ships with nmake and MinGW ships with gmake. dmake needs to
be obtained separately.

GNUMakefile is much newer than the rest, it was introduced in Perl 5.24.
It was created by kmx, who is the current Strawberry Perl maintainer,
with an intention of replacing dmake with gmake in Strawberry Perl. The
transition took place in their 5.26.0 release. At some point, ActivePerl
has switched to gmake too. That means no major Perl distribution is
currently using dmake.

There is nothing you can do with Makefile.mk that you can't do with
GNUMakefile. Their uses completely overlap. I'm not aware of any valid
reasons to prefer Makefile.mk. To be fair, shortly after GNUMakefile
introduction, not all CPAN distributions were compatibile with gmake,
but those issues are (almost?) completely resolved now.

The reason why I want to remove Makefile.mk is to make maintenance of
the Windows port easier. Almost every change to any of the three
Makefiles has to be replicated in the other two. This is a significant
maintenance burden, especially when those changes are more complicated.
In case of Makefile.mk it is hard to justify the effort considering how
redundant it is.

My proposal is to remove Makefile.mk immediately without a deprecation
cycle.

Any comments are welcome. Is anyone on the list still using dmake? If so,
why?

Tomasz
Re: RFC: remove Makefile.mk [ In reply to ]
On 1/21/21 6:55 AM, Tomasz Konojacki wrote:
> My proposal is to remove Makefile.mk immediately without a deprecation
> cycle.

+1 from someone who doesn't have much knowledge about this
Re: RFC: remove Makefile.mk [ In reply to ]
On Thu, 21 Jan 2021 at 15:58, Karl Williamson <public@khwilliamson.com> wrote:
>
> On 1/21/21 6:55 AM, Tomasz Konojacki wrote:
> > My proposal is to remove Makefile.mk immediately without a deprecation
> > cycle.
>
> +1 from someone who doesn't have much knowledge about this

+1 from me too. And after looking through
https://github.com/Perl/perl5/issues/14341 it appears to have been the
long-forgotten plan to ditch makefile.mk in 5.24 anyway!
Re: RFC: remove Makefile.mk [ In reply to ]
On Thu, Jan 21, 2021 at 2:55 PM Tomasz Konojacki <me@xenu.pl> wrote:
>
> Our Windows build system currently has three Makefiles:
>
> - Makefile - for nmake and Visual C++
> - GNUMakefile - for gmake and MinGW or Visual C++
> - Makefile.mk - for dmake and MinGW or Visual C++
>
> Visual C++ ships with nmake and MinGW ships with gmake. dmake needs to
> be obtained separately.
>
> GNUMakefile is much newer than the rest, it was introduced in Perl 5.24.
> It was created by kmx, who is the current Strawberry Perl maintainer,
> with an intention of replacing dmake with gmake in Strawberry Perl. The
> transition took place in their 5.26.0 release. At some point, ActivePerl
> has switched to gmake too. That means no major Perl distribution is
> currently using dmake.
>
> There is nothing you can do with Makefile.mk that you can't do with
> GNUMakefile. Their uses completely overlap. I'm not aware of any valid
> reasons to prefer Makefile.mk. To be fair, shortly after GNUMakefile
> introduction, not all CPAN distributions were compatibile with gmake,
> but those issues are (almost?) completely resolved now.
>
> The reason why I want to remove Makefile.mk is to make maintenance of
> the Windows port easier. Almost every change to any of the three
> Makefiles has to be replicated in the other two. This is a significant
> maintenance burden, especially when those changes are more complicated.
> In case of Makefile.mk it is hard to justify the effort considering how
> redundant it is.
>
> My proposal is to remove Makefile.mk immediately without a deprecation
> cycle.
>
> Any comments are welcome. Is anyone on the list still using dmake? If so,
> why?

+1 from me too. I'm sure it made sense in the 90s (was gmake even
ported to Windows then?) but it doesn't make sense anymore today.

Leon