bulk88 has asked for the wisdom of the Perl Monks concerning the following question:
below is file "./lib/MM123.pm"use 5.010000; use ExtUtils::MakeMaker; use Config qw(%Config); # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. %param = ( NAME => 'MM123', VERSION_FROM => 'lib/MM123.pm', # finds $VERSION PREREQ_PM => {}, # e.g., Module::Name => 1.1 ($] >= 5.005 ? ## Add these new keywords supported since 5.005 (ABSTRACT_FROM => 'lib/MM123.pm', # retrieve abstract from modu +le AUTHOR => 'A. U. Thor <a.u.thor@a.galaxy.far.far.away>' +) : ()), # e.g., '-lm' DEFINE => '', # e.g., '-DHAVE_SOMETHING' INC => '-I.', # e.g., '-I. -I/usr/include/other' ); WriteMakefile(%param); WriteMakefile(%param); package MY; sub postamble { print "postamble hook worked\n"; return ' # POSTAMBLE WORKED '; }
command line outputpackage MM123; use strict; use warnings; require Exporter; our @ISA = qw( Exporter ); # Items to export into callers namespace by default. Note: do not expo +rt # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. # This allows declaration use MM123 ':all'; # If you do not need this, moving things directly into @EXPORT or @EXP +ORT_OK # will save memory. our %EXPORT_TAGS = ( 'all' => [ qw( ) ] ); our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); our @EXPORT = qw( ); our $VERSION = '0.01'; # Preloaded methods go here. 1;
Why am I runing WriteMakefile twice? I need to see the final version of certain macros (CCFLAGS, LINKTYPE, OPTIMIZE, etc). MM parameters can be set on the commandline to makefile.pl, in the hash given to WriteMakefile, or in $Config. The macros can also be overridden on the command line directly to the make tool, but I think that that is unsupportable (if you have an idea how to change dependency targets and other macros based on parsing existing macros set as env vars, cl options to nmake tell me). Certain MM macros are generated usually, and are almost never parameters (LINKTYPE). WriteMakefile returns a MM object, this can be looked inside for the final macro values. Then I can set up the MY package overloads to generate the correct makefile. The problem is the MY package overloads don't run on the 2nd run of WriteMakefile. I also tried running MM directly as "my $mm = MM->new({@_});", same problem. On the 2nd run, MY overloads are ignored.C:\pl\mmbug>perl makefile.pl postamble hook worked Writing Makefile for MM123 Writing Makefile for MM123 C:\pl\mmbug>
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: 2nd run of WriteMakefile ignores MY overloads
by syphilis (Archbishop) on Apr 05, 2012 at 02:46 UTC | |
by bulk88 (Priest) on Apr 05, 2012 at 03:20 UTC | |
by Anonymous Monk on Apr 05, 2012 at 03:54 UTC | |
by bulk88 (Priest) on Apr 05, 2012 at 06:02 UTC | |
by Anonymous Monk on Apr 05, 2012 at 06:51 UTC | |
|
Re: 2nd run of WriteMakefile ignores MY overloads
by Anonymous Monk on Apr 04, 2012 at 23:55 UTC |