in reply to Re^14: supporting quads on 32 bit Perl
in thread supporting quads on 32 bit Perl

C:\Documents and Settings\Owner\Desktop\cpan libs\Math-Int64-0.19>nmak +e clean & perl makefile.pl & nmake install Microsoft (R) Program Maintenance Utility Version 7.10.3077 Copyright (C) Microsoft Corporation. All rights reserved. C:\perl512\bin\perl.exe -MExtUtils::Command -e "rm_f" -- *.li +b core co re.[0-9] core.[0-9][0-9] Int64.bso blib\arch\auto\Math\Int64\extralib +s.ld pm_t o_blib.ts core.[0-9][0-9][0-9][0-9] Int64.x Int64.bs perl.exe tmon.o +ut blib\a rch\auto\Math\Int64\extralibs.all *.obj pm_to_blib blibdirs.ts core. +[0-9][0-9] [0-9][0-9][0-9] *perl.core core.*perl.*.? Makefile.aperl perl Int64. +def core. [0-9][0-9][0-9] mon.out libInt64.def perlmain.c perl.exe so_location +s Int64.c Int64.exp C:\perl512\bin\perl.exe -MExtUtils::Command -e "rm_rf" -- *.p +db blib C:\perl512\bin\perl.exe -MExtUtils::Command -e "mv" -- Makefil +e Makefile .old > NUL Using NV backend Checking if your kit is complete... Looks good Writing Makefile for Math::Int64 Microsoft (R) Program Maintenance Utility Version 7.10.3077 Copyright (C) Microsoft Corporation. All rights reserved. cp lib/Math/Int64.pm blib\lib\Math\Int64.pm cp lib/Math/Int64/die_on_overflow.pm blib\lib\Math\Int64\die_on_overfl +ow.pm cp lib/Math/Int64/native_if_available.pm blib\lib\Math\Int64\native_if +_available .pm C:\perl512\bin\perl.exe C:\perl512\lib\ExtUtils\xsubpp -typem +ap C:\perl 512\lib\ExtUtils\typemap Int64.xs > Int64.xsc && C:\perl512\bin\perl. +exe -MExtU tils::Command -e "mv" -- Int64.xsc Int64.c cl -c -I. -nologo -GF -W3 -Od -MD -Zi -DDEBUGGING -DWIN32 -D +_CONSOLE - DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_S +YS -DUSE_P ERLIO -Od -MD -Zi -DDEBUGGING -DVERSION=\"0.19\" -DXS_VERSION=\"0. +19\" "-IC :\perl512\lib\CORE" -DINT64_BACKEND_NV Int64.c Int64.c Int64.xs(253) : warning C4244: 'initializing' : conversion from 'NV' t +o 'int64_t ', possible loss of data Int64.xs(259) : warning C4244: 'return' : conversion from 'NV' to 'int +64_t', pos sible loss of data Int64.xs(339) : warning C4244: 'initializing' : conversion from 'NV' t +o 'uint64_ t', possible loss of data Int64.xs(345) : warning C4244: 'return' : conversion from 'NV' to 'uin +t64_t', po ssible loss of data Int64.xs(355) : warning C4244: 'initializing' : conversion from 'int64 +_t' to 'IV ', possible loss of data Int64.xs(360) : warning C4244: 'initializing' : conversion from 'int64 +_t' to 'UV ', possible loss of data Int64.xs(364) : warning C4244: 'function' : conversion from 'int64_t' +to 'const NV', possible loss of data Int64.xs(370) : warning C4244: 'initializing' : conversion from 'uint6 +4_t' to 'U V', possible loss of data Int64.xs(373) : warning C4244: 'function' : conversion from 'uint64_t' + to 'const NV', possible loss of data Int64.xs(385) : warning C4244: 'initializing' : conversion from 'uint6 +4_t' to 'c har', possible loss of data Int64.xs(502) : warning C4244: 'function' : conversion from 'int64_t' +to 'const IV', possible loss of data Int64.xs(526) : warning C4244: 'function' : conversion from 'uint64_t' + to 'const UV', possible loss of data Int64.xs(545) : warning C4244: '=' : conversion from 'int64_t' to 'cha +r', possib le loss of data Int64.xs(563) : warning C4244: '=' : conversion from 'uint64_t' to 'ch +ar', possi ble loss of data Int64.xs(679) : warning C4244: 'function' : conversion from 'uint64_t' + to 'const IV', possible loss of data Int64.xs(690) : warning C4244: 'function' : conversion from 'uint64_t' + to 'const UV', possible loss of data Int64.xs(700) : warning C4244: 'function' : conversion from 'uint64_t' + to 'const IV', possible loss of data Int64.xs(710) : warning C4244: 'function' : conversion from 'uint64_t' + to 'const UV', possible loss of data Int64.xs(722) : warning C4244: 'function' : conversion from 'int64_t' +to 'const IV', possible loss of data Int64.xs(733) : warning C4244: 'function' : conversion from 'uint64_t' + to 'const IV', possible loss of data Int64.c(1262) : warning C4101: 'rev' : unreferenced local variable Int64.c(1261) : warning C4101: 'other' : unreferenced local variable Int64.c(1290) : warning C4101: 'rev' : unreferenced local variable Int64.c(1289) : warning C4101: 'other' : unreferenced local variable Int64.c(1679) : warning C4101: 'rev' : unreferenced local variable Int64.c(1706) : warning C4101: 'rev' : unreferenced local variable Int64.c(1938) : warning C4101: 'rev' : unreferenced local variable Int64.c(1937) : warning C4101: 'other' : unreferenced local variable Int64.c(1963) : warning C4101: 'rev' : unreferenced local variable Int64.c(1962) : warning C4101: 'other' : unreferenced local variable Int64.c(1988) : warning C4101: 'rev' : unreferenced local variable Int64.c(1987) : warning C4101: 'other' : unreferenced local variable Int64.c(2013) : warning C4101: 'rev' : unreferenced local variable Int64.c(2012) : warning C4101: 'other' : unreferenced local variable Int64.c(2038) : warning C4101: 'rev' : unreferenced local variable Int64.c(2037) : warning C4101: 'other' : unreferenced local variable Int64.c(2063) : warning C4101: 'rev' : unreferenced local variable Int64.c(2062) : warning C4101: 'other' : unreferenced local variable Int64.c(2088) : warning C4101: 'rev' : unreferenced local variable Int64.c(2087) : warning C4101: 'other' : unreferenced local variable Int64.c(2113) : warning C4101: 'rev' : unreferenced local variable Int64.c(2112) : warning C4101: 'other' : unreferenced local variable Int64.c(2140) : warning C4101: 'rev' : unreferenced local variable Int64.c(2139) : warning C4101: 'other' : unreferenced local variable Int64.c(2505) : warning C4101: 'rev' : unreferenced local variable Int64.c(2532) : warning C4101: 'rev' : unreferenced local variable Int64.c(2764) : warning C4101: 'rev' : unreferenced local variable Int64.c(2763) : warning C4101: 'other' : unreferenced local variable Int64.c(2789) : warning C4101: 'rev' : unreferenced local variable Int64.c(2788) : warning C4101: 'other' : unreferenced local variable Int64.c(2814) : warning C4101: 'rev' : unreferenced local variable Int64.c(2813) : warning C4101: 'other' : unreferenced local variable Int64.c(2839) : warning C4101: 'rev' : unreferenced local variable Int64.c(2838) : warning C4101: 'other' : unreferenced local variable Int64.c(2864) : warning C4101: 'rev' : unreferenced local variable Int64.c(2863) : warning C4101: 'other' : unreferenced local variable Int64.c(2889) : warning C4101: 'rev' : unreferenced local variable Int64.c(2888) : warning C4101: 'other' : unreferenced local variable Int64.c(2914) : warning C4101: 'rev' : unreferenced local variable Int64.c(2913) : warning C4101: 'other' : unreferenced local variable c:\documents and settings\owner\desktop\cpan libs\math-int64-0.19\int6 +4.xs(167) : warning C4715: 'SvSI64' : not all control paths return a value c:\documents and settings\owner\desktop\cpan libs\math-int64-0.19\int6 +4.xs(177) : warning C4715: 'SvSU64' : not all control paths return a value Running Mkbootstrap for Math::Int64 () C:\perl512\bin\perl.exe -MExtUtils::Command -e "chmod" -- 644 +Int64.bs C:\perl512\bin\perl.exe -MExtUtils::Mksymlists -e "Mksymlists +('NAME'=>\ "Math::Int64\", 'DLBASE' => 'Int64', 'DL_FUNCS' => { }, 'FUNCLIST' => + [], 'IMPO RTS' => { }, 'DL_VARS' => []);" link -out:blib\arch\auto\Math\Int64\Int64.dll -dll -nologo -no +defaultlib -debug -libpath:"c:\perl512\lib\CORE" -machine:x86 Int64.obj C:\p +erl512\lib \CORE\perl512.lib oldnames.lib kernel32.lib user32.lib gdi32.lib winsp +ool.lib c omdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32. +lib uuid.l ib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib c +omctl32.li b msvcrt.lib -def:Int64.def Creating library blib\arch\auto\Math\Int64\Int64.lib and object bli +b\arch\aut o\Math\Int64\Int64.exp if exist blib\arch\auto\Math\Int64\Int64.dll.manifest mt -nolo +go -manife st blib\arch\auto\Math\Int64\Int64.dll.manifest -outputresource:blib\a +rch\auto\M ath\Int64\Int64.dll;2 if exist blib\arch\auto\Math\Int64\Int64.dll.manifest del blib +\arch\auto \Math\Int64\Int64.dll.manifest C:\perl512\bin\perl.exe -MExtUtils::Command -e "chmod" -- 755 +blib\arch\ auto\Math\Int64\Int64.dll C:\perl512\bin\perl.exe -MExtUtils::Command -e "cp" -- Int64.b +s blib\arc h\auto\Math\Int64\Int64.bs C:\perl512\bin\perl.exe -MExtUtils::Command -e "chmod" -- 644 +blib\arch\ auto\Math\Int64\Int64.bs Files found in blib\arch: installing files in blib\lib into architectu +re depende nt library tree Installing C:\perl512\site\lib\auto\Math\Int64\Int64.dll Installing C:\perl512\site\lib\auto\Math\Int64\Int64.exp Installing C:\perl512\site\lib\auto\Math\Int64\Int64.ilk Installing C:\perl512\site\lib\auto\Math\Int64\Int64.lib Installing C:\perl512\site\lib\auto\Math\Int64\Int64.pdb Appending installation info to c:\perl512\lib/perllocal.pod C:\Documents and Settings\Owner\Desktop\cpan libs\Math-Int64-0.19>nmak +e test Microsoft (R) Program Maintenance Utility Version 7.10.3077 Copyright (C) Microsoft Corporation. All rights reserved. C:\perl512\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_h +arness(0, 'blib\lib', 'blib\arch')" t/*.t t/as_int64.t ............ ok t/die_on_overflow.t ..... ok t/Math-Int64-Native.t ... ok t/Math-Int64.t .......... ok t/Math-UInt64-Native.t .. ok t/Math-UInt64.t ......... ok t/pods.t ................ skipped: Only the author needs to check that + POD docs are right All tests successful. Files=7, Tests=253, 1 wallclock secs ( 0.09 usr + 0.05 sys = 0.14 C +PU) Result: PASS C:\Documents and Settings\Owner\Desktop\cpan libs\Math-Int64-0.19>
Got latest git version. Everything looks good now. My Visual Studio 2003 is about the same age as ActiveState's build system, so if I can build it, AS should be able to also.

Replies are listed 'Best First'.
Re^16: supporting quads on 32 bit Perl
by salva (Canon) on Jun 03, 2012 at 18:33 UTC
    ok, I have uploaded version 0.20. Let's see how it does at the ActiveState PPM builders this time.

    In any case, if you find any other problem with the module, don't hesitate to report it.

      I got a strange croak from Int64. I'm not sure who to blame. I'm leaning on Test::More is to blame.
      use strict; use warnings; use Math::Int64 qw( hex_to_int64 ); use Test::More; my $normalnum = 0; is($normalnum, hex_to_int64("0x8000200030004000"), "some test");
      sub _unoverload { my $self = shift; my $type = shift; $self->_try(sub { require overload; }, die_on_fail => 1); foreach my $thing (@_) { if( $self->_is_object($$thing) ) { if( my $string_meth = overload::Method( $$thing, $type ) ) + { >>>>>>>>>>>>>>> $$thing = $$thing->$string_meth(); } } } return; }
      which was called from
      sub _unoverload_str { my $self = shift; return $self->_unoverload( q[""], @_ ); }
      which was called from Test::Builder::cmp_ok which was called from Test::Builder::is_eq which was called from Test::More::is. When I put a breakpoint right before Int64's _string XSUB is called in _unoverload, the command line says
      # Failed test 'some test' not ok 1 - some test # at C:\Documents and Settings\Owner\Desktop\n13.pl line 7.
      If I run the whole script the output is
      C:\Documents and Settings\Owner\Desktop>perl n13.pl not ok 1 - some test # Failed test 'some test' # at n13.pl line 7. Usage: Math::Int64::_string(self, other, rev) at C:/perl512/lib/Test/B +uilder.pm line 876. # Tests were run but no plan was declared and done_testing() was not s +een. C:\Documents and Settings\Owner\Desktop>
      In XS, in Math::Int64::_string, from Test::Builder::_unoverload, items variable was 1. That will cause the croak obviously.
        Yes, this is an error in Test::More calling some overload method directly with an incorrect number of arguments.

        I have changed Math::Int64 to support it anyway and also solved a problem with MS compiler not being able to handle uint64 to double conversions.

        Version 0.22 is now available from CPAN.