Am 01.12.2014 um 17:59 schrieb Leon Timmermans <faw...@gmail.com>:

> On Mon, Dec 1, 2014 at 11:48 AM, Jens Rehsack <rehs...@gmail.com> wrote:
> Hi,
> 
> I run into some trouble integrating some right linker flags to a Makefile.PL 
> - insane warnings from EU::MM is an offenseless artifact, deleted flags is 
> next escalation.
> 
> I don't want discuss about utility and futility of the misplaced parameter 
> approvals (EU::MM is a Makefile generator, not a configuration tester), I 
> want to discuss a reasonable approach to pass check results into Makefile 
> without doing the mistakes of Module::Install again.
> 
> My naive approach was passing EXTRALIBS and LDLOADLIBS instead of LIBS 
> (https://github.com/i-scream/Unix-Statgrab/blob/master/Makefile.PL#L102-105) 
> - I grabbed the idea from Net-SSLeay ...
> But Dave objects (https://github.com/autarch/File-LibMagic/pull/3) and beside 
> being always right I have to concede a point to Dave regarding "warnings 
> confuse end-users".
> 
> I think you can work around the warning using a CONFIGURE callback:
> 
> WriteMakefile(
>     ....
>    CONFIGURE => sub {
>         return {
>             EXTRALIBS => ...,
>             LDLOADLIBS => ...,
>         }
>     },
> );

Seems reasonable - but as you know in not to distant future, they shall
also override CC, CCLD, ... (using ExtUtils::Builder or alike, instead
of plain cc).

Does the return hash of this callback overrides all EU::MM constants?
Is there a minimum version of EU::MM for this CONFIGURE callback?

> I played a bit with MakeMaker extensions hacking 
> https://metacpan.org/pod/File::ConfigDir::Install and mohawk pointed me to 
> https://metacpan.org/pod/ExtUtils::MakeMaker::BigHelper ...
> I know, all those MM extensions (ShareDir::Install ...) will not play well 
> together.
> 
> What should be a reasonable way out - having a pluggable API for all those 
> extensions?
> 
> They can be made to cooperate by not exporting the postambles to MY::, but 
> instead glue them together something like this:
> 
> my @extensions = (...);
> load($_) for @extensions
> my @methods = map { my $method = $extension . "::postamble" } @extensions;
> sub MY::postamble {
>     my ($makemaker, %args) = @_;
>     return join "\n\n", map { $makemaker->$_(%args) } @methods;
> }

For some reason File::ConfigDir::Install doesn't just override postamble,
it modifies the "install_*_*" instructions ...
...BigHelper (mohawk pointed to that) does something similar.

Cheers
-- 
Jens Rehsack
rehs...@gmail.com

Reply via email to