Hi:

 

I am writing to you in regard to a bug/feature in MakeMaker.

 

I'm using this version of MakeMaker:

6.42_01 Revision 41145

on WinXP

as installed with ActiveState perl v 5.1.10.1002

 

I am having a problem wherein MakeMaker does not correctly recognize the
version of the Microsoft C++ compiler that I'm using.  This leads
MakeMaker not to emit the call to the Microsoft Manifest Tool, mt.exe,
which would embed the DLL manifest in the dll.

 

The problem is in MM_Win32.pm @337

      if ($Config{ivsize} == 4 && $Config{cc} eq 'cl' and
$Config{ccversion} =~ /^(\d+)/ and $1 >= 14) 

    {

        push(@m,

          q{

      mt -nologo -manifest [EMAIL PROTECTED] -outputresource:$@;2 && del
[EMAIL PROTECTED]);

      }

    }

    push @m, '

      $(CHMOD) $(PERM_RWX) $@

 

 

$Config{ccversion} is returning the version of the compiler that my
perl.exe was built with, which for this ActiveState was v12.**.  But,
I'm compiling my module with v14 (VS 2005.NET), which requires the
embedded manifest.

 

I've tried a number of things in my Makefile to get the correct compiler
version number into $Config, including:

if ($Config{ccname} eq 'cl')

{

  print STDERR "confirming CL version\n";

  foreach (qx{$Config{ccname} /? 2>&1})

  {

    if (/Microsoft \(R\) \d\d-bit C\/C\+\+ Optimizing Compiler Version
((?:\d\.){2}\d+)/)

    {

      print STDERR "match: $1\n";

      my $obj = tied %Config::Config;

      $obj->{ccversion} = $1;

      $ExtUtils::MakeMaker::Config{ccversion} = $1;

      last;

    }

  }

}

 

But to no avail.  The mt.exe statement never gets written into the
generated makefile.  Short of making myself a one-off copy of
MM_Win32.pm, do you have any suggestions?

 

Thank you.

 

Mike Slass  |  Software Developer 

F5 Networks 

  P 206.272.6338 

 F 206.272.5856

www.f5.com <http://www.f5.com>  

                
 

 

 

<<image001.gif>>

Reply via email to