On Sun, Sep 04, 2011 at 12:54:57AM +0300, Octavian Rasnita wrote:
> I have tried to compile the trunk version with VC6, but it gave the
> following error on the perl Build phase:
>
> Generating script 'src\CFCBindAliases.ccs'
> cl -nologo -c @"src\CFCBindAliases.ccs" -Fo"src\CFCBindAliases.obj"
> "src\CFCBindAliases.c"
> CFCBindAliases.c
> src\CFCBindAliases.c(129) : error C2374: 'i' : redefinition; multiple
> initialization
> src\CFCBindAliases.c(120) : see declaration of 'i'
Interesting. This is actually a Perl problem, in that it is Perl code which
has failed to supply the correct compiler flags. Here's the relevant section
from trunk/clownfish/buildlib/Clownfish/Build.pm:
# Compile as C++ under MSVC. Turn off stupid warnings, too.
if ( $self->config('cc') =~ /^cl\b/ ) {
$extra_ccflags .= '/TP -D_CRT_SECURE_NO_WARNINGS ';
}
Had that worked as expected, the compiler command would have looked like this:
cl -nologo /TP -D_CRT_SECURE_NO_WARNINGS -c @"src\CFCBindAliases.ccs"
-Fo"src\CFCBindAliases.obj" "src\CFCBindAliases.c"
I don't understand why it didn't work. Before asking you to try trunk, I
verified that it worked under ActivePerl in conjunction with MSVC 2010; MSVC
2010 is just as incapable of compiling that source file as Visual Studio 6
without C++ mode enabled.
I wonder what $self->config('cc') returns in your install[1]. Try inserting the
following line in that file...
# Compile as C++ under MSVC. Turn off stupid warnings, too.
+ warn "'" . $self->config('cc') . "'";
if ( $self->config('cc') =~ /^cl\b/ ) {
$extra_ccflags .= '/TP -D_CRT_SECURE_NO_WARNINGS ';
}
... and then try the following.
cd lucytrunk\clownfish
perl Build.PL
What do you get?
Or maybe the problem is the communication between trunk/perl/Build.PL and
trunk/clownfish/Build.PL? Are you doing anything special to spec Visual Studio
6, which we're not passing successfully to the secondary Build.PL?
Marvin Humphrey
[1] Technically, "$self" is the wrong variable name here; it's being invoked as
a package method. However, that does not seem to cause problems on my
systems.