Hi,

Can confirm that svn source compiles on MSWin32 for following combinations, no problems appear with Wx::Demo, and code seems to package OK with PDK and Wx::Perl::Packager 0.23. Wx::ActiveX 0.15 and Wx::TreeListCtrl 0.09 also compile OK. Used to build PPMs on a 64 bit Vista machine, the results from mingw-w64 (32 bit) appear to run fine on a clean Windows 2000 (sp4) environment - so I am very very happy.

ActivePerl 5.8  64bit, mingw-w64
ActivePerl 5.10 64bit, mingw-w64
ActivePerl 5.8  32bit, mingw-w64 32 bit toolchain
ActivePerl 5.10 32bit, mingw-w64 32 bit toolchain
ActivePerl 5.8  32bit, MinGW
ActivePerl 5.10 32bit, MinGW

For mingw-w64 I needed ExtUtils::FakeConfig and hacked up the attached Config_w64. Please note - this really is hacked up from a combination of Config_m and the contents of Config_heavy in the ActivePerl distributions rather than produced with any real knowledge. So it might bite back yet.

I tried a 64 bit Microsoft Compiler but it choked straight away (detail below). I'm sure its easy to fix but all my tuits for 64 bit PPMs are spent for now.

Regards

Mark

Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

        if not exist vc_mswudll_amd64 mkdir vc_mswudll_amd64
        if not exist ..\..\lib\vc_amd64_dll mkdir ..\..\lib\vc_amd64_dll
if not exist ..\..\lib\vc_amd64_dll\mswu mkdir ..\..\lib\vc_amd64_dll\mswu if not exist ..\..\lib\vc_amd64_dll\mswu\wx mkdir ..\..\lib\vc_amd64_dll\mswu\wx if not exist ..\..\lib\vc_amd64_dll\mswu\wx\setup.h copy ..\..\include\wx\msw\setup.h ..\..\lib\vc_amd64_dll\mswu\wx\setup.h
        1 file(s) copied.
if not exist ..\..\lib\vc_amd64_dll\mswu\wx\msw mkdir ..\..\lib\vc_amd64_dll\mswu\wx\msw cl /EP /nologo "..\..\include\wx\msw\genrcdefs.h" > "..\..\lib\vc_amd64_dll\mswu\wx\msw\rcdefs.h"
genrcdefs.h
cl /c /nologo /TC /Fovc_mswudll_amd64\wxregex_regcomp.obj /MD /DWIN32 /Fd..\..\lib\vc_amd64_dll\wxregexu.pdb /O2 /I..\..\includ e /I..\..\lib\vc_amd64_dll\mswu /D__WXMSW__ /D_UNICODE ..\..\src\regex\regcomp.c
regcomp.c
..\..\include\wx/defs.h(846) : error C2061: syntax error : identifier 'wxIntPtr'
..\..\include\wx/defs.h(846) : error C2059: syntax error : ';'
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Bin\amd64\cl.EXE"' : return code '0x2'
Stop.
system: nmake -f makefile.vc all UNICODE=1 MSLU=0 BUILD=release SHARED=1 USE_OPENGL=1 USE_GDIPLUS=1 USE_QA=1: 512 at
 inc/My/Build/Win32.pm line 263


On 15/03/2010 11:12, Mattia Barbon via RT wrote:
Mon Mar 15 07:12:14 2010: Request 53584 was acted upon.
Transaction: Correspondence added by MBARBON
        Queue: Alien-wxWidgets
      Subject: Another 64-bit troubles with mingw-w64 compiler
    Broken in: (no value)
     Severity: (no value)
        Owner: Nobody
   Requestors: k...@cpan.org
       Status: open
  Ticket<URL: https://rt.cpan.org/Ticket/Display.html?id=53584>


[sorry if you get this twice]

Il Ven 12 Mar 2010 04:28:34, MBARBON ha scritto:
Il Ven 12 Mar 2010 03:39:07, k...@volny.cz ha scritto:
OK, but maybe it is worth at least to show users the warning about
expected troubles (note that I have changed the default just for MS
Windows 64bit + gcc).

   I looked at the failures in the 2.8 branch (2.8.11-to-be) and they
seem fixable with some selective backport.  I will try to fix them in
the weekend.

   I added a patch set to A::wx and committed a one-line patch to
wxPerl and it seems to work (a quick tour of the Demo shows no obvious
errors).  YMMV.

Regards,
Mattia

package Config_w64;

require ExtUtils::FakeConfig;

my $cc_p = ( ExtUtils::FakeConfig::find_program( 'gcc' ) )[0];
$cc_p || die "Unable to find compiler 'gcc'";
$cc_p =~ s/[\\\/]bin[\\\/]?$//;

my $dmake = ( ExtUtils::FakeConfig::find_program( 'dmake' ) )[1];
$dmake || die "Unable to find dmake";

my $CONFIGPERL = $Config::Config{prefix};

my($ccflags, $libs, $perllibs, $libperl, $archlib);

my $arch = $Config::Config{archname};
my $bperllib = $Config::Config{libperl};

$ccflags = ' -DNDEBUG -O2 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT 
-DCONSERVATIVE -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC 
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX';
$libs    = ' -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 
-ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr 
-lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 -lmsvcrt';
$perllibs = $libs;

if( ($bperllib eq 'perl58.lib') && ($arch eq 'MSWin32-x64-multi-thread' ) ){
    # perl 5.8 x64
    $ccflags  .= ' -DWIN64 -DNO_HASH_SEED';
    $libperl  = 'libperl58.a';
    $archlib  = 'x86_64-w64-mingw32';
    
} elsif( ($bperllib eq 'perl510.lib') && ($arch eq 'MSWin32-x64-multi-thread' ) 
) {
    # perl 5.10 x64
    $ccflags  .= ' -DWIN64';
    $libperl  = 'libperl510.a';
    $archlib  = 'x86_64-w64-mingw32';
    
}  elsif( ($bperllib eq 'perl58.lib') && ($arch eq 'MSWin32-x86-multi-thread' ) 
) {
    # perl 5.8 x86
   $ccflags  .= ' -DNO_HASH_SEED';
   $libperl  = 'libperl58.a';
   $archlib  = 'i686-w64-mingw32';
   
}  elsif( ($bperllib eq 'perl510.lib') && ($arch eq 'MSWin32-x86-multi-thread' 
) ) {
    # perl 5.10 x86
   $libperl  = 'libperl510.a';
   $archlib  = 'i686-w64-mingw32';
} else {
    die qq(Archname $arch and perllib $bperllib is not supported by Config_w64);
}

my %values = (
    cc          => 'gcc',
    ccname      => 'gcc',
    ccflags     => $ccflags,
    _a          => '.a',
    _o          => '.o',
    ar          => 'ar',
    cpp         => 'gcc -E',
    libpth      => qq(\"$cc_p\\lib\" \"$cc_p\\$archlib\\lib\"),
    cppminus    => '-',
    cpprun      => 'gcc -E',
    cppstdin    => 'gcc -E',
    ld          => 'g++',
    lddlflags   => qq(-s -mdll -L\"$CONFIGPERL\\lib\\CORE\"),
    ldflags     => qq(-s -L\"$CONFIGPERL\\lib\\CORE\"),
    lib_ext     => '.a',
    libc        => '-lmsvcrt',
    libperl     => $libperl,
    make        => $dmake,
    nm          => 'nm',
    obj_ext     => '.o',
    libs        => $libs,
    perllibs    => $perllibs,
    
);

eval 'use ExtUtils::FakeConfig %values';

1;

Reply via email to