Subject: | 00_ptr_cast.t failure on Windows x64 |
Hi,
On Windows Vista64, ActivePerl 5.10.0 (build 1004, x64), running 'nmake
test', the process hangs forever when it comes to building the test
executable (as the executable fails to build). Once we amend $cmd so
that the executable does build, we still get a failure with test 2:
#######################################
not ok 2 - STDERR empty after compiling
# Failed test 'STDERR empty after compiling'
# at t/local/00_ptr_cast.t line 28.
# got: 'cl : Command line warning D9035 : option 'o' has been
deprecated and will be removed in a future release
# '
# expected: ''
#######################################
This patch fixes both problems (portably, I believe):
#######################################
--- 00_ptr_cast.t_orig Sat May 9 09:51:39 2009
+++ 00_ptr_cast.t Sat May 9 10:31:59 2009
@@ -17,8 +17,12 @@
my $err = gensym();
my @extraargs;
-push(@extraargs, '/nologo') if $^O eq 'MSWin32' && $Config{cc} eq 'cl';
-my $cmd = "$Config{cc} -o $output $input " . join(' ', @extraargs);
+my $cmd;
+if($^O eq 'MSWin32' && $Config{cc} eq 'cl') {
+ push(@extraargs, '/nologo ' . $Config{libs});
+ $cmd = "$Config{cc} /Fe$output $input " . join(' ', @extraargs);
+}
+else {$cmd = "$Config{cc} -o $output $input " . join(' ', @extraargs)}
diag( "compiling test program with: $cmd" );
my $pid = open3(undef, $out, $err, $cmd);
waitpid $pid, 0;
#######################################
Note, however, that if, on Windows, the test executable fails to build
for any reason, then the mysterious hang may well reappear. Do we
really need to use open3() here ?
Cheers,
Rob