Fix Borland problem with quoted pre-processor macros in response files
Randy W. Sims [Thu, 6 Apr 2006 22:33:04 +0000 (18:33 -0400)]
This should clear up the errors from Module/Build/t/ppm.t and
Module/Build/t/xs.t in the Borland smokes.

Subject: Re: Smoke [5.9.4] 27656 FAIL(F) MSWin32 WinXP/.Net SP2 (x86/2 cpu)
From: "Randy W. Sims" <ml-perl@thepierianspring.org>
Message-ID: <4435CF60.1000707@thepierianspring.org>

See the thread here for details:
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-04/msg00027.html

p4raw-id: //depot/perl@28597

lib/ExtUtils/CBuilder/Platform/Windows.pm

index 1ec89ee..b889a5e 100644 (file)
@@ -9,7 +9,7 @@ use File::Spec;
 use ExtUtils::CBuilder::Base;
 
 use vars qw($VERSION @ISA);
-$VERSION = '0.12';
+$VERSION = '0.12_01';
 @ISA = qw(ExtUtils::CBuilder::Base);
 
 sub new {
@@ -437,11 +437,16 @@ sub write_compiler_script {
   open( SCRIPT, ">$script" )
     or die( "Could not create script '$script': $!" );
 
+  # XXX Borland "response files" seem to be unable to accept macro
+  # definitions containing quoted strings. Escaping strings with
+  # backslash doesn't work, and any level of quotes are stripped. The
+  # result is is a floating point number in the source file where a
+  # string is expected. So we leave the macros on the command line.
   print SCRIPT join( "\n",
     map { ref $_ ? @{$_} : $_ }
     grep defined,
     delete(
-      @spec{ qw(includes cflags optimize defines perlinc) } )
+      @spec{ qw(includes cflags optimize perlinc) } )
   );
 
   close SCRIPT;